【发布时间】:2015-12-08 04:39:48
【问题描述】:
我正在使用表单的 Current 事件从其 OpenArgs 属性中提取数据,以便为当前记录预填充一些空字段。
当前事件 VBA 如下图所示(pullData 子将这些新数据带入当前记录):
Private Sub Form_Current()
If _
SplitOpenArg(6) = "NewAssessment" _
Then
pullData
EditMode
Else
ViewMode
End If
End Sub
在表单的其他地方,我有一个命令按钮,它分支到用户删除/丢弃表单上显示的当前记录的选项:
Dim db As DAO.Database
Dim sql As String
Set db = CurrentDb
sql = "DELETE * FROM myTable WHERE ID='" & Me.ID & "'"
db.Execute sql
Set db = Nothing
DoCmd.Close acForm, "myForm"
当以这种方式删除记录时,似乎触发了表单的 Current 事件......我想这是设计使然;如果当前记录已被删除,则访问将移至另一条记录。
不幸的是,这意味着 pullData 子程序再次运行,因此部分重新创建了用户试图删除的记录。
我试过DoCmd.RunCommand acCmdDeleteRecord,但这会导致同样的问题。
是否可以在不触发表单当前事件的情况下从表单的记录源中删除记录?
我可能会关闭表单并删除与表单分开的模块中的记录,但如果可以从表单模块本身实现这一点,我会很感兴趣。
【问题讨论】:
标签: ms-access vba ms-access-2007 ms-access-2010 ms-access-2013