2013-12-12 46 views
0

我是微軟訪問中的新成員。我只是想知道如何使用創建自定義主鍵?例如abc-123格式?MS Access的自定義主鍵

+0

你真的希望'abc'部分出現在不同的元組中。我認爲可能會有所幫助。 –

回答

2

這取決於您希望如何創建abc-123值。

如果您想在代碼中自己創建它們,只需創建一個Text列並將其用作主鍵。

如果你想訪問創造這些價值......這是不可能的。 Access能夠自動生成的唯一東西是增加數值(數據類型AutoNumber)。

因此,您可以做的最好的事情是在內部使用AutoNumber作爲實際主鍵,並創建abc-123值,僅用於顯示。

這裏有一些例子,說明如何做到這一點,從我過去回答前一個類似的問題:


免責聲明:我不不知道在你的情況下是否有類似的方法。
如果沒有,你需要給你想究竟如何創建你的號碼的詳細信息:

  • 你想要數量的增加?
  • 你要字母改變/「增加」/總是保持不變嗎?
2

實際上,如果使用2010或更高版本,則可以創建表格觸發器。表格觸發器可能需要一些字段(你從哪裏得到abc),然後是一些其他字段(seq num),然後加上+ 1。

的「空氣」的代碼是這樣的:

enter image description here

表觸發器的優點是它運行在表(數據引擎)的水平,因此如果您使用ODBC打開數據庫, VB.net,FoxPro,Access等,那麼PK密鑰將永遠爲你自動生成。

+0

謝謝,阿爾伯特。我嘗試了一些類似於'DMax()'的方法,並且它在從Access本身插入記錄時起作用,但它導致其他應用程序的INSERT失敗。 (「數據宏中不允許使用DMax」)。我一直在嘗試Access 2010中的上述變體,但如果我的LookUpRecord試圖在數據宏所屬的同一張表上做SELECT,我會得到「The' LookUpRecord'宏操作對於'查找記錄'參數具有無效值。「 (來自不同表格的選擇似乎是確定的。)您能否更新您的答案以提供一個有效的示例?謝謝! –

+0

以上示例是一個工作示例(如果前綴在數據庫中不存在,則缺少代碼)。如果您在窗口標題中更改前在左上角顯示「custpart」。所以發佈的代碼是作爲更新代碼在SAME表上運行的存儲過程。重要的部分是當你引用一個字段名稱時,是否因觸發器或查詢引用了當前表?結果記錄了我如何使用別名來區分這兩個表。 –

+0

您是否偶然在Access 2013中創建您的示例?我在Access 2010中再次嘗試了完全相同的事情,並得到了我在之前的評論中引用的同樣的錯誤,當時我試圖保存Before Change宏。 (請參閱屏幕截圖[http://i.stack.imgur.com/jIqwf.png])。我注意到,截圖中的宏編輯器佈局與我的略有不同,所以我想知道是否您的方法是在Access 2013中引入的增強功能的結果。 –