繁体   English   中英

毫秒访问 vba 麻烦从子窗体删除记录

[英]ms access vba trouble deleting record from a subform

我有一个按钮后面的代码,可以从子表单中删除记录。 当我第一次打开父表单时,该代码有效。 但是,如果我把 select 的另一条记录删除,第一次之后就不行了。 我必须关闭表单并重新打开它才能使代码正常工作,而且它只能工作一次。

我尝试在其他程序中注释掉所有其他代码以隔离问题(例如 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

此代码不会引发错误,但不会删除记录。 我猜的语法错误?

所以问题最终是表单和子表单下的查询。 我必须将两者都简化为只包含主表单的主表和子表单的子表。 过去,如果我没记错的话,我注意到如果查询包含多个表,我无法在 forms 中进行数据输入。 这已经改变,现在查询中的多个表将用于数据输入,但似乎部分不允许从子表单中删除记录(我能够在打开表单后删除一条记录,但进一步删除不起作用)如果多个表用于查询。 也许有人对此有进一步的了解?

这是有效的代码:

将 LResponse 调暗为 Integer

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 End If

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM