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