すべてのフィールドを記入すると、エラー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