gpt4 book ai didi

VB6 ADODB 记录集更新

转载 作者:行者123 更新时间:2023-12-01 15:18:40 27 4
gpt4 key购买 nike

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

Run Time error 3021: Either BOF or EOF is True or the current record has been deleted. Requested operation requires a current record.

当我点击调试时,它会将我带到 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 还很陌生,我正在边学边学这一切。

最佳答案

我猜问题是 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

关于VB6 ADODB 记录集更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6333700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com