Access 文件編號做自動跳號

Elaine
各位大大好:
我想做編號的自動跳號,資料表欄位名稱有「文件編號」、「文件類別」、「流水碼」

「文件編號」&「文件類別」資料類型:大型數字

「文件編號」為2部分組成,「文件類別」+「流水碼」
用下拉選單跑出「文件類別」後,每一種文件類別都從001開始,第一筆為001,第2筆為002
例如:1234001、1234002、1234003
5678001、5678002、5678003
9999001、9999002、9999003

我做了一個查詢,"最後文件編號",使用合計功能,以「文件類別」設定群組,「文件編號」設定最大值,找出每一「文件類別」的最後一筆

以下是我在表單寫的程式碼,請各位高手指點哪裡不對?
因為一直無法跳出結果,感激不盡。

Private Sub Form_BeforeInsert(Cancel As Integer)

Z = DLookup("文件編號之最大值", "最後文件編號", "文件類別 =" & Me![文件類別])

If IsNull(Z) = False Then '若文件編號之最大值有記錄
Me![文件編號] = Format([文件類別], "##########") & _
Format(Right(DMax("文件編號之最大值", "最後文件編號", "文件類別 =" & Me![文件類別]), 3) + 1, "000") '加1後顯示

Else '若文件編號之最大值沒有記錄
Me![文件編號] = Format([文件類別], "##########") & "001" '顯示001


End If
End Sub

這是我的信箱tw277711@gmail.com
如有類似的範例也請寄給我參考,謝謝🙏

tungta
除非新增資料時就已事先預設[文件類別],否則不了解為何會在BeforeInsert事件做設定
請將資料庫寄來看
lin27850016@yahoo.com.tw
P陳

資料欄位設定請儘量單純一點較好。
本題而言我的欄位只會放 「文件類別」、「流水碼」 不會放【文件編號】


Private Sub Form_BeforeInsert(Cancel As Integer)

Z = DMax("資料表1","流水碼", "文件類別 ='" & Me![文件類別] & "'")
If IsNull(Z) = False Then '若文件編號之最大值有記錄
Me![流水碼] = Z+1
Else '若文件編號之最大值沒有記錄
Me![流水碼] = 1
End If

End sub

文件編號的組合是【輸出】或【顯示】時的事情
【文件編號】= [文件類別] & format(流水碼,"000")




P陳
另承 tungta 的說明:
1.事件不應該放在 BeforeInsert (因為要先選 文件類別)選文件類別後,就會去啟動 BeforeInsert,而目前的 文件類別 是空白的,Dmax取到的流水碼會是錯的
2.建議放在 BeforeUpdate 試試
tungta
資料庫寄回
Elaine
謝謝tungta指教,寄回的資料庫收到了,我研究一下,不懂的再請教您。
謝謝P陳指教,我再試試。

在下新手,寫法都是參考各位高手的,諸多錯誤還請見諒
Elaine
tungta大大:

已mail回覆您,並附上我的問題,請再指教,謝謝

最有價值解答

tungta
資料庫寄回
Elaine
tungta大大:

收到,可已執行了,真是非常非常感謝您!
回到頂部