VB6 ADODB记录集更新

VB6 ADODB记录集更新,vb6,ado,Vb6,Ado,所以我对VisualBasic非常陌生,继承了我现在需要处理的VB6代码。现在,我正在尝试使用ADODB.RecordSet更新SQL数据库。我有一个Select SQL语句,它将正确的数据从数据库拉入ADODB.RecordSet,但我在更新所有行时遇到问题。我试图做的是用相同的值为每行更新相同的列。现在,它正在更新一些记录,但我得到一个错误弹出窗口。我得到的错误是: 运行时错误3021:BOF或EOF 为True或当前记录已被删除 删除。请求的操作需要 目前的记录 当我单击调试时,它会将我带

所以我对VisualBasic非常陌生,继承了我现在需要处理的VB6代码。现在,我正在尝试使用ADODB.RecordSet更新SQL数据库。我有一个Select SQL语句,它将正确的数据从数据库拉入ADODB.RecordSet,但我在更新所有行时遇到问题。我试图做的是用相同的值为每行更新相同的列。现在,它正在更新一些记录,但我得到一个错误弹出窗口。我得到的错误是:

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

当我单击调试时,它会将我带到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非常陌生,在学习的过程中,我一直在学习这一切。

我猜问题是一个错误:

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

我会这样写:

while not rsUpdate.EOF do
   rsUpdate.fields(TargetFieldName) = value       
   rsUpdate.MoveNext
wend
也可以尝试以下方法:

If reUpdate.EOF Then 
    Exit Sub 
End If
If reUpdate.EOF Then 
    Exit Sub 
End If