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