vba访问运行时错误3265

时间:2016-01-26 21:39:01

标签: vba access-vba

我是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

1 个答案:

答案 0 :(得分:1)

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

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 = ""
因此,我将这些问题留给他们,因为他们似乎没有必要。品牌不是必需的,因为您正在创建新记录并且不在品牌字段中放置任何内容,因此它将保持空白。

我也不太清楚你为什么有两张相同的牌桌?我认为应该发生的只是将数据复制到同一个表中的新记录中。

您将看到我已将保存记录命令放入例程。还建议使用其他附加功能,例如错误处理。

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之类的命令。

相关问题