我正在使用 VBA 7 和 MS Word 来更改 SQLite 数据库中的字段值。我需要从一个数据库读取表中的每条记录,更改其值并更新第二个数据库中另一个表中的某些记录。当我尝试更新第二个表时,收到错误:“仅允许一个 SQL 语句”。 我将不胜感激任何帮助。
Sub IterateThruDB1andUpdateDB2()
Dim mCounter As Long
Dim mEntry As String
Dim mTranslation As String
Dim qExec As String
Set cnn1 = New ADODB.Connection
cnn1.ConnectionString = "DSN=SomeDSN1;"
cnn1.Open
Set cnn2 = New ADODB.Connection
cnn2.ConnectionString = "DSN=SomeDSN2;"
cnn2.Open
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
mCounter = 0
If cnn1.State = adStateOpen Then
qExec = "SELECT * FROM someTable1"
Set rs1 = cnn1.Execute(qExec)
Do Until rs1.EOF
mWordId = rs1.Fields("_id")
mWord = rs1.Fields("word")
mTranslation = rs1.Fields("translation") & "Some text"
qExec = "UPDATE someTable2 SET translation='" & mTranslation & "' WHERE _id='" & mWordId & "'"
Set rs2 = cnn2.Execute(qExec)
If rs2.EOF Then
mCounterNotFound = mCounterNotFound + 1
resp = MsgBox("Couldn't update! [" & mWordId & "]")
If resp = vbCancel Or resp = vbNo Then
rs2.Close
Exit Do
End If
Else
mCounter = mCounter + 1
End If
rs2.Close
rs1.MoveNext
Loop
End If
rs1.Close
cnn1.Close
cnn2.Close
Set rs1 = Nothing
Set rs2 = Nothing
Set cnn1 = Nothing
Set cnn2 = Nothing
End Sub
如果我将 Update 语句更改为 Select,它会起作用,因此它实际上允许两个语句,但不允许 Update 或 Insert。 第二组需要检查第二张表中的记录是否更新成功,因此需要在每次循环中关闭。第二套可以去掉,但是还是出现错误。
代码中有两个问题: