1

e我想在我的Access數據庫中創建自定義主鍵。訪問自定義主鍵

該數據庫將是多用戶,所以我需要確保每個關鍵是,即使多個用戶嘗試新的記錄添加到同一個表中的唯一方法。

我需要創建自定義主鍵的原因是因爲我的數據庫開始了一個審計線索,去到另一個外部系統,我無法控制。

該其他系統不但允許使用一個單一的12個字符的長度用戶定義字段的爲我們通過通過我們的選擇的數據。

我想使用該用戶定義的字段來記錄具有各種縮寫的12個字符的代碼,稍後我可以推斷(例如,前兩個字符與組織中的部門相關,後面的3個字符與產品相關等等......)

從我迄今爲止所做的閱讀中,Access中的自定義鍵似乎是雷區。

對於我而言,雖然,我有種看到合併訪問自動編號字段基本上幫助建立主鍵我想至少一種妥協。

這是我的想法是:

,我會想推斷以後可以由我們的用戶來構建,因此,例如,如果該部人力資源,第2個字符總是可以在代碼的部分成爲「HR」。

然後讓我說讓我在訪問中的自動編號運行在我的「HR」條目填充在同一個表中的字段...我可以得到第三個字段自動連接2在同一個表(不查詢)...?即是這樣的:

| Department | AutoNumber | CustomPrimaryKey | 
| HR  |  1  |  HR1  | 

如果是這樣的東西,可以在VBA一些事件來完成,那麼這將是巨大的(顯示我的代碼:)!)

第二部分是我是否能獲得自動編號與前導零確保自定義主鍵的「唯一編號」部分來連接爲99999和00001,即佔據這樣相同的5個字符的空間之間:

| Department | AutoNumber | CustomPrimaryKey | 
| HR  |  1  |  HR00001  | 
| HR  |  2  |  HR00002  | 

這是極不可能的,我會需要超過100,000條目。

我希望這是可能的和安全的!

+1

您的方法對我來說聽起來很合理,但我不清楚哪裏存在問題?你提到「讓我看看代碼!」 (但是SO不是免費的代碼寫入服務)。 – pnuts 2013-05-09 23:59:10

+0

對不起 - 我有點新VBA,但想象我想要做的是將部門和自動編號的連接存儲在一個VBA變量中,然後通過窗體的文本框中的一些事件推送它的形式...不是確定什麼事情是適當的,但。我大概可以想出一個用'LEN'獲得前導零的方法。 – 2013-05-10 00:07:00

回答

1

我寧願離開這個作爲不是回答的評論,因爲我不認爲你是你所需要的完全清楚,但我會嘗試儘可能地回答。另外,我不打算「向您展示代碼!」正如你所建議的,因爲它什麼都不教。

在自動連接第三個字段的第一個問題中,這實際上是一個如何填充字段的問題。

如果它是通過表單輸入,那麼你就可以在被填充那些分量場控件的更新事件串連所有組件場爲重點領域。在VBA中,您可以通過訪問表單的記錄集輕鬆地引用記錄的成員。

如果您通過已經有導入規格的文件導入填充字段,那麼您將執行排除關鍵字段的導入,然後打開導入的表的記錄集並遍歷記錄集。您可以瞭解ADO記錄集here.同樣,我不會編寫代碼,因爲我不知道您需要什麼。

如果您通過自己的解析器填充字段,那麼可能不需要解釋如何執行此操作。

對於第二個問題,可以使用format()函數輕鬆地將字符串中的數字對齊。例如format(2,"00000")將產生「00002」,而format(210,"0000")產生「0210」。您還可以使用string()函數使您想要對齊變量的0的數量。例如format(2054,string(12-len("HR"),"0"))會給你「0000002054」

我要留給你的另外一個注意事項是,說出「我不太可能會這樣......」而不是爲它做準備。墨菲定律在B中是痛苦的。你應該考慮處理你超過了你的鑰匙可以處理的限制的條件。

+0

謝謝比爾。對不起,我的「給我看代碼」的評論 - 這意味着有些尷尬。我從編碼開始,但不希望任何人爲我做我的工作......只需要在正確的方向上微調一下(就像你在這裏給我的'format'和'字符串'來幫助建立我的自定義密鑰,這將是非常有用的)。 – 2013-05-10 09:37:08