Обновление набора записей 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

Попробуйте это также:

If reUpdate.EOF Then 
    Exit Sub 
End If
Другие вопросы по тегам