Когда я заполняю все поля, я получаю ошибку 3021: нет текущей записи

StackOverflow https://stackoverflow.com//questions/22022447

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top