【发布时间】:2025-12-05 12:25:01
【问题描述】:
我使用 Access 97。
我有一个附加到父表单的子表单。 父表单基于数据库表,子表单基于选择查询:选择属于组的办公室。
我会允许用户从他的组中拉出一个办公室,所以我考虑使用删除按钮并使用事件删除如下:
Private Sub Form_Delete(Cancel As Integer)
If MsgBox("are you sure?", vbYesNo, "MsgBox") = vbYes Then
Call buro_delete
Else
Cancel = True
End If
End Sub
Office 和他的组通过外键链接。 办公室不会物理删除,但我们会将外键列置为空。
buro_delete
Private Sub buro_delete()
Dim l_adoConn As New ADODB.Connection
Dim l_adoCmd As New ADODB.Command
Dim l_ID As Long
Dim l_Sql As String
l_adoConn.CommandTimeout = g_CmdTimeOut
l_adoConn.Open (Allgemein.g_ADOConnStr)
Set l_adoCmd.ActiveConnection = l_adoConn
l_adoCmd.CommandType = adCmdText
l_adoCmd.CommandTimeout = g_CmdTimeOut
l_ID = Me.BTE_NR
l_Sql = "Update BUEROS Set KL_KETTE_ID=null Where BTE_NR=" & l_ID
l_adoCmd.CommandText = l_Sql
l_adoCmd.Execute
End Sub
在程序运行时,当我单击子表单中任何列上的删除按钮时,第一次显示 msgbox 并接受我的回答(是或否),然后第二次出现。
我打断点调试,看到系统运行form_delete sub,调用buro_delete sub,然后在buro_delete sub开头返回,第二次运行完毕。
为什么 form_delete sub 运行两次?
有什么建议
【问题讨论】:
-
你已经问过这个问题了吗?无论如何,你能分享你的用户、组和办公室的表定义吗?我感觉您的数据库设计不正确。此外 Form_delete 将触发选择删除记录的次数。 From_onbeforedelete 只会触发一次
-
这个问题之前有人问过,然后这个问题被作者删掉了。是*.com/questions/29557179/…
-
我再次提出问题寻找解决方案
标签: ms-access vba msgbox subform