OctaFish
Verenigingslid
- Lid geworden
- 6 feb 2009
- Berichten
- 43.695
- Besturingssysteem
- Windows 10/MacOS
- Office versie
- Office 365
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:
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.
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
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: