모든 필드를 채우면 오류 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