我在按钮后面有代码,该按钮可从子表单中删除记录。该代码在我第一次打开父表单时起作用。但是,如果我选择另一个记录要删除,则第一次后它将无法再使用。我必须关闭窗体并重新打开它才能使代码正常工作,并且它再次只能工作一次。
我试图注释掉其他过程中的所有其他代码以找出问题(例如Form_Open),但是未能找到导致问题的原因。
代码是:
Dim LResponse As Integer
LResponse = MsgBox("Do you wish to Delete this local Vendor?", vbYesNo, "Delete Local Vendor")
If LResponse = vbYes Then
Me.VendorPrograms_subform.Form.Recordset.Delete
Me.VendorPrograms_subform.Form.Recordset.MoveNext
Else
DoCmd.CancelEvent
End If
代码可以正常工作,但据我所知,似乎有其他原因正在引起冲突。
我也尝试过SQL:
Dim sSQL As String
sSQL = "DELETE * FROM VendorPrograms WHERE VendorId# = " & "Me!VENDOR#"
DoCmd.RunSQL sSQL
Me!VendorPrograms_subform.Requery
此代码不会引发错误,但是不会删除该记录。我猜错了语法吗?
答案 0 :(得分:0)
因此问题最终出在表单和子表单下。我必须简化两者,只包括用于主表单的主表和用于子表单的子表。过去,如果我没记错的话,我注意到如果查询包含多个表,则无法在表单中进行数据输入。这已经发生了变化,现在查询中的多个表可用于数据输入,但是,似乎不允许部分删除子窗体中的记录(我可以在打开窗体后删除一条记录,但是进一步的删除不起作用)表用于查询。也许有人对此有进一步的了解?
这是有效的代码:
将LResponse转换为整数
LResponse = MsgBox(“您要删除此本地供应商吗?”,vbYesNo,“删除本地供应商”)
如果LResponse = vbYes那么
Me![VendorPrograms subform1].Form![VendorId#].SetFocus
Me.[VendorPrograms subform1].Form.Recordset.Delete
Me.[VendorPrograms subform1].Form.Recordset.MoveNext
Me.Requery
其他 DoCmd.CancelEvent 如果结束