Custom autonumber format in access

I am trying to have custom autonumber and found the below url helpful.

http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_23238522.html

Is there anyone who can help to make it in this format JBddmmyy-1 or JBddmmyyxx
eg. JB021213-01, JB021213-02, JB021213-03
or
eg. JB02121301, JB02121302, JB02121303
i.e each day it will start from 01 with that date format
eg. JB031213-01, JB031213-02, JB031213-03  for tomorrow


Is there anyone who can make the changes and upload it here or post the code here
LVL 29
MAS (MVE)Technical Department HeadAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
IrogSintaConnect With a Mentor Commented:
Here's another function you could try out:
Public Function GetNextSeq() As String
    Dim bSeq As Byte
    Dim sPrefix As String
    
    sPrefix = Format(Date, "JBddmmyy")
    bSeq = Nz(DMax("Right([ID],2)", "TableName", "[ID] LIKE '" & sPrefix & "*'"), 0) + 1
    GetNextSeq = sPrefix & Format(bSeq, "-00")
    
End Function

Open in new window

Just be sure that the datatype of your field is set to TEXT.

Ron
0
 
Rgonzo1971Commented:
Hi,

pls try

Function getNextNo() As String
Dim intMax As Integer, curVal, newVal, yr As String
theDate = Format(Date, "ddmmyy")
curVal = Nz(DMax("RandomNum", "Table1")) 'Change to your table
If Mid(curVal, 3, 6) = theDate Then
    If Len(curVal & "") > 0 Then
        intMax = Left(curVal, 2)
        newVal = theDate & "-" & Format(intMax + 1, "00")
        Else
        newVal = theDate & "- 01"
    End If
    Else
    newVal = theDate & " - 01"
End If
getNextNo = "JB" & newVal
End Function

Open in new window

Regards
0
 
MAS (MVE)Technical Department HeadAuthor Commented:
Thanks for your code.
Can you upload an access2007/2010 DB as I tried and ended up in error.

Appreciate your help
0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
Rgonzo1971Connect With a Mentor Commented:
Hi,

Corrected code

Function getNextNo() As String
Dim intMax As Integer, curVal, newVal, yr As String
theDate = Format(Date, "ddmmyy")
curVal = Nz(DMax("RandomNum", "Table1")) 'Change to your table
If Mid(curVal, 3, 6) = theDate Then
    If Len(curVal & "") > 0 Then
        intMax = Right(curVal, 2)
        newVal = theDate & "-" & Format(intMax + 1, "00")
        Else
        newVal = theDate & "-01"
    End If
    Else
    newVal = theDate & "-01"
End If
getNextNo = "JB" & newVal
End Function

Open in new window

EDIT

Function getNextNo() As String
Dim intMax As Integer, curVal, newVal, yr As String
theDate = Format(Date, "ddmmyy")
curVal = Nz(DMax("[RandomNum]", "Table1", "[RandomNum] Like 'JB" & theDate & "*'"))   'Change to your table
If Mid(curVal, 3, 6) = theDate Then
    If Len(curVal & "") > 0 Then
        intMax = Right(curVal, 2)
        newVal = theDate & "-" & Format(intMax + 1, "00")
        Else
        newVal = theDate & "-01"
    End If
    Else
    newVal = theDate & "-01"
End If
getNextNo = "JB" & newVal
End Function

Open in new window

Regards
0
 
MAS (MVE)Technical Department HeadAuthor Commented:
This is the error I am getting now
"You can't go to the specified record"

and the below line is highlighted in yellow
DoCmd.GoToRecord , , acNewRec
0
 
MAS (MVE)Technical Department HeadAuthor Commented:
Many thanks to both
I appreciate if you can explain what your code does.
Just want to know. Please explain when you are free.
0
 
IrogSintaCommented:
The following line formats the date as ddmmyy with JB at the beginning.  For instance, todays' date is stored in the variable sPrefix as JB021213:
sPrefix = Format(Date, "JBddmmyy")

This next line looks only at the records in your table where your ID field begins with the same prefix as what is stored in the variable (using the LIKE keyword and a wildcard '*').  It gets the maximum value of the last 2 characters and adds 1 to that value.  If there is no record yet for the day, the NZ function tells it to return a 0 (which ends up having a 1 added to it).
bSeq = Nz(DMax("Right([ID],2)", "TableName", "[ID] LIKE '" & sPrefix & "*'"), 0) + 1

Finally, this line returns the prefix concatenated with the next sequence number wich is formatted to show two numeric places and a dash at the beginning.
GetNextSeq = sPrefix & Format(bSeq, "-00")

Ron
0
 
MAS (MVE)Technical Department HeadAuthor Commented:
I am confused of which will check whether the record is there or no?

Can you post the code which will check the for record availability.
if the record there which coding adding +1
0
 
IrogSintaCommented:
If the record doesn't exist for that day, the DMax function will return a NULL value.  Hence Nz(DMax("Right([ID],2)", "TableName", "[ID] LIKE '" & sPrefix & "*'"), 0) will become Nz(NULL, 0).  The Nz function in this instance will default to 0 and since we always add 1 to the result, you will get a Sequence starting at 1 whenever the record doesn't exist.

Ron
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.