我是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
的命令。