![](/img/trans.png)
[英]Create a New Record in a SubForm on button click MS Access 2013 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.