无法更新。 Requery后,数据库或对象是只读的

时间:2012-05-16 12:27:43

标签: ms-access vba

好的,无法在网上找到关于此错误的任何内容,所以请点击此处。

使用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

2 个答案:

答案 0 :(得分:0)

抱歉,再次查看后发现了这个问题。问题是Me.Requery语句需要是Me.Recordset.Requery。在完成并添加Me.Refresh之后,它按预期工作。

答案 1 :(得分:0)

为避免重新查询,我认为您应该打开记录集,指定它应该是动态集 CurrentDb.OpenRecordset("SELECT * FROM [Master Reject Data]", dbOpenDynaset) - 如果你想让它更整洁一点。至于小虫子,我看到你已经找到了自己