VBA 访问运行时错误 3265



我是VBA编程的新手。当我单击Copy Record按钮时,我正在尝试从现有表单复制表单数据。这应该将当前表单数据复制为具有新master_id(自动编号)的新记录,并Brand为空白字段供他们填写。我得到一个:

运行时错误 3265"在此集合中找不到项"

在我创建的new_master_id。我不确定如何解决这个问题。任何帮助,不胜感激。

Private Sub Copy_Record_Click()
Dim RS As DAO.Recordset, C As Control
Dim FillFields As String, FillAllFields As Integer
Dim New_MASTER_ID As Integer
New_MASTER_ID = (DMax("[MASTER_ID]", "tbl_Drug_Master") + 1)
Dim BRAND As String
BRAND = ""
Set RS = CurrentDb.OpenRecordset(Name:="tbl_Drug_Master", Type:=RecordsetTypeEnum.dbOpenDynaset)
With RS
    .AddNew
    ![MASTER_ID] = ![New_MASTER_ID] <--this is where the problem is...
    ![MASTER_KEY] = Me![MASTER_KEY]
    ![PRODUCT_CATEGORY] = Me![PRODUCT_CATEGORY]
    ![BRAND] = Me![BRAND]
    ![GENERIC] = Me![GENERIC]
    ![STUDY_NAME] = Me![STUDY_NAME]
    ![MANUFACTURER] = Me![MANUFACTURER]
    ![MASTER_COMMENTS] = Me![MASTER_COMMENTS]
    .Update
End With
End Sub

好的,首先,我不确定为什么需要以下内容:

dim c as control
Dim FillFields As String, FillAllFields As Integer
New_MASTER_ID = (DMax("[MASTER_ID]", "tbl_Drug_Master") + 1)
Dim BRAND As String
BRAND = ""

因此,我将它们作为这个问题的一部分排除在外,因为它们似乎没有必要。品牌不是必需的,因为您正在创建新记录并在品牌字段中不放置任何内容,因此它将保持空白。

我也不太确定为什么你有 2 张桌子都是一样的?我认为应该发生的是,您只需将数据复制到同一表中的新记录即可。

您将看到我在例程中放置了一个保存记录命令。 还建议添加其他功能,例如错误处理。

Private Sub Copy_Record_Click()
docmd.runcommand accmdsaverecord
Dim RS As Recordset
Set RS = CurrentDb.OpenRecordset(Name:="tbl_Drug_Master", Type:=RecordsetTypeEnum.dbOpenDynaset)
  With RS
    .AddNew
       ![MASTER_KEY] = Me.MASTER_KEY.value
       ![PRODUCT_CATEGORY] = Me.PRODUCT_CATEGORY.value
       ![GENERIC] = Me.GENERIC.value
       ![STUDY_NAME] = Me.STUDY_NAME.value
       ![MANUFACTURER] = Me.MANUFACTURER.value
       ![MASTER_COMMENTS] = Me.MASTER_COMMENTS.value
    .Update 
  End With
Set RS = Nothing
End Sub

我的评论弄错了rs.close它会db.close但您正在使用currentdb,没有理由关闭它。此过程将保留在原始记录中,如果要转到新记录,则必须在例程结束之前添加类似docmd.gotorecord acdataform, , aclast的命令。

最新更新