Forum Discussion
Auto number with prefix
- Sep 11, 2023For anyone that wants to recreate this, the problem was the "strSQL" part in the DMax function. Here is the code that works for me:
Private Sub Sequence_Click()
Dim currentYear As Integer
' Aktuelles Jahr aus dem aktuellen Datum ermitteln
currentYear = Year(Date)
Dim strSQL As String
strSQL = "Year([Claim_Year]) = " & currentYear
Dim maxSeq As Variant
maxSeq = DMax("[Sequence]", "_Auto_Number")
If IsNull(maxSeq) Then
Me.Sequence = 1 ' Wenn keine Datensätze für das aktuelle Jahr vorhanden sind, beginnen Sie mit 1.
Else
Me.Sequence = maxSeq + 1
End If
Me.SequenceDisplay = Format(Date, "yyyy") & "-" & Format(Me.Sequence, "0000")
End Sub
Please do not try to store a concatenated value like this in one field.
And even more importantly, please do not use the AutoNumber datatype for this purpose. It is guaranteed only to provide unique values. It can not be counted on to provide sequential values with no gaps between them. If you use this approach, you will inevitably have such gaps and people will see them. People will wonder why there are missing values. It's possible, but not very wise. There are better ways to achieve the goal.
Instead, create a field for the "prefix", which is obviously the current year. It can default to Year(Date()).
In the second field, create the sequential values you want to display to users. This is an excellent extended discussion of how to accomplish that, with links to examples.
It includes a reference to restarting the sequence each year, which I suspect is also in your sights for this feature.
- Moritz1003Sep 04, 2023Copper ContributorOkay, thank you for your reply, do I understand correctly that what you are proposing is creating a second field in table1 for the prefix? What do you mean by "In the second field, create the sequential values you want to display to users? I am pretty new to Access and VBA, I think I need a little more explaining on what to actually do 😕 What kind of field will the second field be and where do I insert the code?
- George_HepworthSep 04, 2023Silver ContributorIn the link included in my reply you'll find an extended discussion of how to create and use the sequential numbers you need. And yes, the prefix should be in its own field, called something like "ClaimYear". Set its default value to Year(Date()). That will automatically put the current year in that field for all new records.
- Moritz1003Sep 04, 2023Copper ContributorOkay I got the part with the prefix now, my database will be used by not more than 10 people. In the link you sent there are 3 different approaches as far as I am concerned, is the one by Edward Leno sufficient? And if so could you maybe help me understand it better as these instructions are not enough for me to understand?