2012-11-05 41 views
3

我在上一個項目,訪問了工作和停止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 
+0

這是你的主要問題:「自動編號將incriment和我有SKU生成器,串接自動編號的前綴作爲一個序列號。」你有一個自動編號,這意味着什麼。這從來不被推薦。自動編號就是獨一無二的。一個自動編號可以跳躍,倒退,甚至變爲負的,所以它永遠不會適合作爲一個有意義的數字,應該從來沒有被顯示給用戶。 – Fionnuala

+0

我不知道設置爲增量的自動編號可能爲負值,或者爲負值。也許序列號是一個不好的選擇。這不是非常有意義,但我只需要一種建立具有唯一編號的sku的方法。它被用作其他表的外鍵。前綴的附件僅用於識別它。 – Bmo

+1

在大多數情況下它會增加,但你不能靠一個自動編號是唯一的除外東西。運行改變其工作方式的代碼並不困難。 (http://allenbrowne.com/ser-40.html) – Fionnuala

回答

3

你總是可以做到無論是Me.UndoDoCmd.RunCommand acCmdUndo上FormClose 或者如果你仍然無法得到它的工作(我花了很多時間在訪問,我知道它可以挑剔的)你可以做一個DoCmd.RunSql ("Delete * from TableName where Id=NewID")

你也可以試試這個:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 
DoCmd.Close , , acSaveNo 

您可能還需要禁用關閉按鈕,創建一個按鈕來取消記錄,這樣就可以把所有的代碼在那裏。如果將窗體模式設置爲對話框,則不應該右鍵單擊關閉它。

+0

現在我想回到過去的幾個小時。謝謝先生。 – Bmo

+0

的DoMenuItem出去使用早在2000年版本(或者甚至97年?)。 – Fionnuala