使用记录集作为WHERE sql字符串中的条件

时间:2019-02-28 11:54:52

标签: ms-access access-vba

我正在尝试构建一个sql字符串来更新表,其中表PosSupplierCode类似于子窗体中的记录集字段PosCode。

我收到“参数太少。预期为1”错误。

已经尝试了''()等的各种组合,但似乎无法正确执行> WHERE子句中的代码改编自另一个答案,但没有完成任务,并尝试了其他各种方法。

Sub Update_Records()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sSQL As String
Dim field

Set db = CurrentDb
Set rs = Forms!frmProcInvoice!subInvoice.Form.RecordsetClone()



sSQL = "UPDATE tblProducts " & _
        "SET tblProducts.[WholesalePrice] = rs!Cost " & _
        "WHERE (((tblProducts.[PosSupplierCode])='" & (rs!PosCode) & "'));"



rs.MoveFirst
Do Until rs.EOF
db.Execute sSQL, dbFailOnError

Loop

rs.Close
Set rs = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

有2个地方具有记录集变量。还要更改此一个:

"SET tblProducts.[WholesalePrice] = " & Str(rs!Cost) & " " & _

我假设Cost是一个浮点数字,所以它应该有一个句点作为分隔符,与PC区域设置无关,为此请使用Str函数(而不是CStr!)