1

嘿,有人会这么好心地帮助我,因为我现在解决这个错误一个星期发现没有运气

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

我得到错误(预期参数太少 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

任何帮助将不胜感激提前谢谢!!!

4

2 回答 2

1

您很聪明地将这一行包含在您的代码中:

Debug.Print strSql ' <- prints to Immediate window

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

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

将该参数名称与数据源中的字段名称进行比较。经常发生这种情况是因为查询包含拼写错误的字段名称。an 的另一种可能性UPDATE是您尝试更新的值之一是未引用的文本。不管是什么原因,该输入框中的参数名称应该可以帮助您找到它。UPDATE如果您需要进一步的帮助,请向我们展示该声明中的实际文本。

于 2013-05-26T18:44:39.063 回答
1

每当您将包含大量用户输入的长 SQL 语句“粘合在一起”时,您都会面临以下挑战:

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

  2. 在这些字段中转义分隔符(通常是文本字段中的引号),以及

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

您可以通过使用 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
于 2013-05-26T19:09:14.587 回答