【发布时间】:2018-05-18 15:15:42
【问题描述】:
希望您能帮上忙,我是 VBA 新手,但渴望学习。我创建了一个向我的数据库添加文档编号的表单(字段名称 DocNum)。我为该字段创建了一个“更新后”事件,以在每个表上创建相应的记录,该记录将保存该文档 ID 的附加信息。在此处查看代码:
Private Sub DocNum_AfterUpdate()
Dim TBL_3_ManuscriptPrimaryReviewer As DAO.Recordset
Set TBL_3_ManuscriptPrimaryReviewer = CurrentDb.OpenRecordset("Select * FROM [TBL_3_ManuscriptPrimaryReviewer]")
TBL_3_ManuscriptPrimaryReviewer.AddNew
TBL_3_ManuscriptPrimaryReviewer![Manuscript_Number] = Me.DocNum.Value
TBL_3_ManuscriptPrimaryReviewer.Update
TBL_3_ManuscriptPrimaryReviewer.Close
Set TBL_3_ManuscriptPrimaryReviewer = Nothing
End Sub
Private Sub DocNum_AfterUpdate()
Dim TBL_4_ManuscriptSTATReviewer As DAO.Recordset
Set TBL_4_ManuscriptSTATReviewer = CurrentDb.OpenRecordset("Select * FROM [TBL_4_ManuscriptSTATReviewer]")
TBL_4_ManuscriptSTATReviewer.AddNew
TBL_4_ManuscriptSTATReviewer![Manuscript_Number] = Me.DocNum.Value
TBL_4_ManuscriptSTATReviewer.Update
TBL_4_ManuscriptSTATReviewer.Close
Set TBL_4_ManuscriptSTATReviewer = Nothing
End Sub
Private Sub DocNum_AfterUpdate()
Dim TBL_5_ManuscriptSCReview As DAO.Recordset
Set TBL_5_ManuscriptSCReview = CurrentDb.OpenRecordset("Select * FROM [TBL_5_ManuscriptSCReview]")
TBL_5_ManuscriptSCReview.AddNew
TBL_5_ManuscriptSCReview![Manuscript_Number] = Me.DocNum.Value
TBL_5_ManuscriptSCReview.Update
TBL_5_ManuscriptSCReview.Close
Set TBL_5_ManuscriptSCReview = Nothing
End Sub
Private Sub DocNum_AfterUpdate()
Dim TBL_6_ManuscriptPublications As DAO.Recordset
Set TBL_6_ManuscriptPublications = CurrentDb.OpenRecordset("Select * FROM [TBL_6_ManuscriptPublications]")
TBL_6_ManuscriptPublications.AddNew
TBL_6_ManuscriptPublications![Manuscript_Number] = Me.DocNum.Value
TBL_6_ManuscriptPublications.Update
TBL_6_ManuscriptPublications.Close
Set TBL_6_ManuscriptPublications = Nothing
End Sub
但是,当我尝试使用表单时出现以下错误:
“作为事件属性设置输入的更新后表达式产生了以下错误:检测到不明确的名称:DocNum_AfterUpdate。”
在做了一些研究之后,我尝试将代码重写为一个 Private Sub,而不是四个,如下所示:
Private Sub DocNum_AfterUpdate()
Dim TBL_3_ManuscriptPrimaryReviewer As DAO.Recordset
Set TBL_3_ManuscriptPrimaryReviewer = CurrentDb.OpenRecordset("Select * FROM [TBL_3_ManuscriptPrimaryReviewer]")
TBL_3_ManuscriptPrimaryReviewer.AddNew
TBL_3_ManuscriptPrimaryReviewer![Manuscript_Number] = Me.DocNum.Value
TBL_3_ManuscriptPrimaryReviewer.Update
TBL_3_ManuscriptPrimaryReviewer.Close
Set TBL_3_ManuscriptPrimaryReviewer = Nothing
Dim TBL_4_ManuscriptSTATReviewer As DAO.Recordset
Set TBL_4_ManuscriptSTATReviewer = CurrentDb.OpenRecordset("Select * FROM [TBL_4_ManuscriptSTATReviewer]")
TBL_4_ManuscriptSTATReviewer.AddNew
TBL_4_ManuscriptSTATReviewer![Manuscript_Number] = Me.DocNum.Value
TBL_4_ManuscriptSTATReviewer.Update
TBL_4_ManuscriptSTATReviewer.Close
Set TBL_4_ManuscriptSTATReviewer = Nothing
Dim TBL_5_ManuscriptSCReview As DAO.Recordset
Set TBL_5_ManuscriptSCReview = CurrentDb.OpenRecordset("Select * FROM [TBL_5_ManuscriptSCReview]")
TBL_5_ManuscriptSCReview.AddNew
TBL_5_ManuscriptSCReview![Manuscript_Number] = Me.DocNum.Value
TBL_5_ManuscriptSCReview.Update
TBL_5_ManuscriptSCReview.Close
Set TBL_5_ManuscriptSCReview = Nothing
Dim TBL_6_ManuscriptPublications As DAO.Recordset
Set TBL_6_ManuscriptPublications = CurrentDb.OpenRecordset("Select * FROM [TBL_6_ManuscriptPublications]")
TBL_6_ManuscriptPublications.AddNew
TBL_6_ManuscriptPublications![Manuscript_Number] = Me.DocNum.Value
TBL_6_ManuscriptPublications.Update
TBL_6_ManuscriptPublications.Close
Set TBL_6_ManuscriptPublications = Nothing
End Sub
但是,这也不起作用。它只更新 TBL_6_ManuscriptPublications,而不是表 3、4 或 5。
我已经搜索了大约 2 个小时来了解如何进行多个更新后事件,但似乎没有任何帮助。 If>Then 似乎不适用,For>Next 也不适用。
我很想得到一些帮助,谢谢! -德布
【问题讨论】:
-
我相信您的
AfterUpdatesub 应该位于检测文档编号更改的源表的表对象中。如果事件捕获器 (AfterUpdate) 在用户表单对象中或在独立子(在模块中)中,则与您尝试触发的实际表没有直接联系。