如何将主窗体更新为子窗体

时间:2013-05-26 18:25:58

标签: ms-access ms-access-2007 access-vba

嘿,有人会帮助我这么好,因为我现在排除这个错误一个星期没有找到运气

在我编辑信息并更改信息并单击更新后,它给了我一个错误我试过括号括号没有运气

获取时出错(预期参数太少1.运行时错误'3061')

继承我的代码我认为我的代码中存在一个错误:

Private Sub cmdUpdate_Click()
Dim strSql As String
strSql = "UPDATE PlantTransaction " & _
"SET TransactionID=" & Me.txtTranID & _
",[Plant Number]='" & Me.txtPlantNo & "'" & _
",TransactionDate=#" & Me.txtTransDate & "#" & _
",Opening_Hours='" & Me.txtOpeningHRS & "'" & _
",Closing_Hours='" & Me.CloseHrs & "'" & _
",Fuel='" & Me.txtFuel & "'" & _
",[Fuel Cons Fuel/Hours]='" & Me.txtFuelConsFuelHr & "'" & _
",[Hour Meter Replaced]='" & Me.txtHrMtrRep & "'" & _
",Comments='" & Me.txtComments & "'" & _
",[Take on Hour]='" & Me.txtTOH & "'" & _
" WHERE TransactionID=" & Me.PlantTransactionQuery.Form.Recordset.Fields("Tr ansactionID")
Debug.Print strSql ' <- prints to Immediate window
CurrentDb.Execute strSql, dbFailOnError
cmdClear_Click
Me.PlantTransactionQuery.Form.Requery
End Sub

非常感谢任何帮助,提前致谢!!!

2 个答案:

答案 0 :(得分:1)

您很聪明地在代码中包含此行:

Debug.Print strSql ' <- prints to Immediate window

现在,当您收到缺少的参数消息时,请转到立即窗口(您可以使用 Ctrl + g 去那里)并复制SQL语句。

然后在查询设计器中创建一个新的Access查询,切换到SQL视图,并粘贴您复制的文本。当您尝试运行该查询时,Access将显示一个参数输入框,其中包含其认为是参数的任何名称。

将该参数名称与数据源中的字段名称进行比较。通常会出现这种情况,因为查询包含拼写错误的字段名称。 UPDATE的另一种可能性是您尝试更新的值之一是未加引号的文本。无论原因如何,该输入框中的参数名称都可以帮助您追踪它。如果您需要进一步的帮助,请向我们展示UPDATE声明中的实际文本。

答案 1 :(得分:1)

任何时候你将一个带有大量用户输入的长SQL语句“粘合在一起”,你就会面临

的挑战
  1. 正确分隔字符串和日期,

  2. 在此类字段中转义分隔符(通常是文本字段内的引号),

  3. 将所有必需的逗号放在正确的位置

  4. 您可以使用Recordset执行更新来避免这些烦恼:

    Dim rst As DAO.RecordSet
    Set rst = CurrentDb.OpenRecordset("PlantTransaction", dbOpenDynaset)
    rst.FindFirst "TransactionID=" & Me.PlantTransactionQuery.Form.Recordset.Fields("Tr ansactionID")
    If Not rst.NoMatch Then
        rst.Edit
        rst!TransactionID = Me.txtTranID
        rst![Plant Number] = Me.txtPlantNo
        rst!TransactionDate = Me.txtTransDate
        rst!Opening_Hours = Me.txtOpeningHRS
        rst!Closing_Hours = Me.CloseHrs
        rst!Fuel = Me.txtFuel
        rst![Fuel Cons Fuel/Hours] = Me.txtFuelConsFuelHr
        rst![Hour Meter Replaced] = Me.txtHrMtrRep
        rst!Comments = Me.txtComments
        rst![Take on Hour] = Me.txtTOH
        rst.Update
    End If
    rst.Close
    Set rst = Nothing