我有一個Access數據庫,我們用它來容納工人的補償事故信息。其中一個必填字段是OSHA可記錄號碼,該號碼以「01」和事故的兩位數年份(例如01-14)順序開始。序列號自動填充字段
我需要能夠編程查看我的表格,看看已經使用了哪些數字並找到序列中的下一個數字。它還需要在新的一年開始時重置爲1。
例子: 表中讀取
01-14
02-14
03-14
用於填充文本應該是04-14
幫助新的號碼!
我有一個Access數據庫,我們用它來容納工人的補償事故信息。其中一個必填字段是OSHA可記錄號碼,該號碼以「01」和事故的兩位數年份(例如01-14)順序開始。序列號自動填充字段
我需要能夠編程查看我的表格,看看已經使用了哪些數字並找到序列中的下一個數字。它還需要在新的一年開始時重置爲1。
例子: 表中讀取
01-14
02-14
03-14
用於填充文本應該是04-14
幫助新的號碼!
鑑於您有多用戶數據庫,請參閱insert query with sequential primary key或Access VBA: Find max number in column and add 1以獲取下一個連續編號的代碼。
您可以使用Year和種子編號創建下一個OSHA編號。您可以在更改年份時重置種子編號。
DMax是一種可能性,但我強烈建議您不要在多用戶數據庫中使用它。
根據您所描述的,聽起來OSHA編號應該在需要時生成,而不是在創建表格行時分配和存儲。我的建議是隻讓主鍵(accident_id
)成爲一個自動增長的長整數,這是Access中的標準做法。還需要accident_date
列爲datetime
或類似的。或者至少是accident_year
列。然後,當您需要OSHA編號(例如在報告中)時,只需使用一些VBA即可使用主鍵 - accident_id
- 和accident_date
或accident_year
列生成該編號。您將利用Access自動增量主鍵不會被重新使用的事實 - 即使刪除了它們的行,這些數字也不會被循環使用以用於其他行。因此,考慮一個長整型主鍵,和一個日期,你總是可以重現完全相同 OSHA數,用一個簡單的算法類似以下內容:
function osha_number(accident_id as long) as string
accident_year = ... ' get (last two digits of) accident year from accidents table using ID
year_first_accident_id = ... ' get ID of first accident of this year
year_this_accident_num = accident_id - year_first_accident_id + 1
osha_number = year_this_accident_num & "-" & accident_year
end function
什麼是Excel的數據庫? –
Excel電子表格或MS-Access數據庫? – Ghost
MS-Access數據庫 – designspeaks