我试图更新一个名为" OrigMask"的表列。在myfile.sqlite中使用在我的VBA代码中创建的数组。我在语法方面苦苦挣扎。 VBA数组命名为" NewMask"和表格#34; OrigMask"有864个元素。如何在VBA中创建sql语句并执行。非常感谢帮助!
我正在建立声明&像这样的连接:
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
conn.Open "DRIVER=SQLite3 ODBC Driver;Database=C:\myfile.sqlite;"
strSQL1 = "UPDATE MyTable SET OrigMask= NewMask;"
rst.Open strSQL1, conn
Set rst = Nothing: Set conn = Nothing
答案 0 :(得分:0)
这里有几个问题:
您需要遍历数组而不是将整个对象集成到SQL中,因为 NewMask 是数据库中无法识别的标识符。
更新查询是一个操作查询,而不是要在记录集中检索的结果集。
WHERE
中需要UPDATE
子句,或者所有记录都不是逐行更新。
因此,请考虑通过参数化ADO命令对象进行For Each
循环:
strSQL1 = "UPDATE MyTable SET OrigMask = ? WHERE id = ?;"
i = 1
For Each var In NewMask
Set cmd = CreateObject("ADODB.Command")
With cmd
.ActiveConnection = conn
.CommandText = strSQL1
.CommandType = adCmdText
.CommandTimeout = 15
.Parameters.Append .CreateParameter("maskparam", adVarChar, adParamInput, 255, var)
.Parameters.Append .CreateParameter("idparam", adInt, adParamInput, , i)
.Execute
End With
i = i + 1
Next var