嘿,有人会帮助我这么好,因为我现在排除这个错误一个星期没有找到运气
在我编辑信息并更改信息并单击更新后,它给了我一个错误我试过括号括号没有运气
获取时出错(预期参数太少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
非常感谢任何帮助,提前致谢!!!
答案 0 :(得分:1)
您很聪明地在代码中包含此行:
Debug.Print strSql ' <- prints to Immediate window
现在,当您收到缺少的参数消息时,请转到立即窗口(您可以使用 Ctrl + g 去那里)并复制SQL语句。
然后在查询设计器中创建一个新的Access查询,切换到SQL视图,并粘贴您复制的文本。当您尝试运行该查询时,Access将显示一个参数输入框,其中包含其认为是参数的任何名称。
将该参数名称与数据源中的字段名称进行比较。通常会出现这种情况,因为查询包含拼写错误的字段名称。 UPDATE
的另一种可能性是您尝试更新的值之一是未加引号的文本。无论原因如何,该输入框中的参数名称都可以帮助您追踪它。如果您需要进一步的帮助,请向我们展示UPDATE
声明中的实际文本。
答案 1 :(得分:1)
任何时候你将一个带有大量用户输入的长SQL语句“粘合在一起”,你就会面临
的挑战正确分隔字符串和日期,
在此类字段中转义分隔符(通常是文本字段内的引号),
将所有必需的逗号放在正确的位置
您可以使用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