automatisch code genereren. (soort Autonummering)

Status
Niet open voor verdere reacties.
Omdat we graag zelfwerkzaamheid stimuleren bij HelpMij, hier een voorbeeldje. Deze functie maakt een volgnummer op basis van de laatste twee cijfers van een jaartal, en begint netjes opnieuw te tellen bij een nieuw jaar. Met een paar simpele ingrepen is de query makkelijk uit te breiden naar meer voorwaarden.
Eerst de functie maar:
Code:
Function fFactuurNummer() As String
Dim i As Integer
Dim strSQL As String

    strSQL = "SELECT DISTINCT TOP 1 [FactuurNummer] FROM Factuur WHERE ((Left([FactuurNummer], 2) = " _
       & Right(Year(Date), 2) & ")) ORDER BY [FactuurNummer] DESC;"
    With CurrentDb.OpenRecordset(strSQL)
        If .RecordCount = 0 Then
            fFactuurNummer = Right("00" & Right(Year(Date), 2), 2) & "01"
        Else
            .MoveFirst
            i = Right(!FactuurNummer, 2)
            fFactuurNummer = Right("00" & Right(Year(Date), 2), 2) & Right("00" & i + 1, 2)
        End If
        .Close
    End With
End Function
Wat je moet doen is het nummer opzoeken/opbouwen op basis van verschillende delen in het uiteindelijke nummer dat je gaat maken. Daarbij is het aan te bevelen om alle elementen in de nummers te scheiden met een vast teken, bijvoorbeeld het - teken. In je format yy-LL00000-00 zitten er te weinig voor een mooie procedure; ik zou eerder zoiets doen: yy-LL-00-000-00. Dus [PNr_jaar]-[PNr-protocolgroep]-[PNr_Internprotocol_ID]-[PNr_Nummer]-[PNr_volgnummer] is veel makkelijker te maken dan [PNr_jaar]-[PNr-protocolgroep];[PNr_Internprotocol_ID][PNr_Nummer][PNr_volgnummer].
In het eerste geval kun je met SPLIT de elementen simmpel in een array zetten en vergelijken. In het tweede geval zul je met MID moeten werken.
 
Laatst bewerkt:
Hallo Allemaal,

Heel erg bedankt voor jullie hulp en tijd. maar van mijn baas mag ik me niet meer bezig houden met automatisch genereren van nummers. Ik vind het heel spijtig. sorry maar wel bedankt.
:confused:
groet allard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan