Обновление набора записей VB6 ADODB
Так что я довольно новичок в Visual Basic и унаследовал этот код VB6, над которым мне нужно работать сейчас. Прямо сейчас я пытаюсь обновить базу данных SQL, используя ADODB.RecordSet. У меня есть оператор Select SQL, который извлекает нужные данные из базы данных в ADODB.RecordSet, но у меня возникают проблемы с обновлением всех строк. То, что я пытаюсь сделать, это обновить один и тот же столбец для каждой строки с тем же значением. Сейчас обновляются некоторые записи, но появляется сообщение об ошибке. Я получаю ошибку:
Ошибка времени выполнения 3021: либо BOF, либо EOF имеет значение True или текущая запись была удалена. Запрашиваемая операция требует текущей записи.
Когда я нажимаю для отладки, он переходит к rsUpdate.fields(TargetFieldName) = значение
Сам проект огромен и слишком велик для публикации, но часть кода, над которой я сейчас работаю, такова:
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 ответа
Я полагаю, что проблема в ошибке:
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