0

さて、このエラーについてオンラインで何も見つからないので、ここに行きます.

Access 2003 を使用しています。コンボ ボックスのドロップダウンがあるフォームがあります。ユーザーがドロップダウンから選択すると、VBA コードが特定のテーブルを調べて、データが既に存在するかどうかを確認します。見つかった場合は、レコードに関連付けられたデータが表示されます。見つからない場合は、テーブルに新しいレコードを追加し、新しいデータを表示しようとします。問題は、次のコードを使用すると、Me.Requery を追加しない限り、新しいデータが表示されないことです。ただし、それを行うと、同じプロセスを再度実行しようとすると、上記のエラーが発生します。

では、上記のエラーなしで追加した後にデータを表示するにはどうすればよいですか?

ここに関連するコードがあります...

' Find the record that matches the control.
Dim rs As DAO.Recordset

Set rs = Me.Recordset.Clone

'if no record found, then add a default record
If IsNull(Combo119) Then
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM [Master Reject Data]")
    rs.AddNew
    rs.Fields("production Date") = Date
    rs.Fields("Work Order #") = Combo119.Column(0)
    rs.Fields("Product Type") = ""
    rs.Fields("Shift") = ""
    rs.Fields("Line") = ""
    rs.Fields("# Produced") = 0
    rs.Fields("Reject Type") = ""
    rs.Fields("Reject Quantity") = 0
    rs.Fields("Reject Category") = "Rejection"
    Dim tRec As Long
    tRec = Combo142.ItemData(0)
    rs.Fields("Report Number") = tRec
    rs.Update
    Me.Requery 'this is the line I added to try to get the data to appear
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Report Number] = " & tRec 'navigate to the newly added record
Else
    rs.FindFirst "[Report Number] = " & Nz(Me![Combo119], 0) 'navigate to the record with the requested report number
End If
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
4

2 に答える 2

0

申し訳ありませんが、もう一度確認して問題を見つけました。問題は、Me.RequeryステートメントがMe.Recordset.Requeryである必要があることです。それを実行してMe.Refreshを追加すると、意図したとおりに機能します。

于 2012-05-16T12:34:39.133 に答える
0

再クエリを避けるために、ダイナセットであることを指定してレコードセットを開く必要があると思います CurrentDb.OpenRecordset("SELECT * FROM [Master Reject Data]", dbOpenDynaset)-少しきれいにしたい場合に備えて。小さなバグに関しては、あなたはすでに自分自身を見つけているようです

于 2012-05-16T12:40:00.420 に答える