我是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
答案 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
之类的命令。