所以我處理了一個 Access 表單,我注意到當我沒有填寫所有欄位并關閉表單時,我填寫的欄位作為一種“不完整”的記錄填充到我的表中,這會弄亂我的編號增量系統我要去。有沒有辦法丟棄在表單關閉時輸入的所有資料,而不需要在表屬性中設定某些欄位?我不想這樣做,因為它在嘗試關閉時會給出一條訊息,如果可能的話我想避免這種情況
uj5u.com熱心網友回復:
自動編號遞增的問題以及不想保存缺少欄位或值的記錄是兩個巨大的不同問題。
嘗試轉到新記錄,輸入一些內容,按 esc 2 次(或轉到功能區并使用撤消,然后退出表單。
該記錄現在將為空白,如果您退出,則不會創建任何記錄(但是,自動編號將增加)因此自動編號增加和記錄的保存是兩個非常不同且獨立的事情。
當您開始在表單上的空白新記錄中輸入時 - 記錄變得“臟”,并且自動編號會增加并分配給該記錄。
如果您不希望記錄與丟失的東西一起保存,那么在更新事件之前的表單中,您可以檢查丟失的欄位,甚至錯誤或錯誤的值,如果您設定取消 = true,則記錄將不會保存,也沒有創建。
因此,您不需要在表設計中設定 required 。通常有各種各樣的事情你可能想要檢查。假設您可能需要名字或姓氏(一個或另一個 - 這樣的事情不能在表級別完成。因此您可以根據需要進行復雜的記錄驗證。并且如上所述,在大多數情況下,您可以并且愿意在更新事件之前使用表單。
但是,要防止出現空白記錄,或保存缺少資訊的記錄?當然,不是問題 - 一個常見的要求。
上面有零,但絕對零與自動編號問題有關。
當第一個鍵輸入到該表單中時,Access 將發出并將自動編號設定為 SOON。如前所述,您可以使用撤消,退出時,不會創建或保存任何 REOCRD。
但是,創建的自動編號將被丟棄 - 并被跳過。這樣做的原因是為了多用戶操作。如果兩個用戶移動到一個新的空白記錄,那么當一個用戶開始打字時,就會分配自動編號。(即使您不保存記錄)。當第二個用戶開始輸入時,他們也會得到一個自動編號。現在,如果兩個用戶都按了撤消(或 esc 鍵),那么兩個用戶都可以退出,并且您注意到將跳過 2 個自動編號。如前所述,訪問以這種方式作業,因此在添加記錄時不能為兩個用戶分配相同的 PK 值。
因此,永遠不能認為自動編號不會跳過。當然,洗掉記錄又如何呢——同樣,你也有差距。
自動編號不能用于發票編號或某種外部值。自動編號永遠不能被賦予任何更多的意義,而不是像 PK 值這樣的“隨機”。您不能將這些數字用于外部業務用途,如果這些數字只是連續的,沒有間隙。
如果您需要業務增量編號,例如發票或作業編號或其他什么?您需要創建自己的列,并在代碼中管理該增量。(例如在更新前事件中分配該數字 - 但正如我所指出的,您也可以出于任何舊原因取消更新事件前的該數字 - 包括缺少欄位或即使這是一周中的奇數天(任何浮動您的在這里可以使用boat,所以當他們退出時你可以提示他們并告訴他們記錄不完整。或者在那些特殊情況下,你甚至可以讓他們不保存退出,但某種訊息可能更好。
那么,如果您不想保存一些不完整的記錄?然后在更新事件之前將您想要的任何內容放入表單中 - 并設定取消 = true(該事件具有完全為此目的構建的取消選項)。但是,保存或防止記錄保存的目標與自動編號中沒有間隙的問題幾乎沒有關系 - 您無法控制,也無法阻止。(防止間隙)。
如果您需要一些外部業務編號系統,則不能使用自動編號。事實上,用戶甚至不應該看到自動編號,它們是您在表之間建立關系的開發人員。
因此,這些內部管理自動編號不能用于需要某種無間隙序列號的外部業務流程,因為這不是它們的目的,更糟糕??的是,您無法控制或避免此類間隙反正數字。
您可以撤消,但自動編號遞增意味著數字將作為資料庫系統的正常操作而被跳過。
由于該號碼是自動的并受資料庫系統控制,而不是您開發人員,因此您只能接受它的作業方式并使用它 - 但您不能更改該自動號碼的行為。這適用于所有和任何資料庫系統。事實上,當您重新啟動時,更高版本的 sql server 將向前跳過 10,000。
如果您不想保存記錄,請輸入您的代碼以防止此類情況發生。
如果您需要單獨發行一些用于商業用途的遞增數字?然后在資料庫中添加一列并設計增量系統以任何您想要的方式作業 - 但您無法控制內置系統,并且無論如何它都不是按照您在此處設定的目標進行設計的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342503.html
上一篇:按記錄ID僅選擇最近的記錄
下一篇:mysql-獲取出現次數
