Когда я заполняю все поля, я получаю ошибку 3021: нет текущей записи
-
21-12-2019 - |
Вопрос
У меня есть таблица, которая должна быть заполнена некоторой записью через форму.Я использую этот код:
Set rp = CurrentDb.OpenRecordset("table1")
Do
rp.Edit
rp!field2 = Text22
rp.Update
rp.MoveNext
Loop
.
Когда код заполняет таблицу и доходит до конца файла, я получаю ошибку 3021.
Почему это происходит?
Решение
Попробуйте это:
Set rp = CurrentDb.OpenRecordset("table1")
Do Until rp.EOF
rp.Edit
rp!Field2 = Text22
rp.Update
rp.MoveNext
Loop
.
Еще один способ использовать что-то вроде этого:
CurrentDb.Execute "UPDATE table1 SET field2='" & Text22 & "'", dbFailOnError
. Другие советы
Было бы много, гораздо быстрее использовать SQL, если вы хотите обновить каждую строку в таблице к определенному значению.
Например:
sSQL= "UPDATE Table1 SET Field2=param"
Set qdf = db.CreateQueryDef("", sSQL)
qdf.Parameters!param = Trim(Me.Text22)
qdf.ReturnsRecords = False
qdf.Execute dbFailOnError
intResult = qdf.RecordsAffected
MsgBox "You updated " & intResult & " records."
.
Вы можете даже указать тип параметра, например:
sSQL= "PARAMETERS param Text(150); UPDATE Table1 SET Field2=param"
.
Дальнее безопаснее использовать параметры, которые создают строки SQL.
Не связан с StackOverflow