autonummering - ID

Status
Niet open voor verdere reacties.

Norbertus

Gebruiker
Lid geworden
26 jun 2007
Berichten
39
Ik heb een bestaande database waarin het sleutelveld een ID is met een autonummering.
Nu wil men een veld hebben waarin volgens het volgende formaat Projectnummer-volgnummer (P12345-01) ook een unieke sleutel wordt gemaakt.
Het projectnummer is bekend, alleen het volgnummer moet bepaald worden door het eerst volgende vrije nummer binnen het project.

Hoe maak ik zoiets?

Groet,
 
Wat is precies de insteek van het nummeren? Een nummerstijl als P12345-01 kan je op een aantal manieren verhogen.

Michel
 
Ik heb het nu als volgt opgelost, hierbij is wel het nadeel dat als men een record verwijderd een dubbele ID kan optreden.

Hebben jullie misschien nog een beter idéé?


Code:
Private Sub ID_Bepalen()
    Dim project As String
    Dim volgnummer As String
    Dim dbs As Database
    Dim sSQL As String
    Dim rst As Recordset2
    Dim Id As String
    Dim text As String
    
Id = Forms!meerwerk.Id.Value
    
If IsNull(Forms!meerwerk.Id_project_volgnr.Value) Then

    
    Set dbs = CurrentDb()
    sSQL = "Select * From meerwerk"
    sSQL = sSQL & " where Projectnr = '" & Me!Projectnr & "'"
       
    Set rst = dbs.OpenRecordset(sSQL)

    With rst
    .MoveLast
    .MoveFirst
    
    rst.FindFirst "Id = " & Id
    'rst.Index = "Id"
    
    text = "record " & (rst.AbsolutePosition + 1) & " of " & rst.RecordCount

    MsgBox (text)
    'volgnummer = rst.RecordCount
    volgnummer = rst.AbsolutePosition + 1
    rst.Close
End With

project = Me!Projectnr

Id_project_volgnr = project & "-" & volgnummer
MsgBox "volgnummer is bepaald"
Else
MsgBox "Er bestaat al uniek volgnummer"
End If

End Sub
 
Ik zou in de selectiequery het het volgnummer scheiden van het sleutelveld, zodat je een getal overhoudt. Dat kun je doen met de Instr functie, bijv:

Max(Mid([Projectnr];InStr(1;[Projectnr];"-")+1;Len([Projectnr])))

Daarmee bepaal je het hoogste nummer van de teller, en die kun je dan eenvoudig verhogen.

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan