好的,无法在网上找到关于此错误的任何内容,所以请点击此处。
使用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
答案 0 :(得分:0)
抱歉,再次查看后发现了这个问题。问题是Me.Requery语句需要是Me.Recordset.Requery。在完成并添加Me.Refresh之后,它按预期工作。
答案 1 :(得分:0)
为避免重新查询,我认为您应该打开记录集,指定它应该是动态集
CurrentDb.OpenRecordset("SELECT * FROM [Master Reject Data]", dbOpenDynaset)
- 如果你想让它更整洁一点。至于小虫子,我看到你已经找到了自己