我正在根据条件使用While / Wend循环更新MS Access。该查询似乎更新了我的表中以前的记录,该记录是不满足循环条件,而不更新实际记录符合条件。
代码的此部分具有我用于更新Access的标识符:
Dim rr As Range
Set rr = [a2]
此部分增加行:
Dim r As Long
r = 2
现在,我正在检查包含标识符的列A中的长度是否大于零,并且列F中的相应单元格包含“是”,请执行sql查询:
While Len(Sheet2.Range("A" & r).Formula) > 0
If Sheet2.Range("F" & r).Value = "Yes" Then
myid = rr.Offset(0, 0).Value
qString = "UPDATE [table] SET [Status]= '" & statusvalue & "' WHERE [Key]='" & myid & "'"
cn.Execute qString, dbFailOnError
End If
r = r + 1
Wend
查询可以很好地更新数据库,只是它更新了错误的记录。例如,如果第2行不包含“是”,而第3行包含“是”,则第2行的记录将在数据库中更新,而不是第3行的记录!我认为这与我的循环有关,我无法弄清楚。
希望有人帮助您!
变量myid
始终指向单元格A2。如果要循环返回基于当前行的ID,则需要更改行myid = rr.Offset(0, 0).Value
。
由于rr
指向A2并且r
从值2开始,也许您需要
myid = rr.Offset(r-1, 0).Value
或用1初始化r
并执行
myid = rr.Offset(r, 0).Value