Avatar billede gylling Juniormester
16. april 2007 - 16:32 Der er 9 kommentarer og
1 løsning

Nyt auto nummering pr dato

Hej
Jeg har en tabel som inder holder et autonummerings felt. Nu vel jeg også gerne kunne oprette et felt der inderholdt Dato+001 og fortløbende pr.dag
Eks.
160407D01
160407D02
160407D03

170407D01
170407D02

osv....
Avatar billede mugs Novice
16. april 2007 - 17:06 #1
Ikke afprøvet:

Private Sub Form_Current()
Me.dato = Date
If Me.dato > DMax("[dato]", "Tabel1") Then
Me.nr = 1
Else
Me.dato = Date
Me.nr = DMax("[nr]", "Tabel1") + 1
End If
End Sub
Avatar billede terry Ekspert
16. april 2007 - 18:59 #2
THis example uses a table named test with a field named DateID which contains the generated ID. This field should be a unique key just to make sure that you cant get the same ID more than once.

Now make a query and name it qryNextNumber with the following SQL

SELECT Left([DateID],6) AS Dato, Max(CInt(Right([DateID],2))) AS MaxDateID
FROM Test
GROUP BY Left([DateID],6);

Now in the form where you enter new records in the BEFORE UPDATE event use the following code.

If Not Me.NewRecord Then Exit Sub

Dim nextID As Integer

    nextID = Nz(DLookup("MaxdateID", "qryNextNumber", "Dato = '" & Format(Date, "ddmmyy") & "'"), 0)

    Me.DateID = Format(Date, "ddmmyy") & "D" & Format(nextID + 1, "00")
Avatar billede terry Ekspert
16. april 2007 - 19:01 #3
And I am assuming that you want this format
160407D01

and NOT
160407001
(Dato+001)
Avatar billede terry Ekspert
16. april 2007 - 19:01 #4
you WILL get a problem if you add more than 99 records!!
Avatar billede gylling Juniormester
16. april 2007 - 21:19 #5
Hej Terry. Det virker tusind tak.
Avatar billede terry Ekspert
17. april 2007 - 08:31 #6
Thanks.
If you need help altering the code/SQL so that you can have more than 99 records per day then drop a comment,
Avatar billede gylling Juniormester
17. april 2007 - 16:09 #7
Hej Terry.
Hvis nu jeg skulle bruge dato som er tast ind i et felt "Kørsels dato" hvordan skal koden så se ud? Og nej jeg kommer ikke til at bruge over 99 pr dag
Avatar billede terry Ekspert
17. april 2007 - 16:43 #8
I have a text field on teh same form named txtDato

Change the code, and it assumes that the date is ALWAYS entered ddmmyy

Private Sub Form_BeforeUpdate(Cancel As Integer)


If Not Me.NewRecord Then Exit Sub

Dim nextID As Integer
Dim dato As Date


    dato = DateSerial(Right(Me.txtDato, 2), Mid(Me.txtDato, 3, 2), Left(Me.txtDato, 2))
   
    nextID = Nz(DLookup("MaxdateID", "qryNextNumber", "Dato = '" & Format(dato, "ddmmyy") & "'"), 0)

    Me.DateID = Format(dato, "ddmmyy") & "D" & Format(nextID + 1, "00")


End Sub
Avatar billede gylling Juniormester
17. april 2007 - 22:16 #9
Hej Terry.
Det virker ikke. Har bytte txtDato ud med kørselsdato og for en fejl. "Compile error: Method or data member not found" felt som jeg gemme data i er et tekst felt
Avatar billede terry Ekspert
17. april 2007 - 22:51 #10
is it possible for you to send me your dB and I'll take a look tomorrow?
ekspertenATsanthell.dk
change AT to @
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester