我在上一個項目,訪問了工作和停止Insert命令我就可以工作更不屑我有它的時間越長。我一直在使用谷歌搜索和嘗試解決方法,但我無法完全找到我想要做的事情。MS訪問的形式接近
我有一個鏈接到表格的形式。我有一個按鈕可以將表單的記錄設置爲新記錄。如果您開始在任何一個文本框中鍵入記錄開始更新,則此時不會執行插入操作。但是,如果我瀏覽記錄更新被調用。如果用戶不想添加我可以找到的新記錄,就無法阻止更新發生。我使用
DoCmd.GoToRecord , , acNewRec
爲了讓形式把所有的文本框去一個新的記錄。此時,只要您開始在任何文本框中輸入內容,就無法返回。自動編號會發生變化,並且我有sku生成器,它將autoNumber連接到一個前綴以充當序列號。
我需要做的,是找出一種方式來獲得更新,如果用戶點擊關閉以取消。我試圖禁用關閉,但您可以隨時右鍵單擊欄並從那裏選擇關閉。這與任何提示窗體關閉的提交都會在進程記錄中提交併隨後觸發「afterUpdate」事件。我閱讀了一些微軟文檔,並且在工作流程中首先調用了「form_unload」,但插入始終在此之前。我也嘗試過使用「beforeUpdate」,但是一旦你嘗試寫入其中一個框,並且不是在「afterUpdate」之前就會觸發。
看起來beforeUpdate和afterUpdate。我不認爲這是我想在這裏嘗試,但也許我已經工作了這麼久,我已經錯過了一個簡單的解決方案一個十分複雜的操作。我只需要取消插入操作或提示用戶他們正在用打開的記錄關閉表單。如果他們擊中沒有插入將火,是的,它會。
而且,我也沒有胃口重寫,因爲我的時間線爲ADO。我只需要快速將一些表格拼湊起來並完成。還有很多字段我不想爲ADO插入設置。他們都建立了,但我有這個問題讓我感到悲傷,我需要把這個解決方案應用到所有的表單中。
TLDR - 從如果用戶輸入的文本,並試圖退出該插入停止數據綁定的形式。
解決方案編輯: 將表單更改爲模式/彈出並禁用關閉。 添加一個按鈕來處理關閉。 添加布爾標誌
Private Sub Form_BeforeInsert(Cancel As Integer)
NR = True
End Sub
然後添加代碼的關閉按鈕。
Private Sub cmdClose_Click()
Dim msgRes As VbMsgBoxResult
If NR Then
msgRes = MsgBox("Do you want to save the current new record?", vbYesNoCancel, "Closing form...")
If msgRes = vbYes Then
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Close
ElseIf msgRes = vbNo Then
Me.Undo
DoCmd.Close
End If
End If
DoCmd.Close
End Sub
這是你的主要問題:「自動編號將incriment和我有SKU生成器,串接自動編號的前綴作爲一個序列號。」你有一個自動編號,這意味着什麼。這從來不被推薦。自動編號就是獨一無二的。一個自動編號可以跳躍,倒退,甚至變爲負的,所以它永遠不會適合作爲一個有意義的數字,應該從來沒有被顯示給用戶。 – Fionnuala
我不知道設置爲增量的自動編號可能爲負值,或者爲負值。也許序列號是一個不好的選擇。這不是非常有意義,但我只需要一種建立具有唯一編號的sku的方法。它被用作其他表的外鍵。前綴的附件僅用於識別它。 – Bmo
在大多數情況下它會增加,但你不能靠一個自動編號是唯一的除外東西。運行改變其工作方式的代碼並不困難。 (http://allenbrowne.com/ser-40.html) – Fionnuala