VB6 ADODB记录集更新

时间:2011-06-13 17:05:24

标签: vb6 ado

所以我对Visual Basic很新,并继承了我现在需要处理的VB6代码。现在,我正在尝试使用ADODB.RecordSet更新SQL数据库。我有一个Select SQL语句,它将数据库中的正确数据提取到ADODB.RecordSet中,但是我在更新所有行时遇到了问题。我想要做的是为每行更新相同的列具有相同的值。现在,它更新了一些记录,但是我弹出一个错误。我得到的错误是:

  

运行时错误3021:BOF或EOF   是真或当前的记录   删除。请求的操作需要   目前的记录。

当我点击调试时,它需要我rsUpdate.fields(TargetFieldName)= value

项目本身庞大而且太大而无法发布,但我现在正在处理的部分代码是:

If rsUpdate.State = adStateOpen Then
  If rsUpdate.EOF Then
   rsUpdate.Close
   Exit Function
  End If
rsUpdate.MoveFirst
Dim i as Integer
For i = 0 To rsUpdate.recordCount
 rsUpdate.fields(TargetFieldName) = value
 rsUpdate.MoveNext
Next i
On Error GoTo canupdaterecord
rsUpdate.Update
On Error GoTo 0
rsUpdate.Close
End If
Exit function

所以你们给我的任何帮助都将不胜感激。就像我说的那样,我对VB很陌生,并且在我去的时候就是这样学习的。

2 个答案:

答案 0 :(得分:6)

我猜这个问题是off-by-one错误:

For i = 0 To rsUpdate.recordCount
   rsUpdate.fields(TargetFieldName) = value       
   rsUpdate.MoveNext
Next i

如果recordcount返回 5 ,此循环将使 6 运行:0,1,2,3,4,5。

我会这样写:

while not rsUpdate.EOF do
   rsUpdate.fields(TargetFieldName) = value       
   rsUpdate.MoveNext
wend

答案 1 :(得分:0)

也可以尝试:

If reUpdate.EOF Then 
    Exit Sub 
End If