?
Solved

Custom autonumber format in access

Posted on 2013-12-01
9
Medium Priority
?
3,164 Views
Last Modified: 2013-12-02
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
0
Comment
Question by:MAS
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 53

Expert Comment

by:Rgonzo1971
ID: 39689211
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
 
LVL 27

Author Comment

by:MAS
ID: 39689250
Thanks for your code.
Can you upload an access2007/2010 DB as I tried and ended up in error.

Appreciate your help
0
 
LVL 29

Accepted Solution

by:
IrogSinta earned 1000 total points
ID: 39689267
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
Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

 
LVL 53

Assisted Solution

by:Rgonzo1971
Rgonzo1971 earned 1000 total points
ID: 39689279
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
 
LVL 27

Author Comment

by:MAS
ID: 39689512
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
 
LVL 27

Author Closing Comment

by:MAS
ID: 39689523
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
 
LVL 29

Expert Comment

by:IrogSinta
ID: 39691451
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
 
LVL 27

Author Comment

by:MAS
ID: 39691791
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
 
LVL 29

Expert Comment

by:IrogSinta
ID: 39691830
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

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It’s the first day of March, the weather is starting to warm up and the excitement of the upcoming St. Patrick’s Day holiday can be felt throughout the world.
Traditionally, the method to display pictures in Access forms and reports is to first download them from URLs to a folder, record the path in a table and then let the form or report pull the pictures from that folder. But why not let Windows retr…
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question