【问题标题】:Trying to use VBA variable in Access UPDATE Statement尝试在 Access UPDATE 语句中使用 VBA 变量
【发布时间】:2016-07-12 12:47:56
【问题描述】:

正如标题所说,我正在尝试在更新语句中使用 VBA 变量。之所以使用它,是因为我想遍历一个范围内的每个单元格,并从表中对应于该迭代单元格引用的值中减去工作表中的一个值。但是,语句运行错误,说“括号太多”。但是,这对我来说很奇怪,因为我直接将 SQL 语法拉出访问权限。我想我错过了什么?我将发布两个版本的代码:

带有 vba 变量的代码:

Private Sub UPDIZZLE()
    Dim rCell As Range
    Dim rRng As Range
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strConnection As String
    Dim QUV As Long
    Dim IID As String

    Set rRng = ActiveWorkbook.Sheets("Sheet1").Range("b2:b100")

    For Each rCell In rRng.Cells
        If rCell <> "" And rCell.Value <> 0 Then
           IID = rCell
           QUV = rCell.Offset(0,x).Value
            strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ashleysaurus\Desktop" & "\" & "xyzmanu3.accdb"
            con.Open strConnection
            rs.Open "UPDATE Stuff SET Stuff.Quantity = Quantity-" & QUV & " WHERE (((Stuff.[ItemID])=" & IID & "));", con
            con.Close
        End If
    Next rCell

End Sub

没有变量的代码:

    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ashleysaurus\Desktop" & "\" & "xyzmanu3.accdb"
    con.Open strConnection
    rs.Open "UPDATE Stuff SET Stuff.Quantity = Quantity-1 WHERE (((Stuff.[ItemID])=Thingamagig));", con
    con.Close

【问题讨论】:

  • IID 值本身是否可能包含括号?
  • 因为IID 是一个字符串,它不应该是rs.Open "UPDATE Stuff SET Stuff.Quantity = Quantity-" &amp; QUV &amp; " WHERE (((Stuff.[ItemID])='" &amp; IID &amp; "'));", conIID 周围的单引号)。
  • 你知道我可能犯了一个非常愚蠢的菜鸟错误,我试试然后回帖
  • 不要使用 ADODB.Recordset 对象进行更新;请改用 ADODB.Command 对象。然后您可以使用参数化查询来指定要包含在更新中的值。
  • @DarrenBartrup-Cook,如果您想获得正确答案的反馈,请作为答案:)

标签: sql excel ms-access vba


【解决方案1】:

因为IID 是一个字符串不应该是

    rs.Open "UPDATE Stuff SET Stuff.Quantity = Quantity-" & QUV & " WHERE (((Stuff.[ItemID])='" & IID & "'));", con  

(IID 周围的单引号)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2023-03-30
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多