factuurnummer genereren

Status
Niet open voor verdere reacties.

Peer44

Gebruiker
Lid geworden
25 jan 2008
Berichten
224
Hallo,

ben aan het kijken om factuurnummers te kunnen genereren, heb een opzet gemaakt.
In de tabel nummerreeksen wil ik eerst het nummer aanmaken;
in de query "Qry Nummerreeksen", bepaal ik wat het nieuwe factuurnummer moet worden.

Op het formulier "facturatie" heb ik een button gezet als ik hierop klik wil ik een nieuwe factuur gaan aanmaken, bedoeling is dan dat het factuurnr, uit de query overgezet wordt naar de tabel factuurkop.
Kom er helaas met de vba code niet aan uit......

mvg PeterBekijk bijlage facturatie.rar
 
Wat een ingewikkelde manier :). Ik gebruik een functie die op het formulier als Standaardwaarde wordt aangeroepen, zodat je bij het maken van een nieuw record altijd een correct nummer krijgt. En sla je het record niet op, of gooi je het laatste record weg, dan is er niks aan de hand. Kortom: faalt nooit!
Ik heb overigens niet naar jouw db kunnen kijken (kan geen rar openen op het werk) dus ik sla even een slag naar de opmaak van je nummer. Ik gebruik deze variant: 2016-0984; 2016-0985;2017-0001;2017-0002 etc.

Code:
Function FactuurNummer() As Long
Dim strSQL As String, sWaarde As String, arr As Variant, NewNum As Long

    strSQL = "SELECT TOP 1 FactuurNummer FROM tFacturen ORDER BY FactuurNummer DESC"
    With CurrentDb.OpenRecordset(strSQL)
        If Not .BOF And Not .EOF Then sWaarde = !FactuurNummer.Value
        .Close
    End With
    If sWaarde & "" = "" Then GoTo GeenNummer
    arr = Split(sWaarde, "-")
    If arr(LBound(arr)) = Year(Date) Then
        NewNum = arr(UBound(arr)) + 1
    Else
        NewNum = 1
    End If
    FactuurNummer = arr(LBound(arr)) + Right("0000" & NewNum, 4)
    Exit Function
    
GeenNummer:
    FactuurNummer = Year(Date) & "-0001"

End Function
 
Kijk, zonder je db te zien had ik het helemaal bij het rechte eind :). Ik heb de functie aangepast naar jouw situatie, en hij werkt volgens mij prima.

Code:
Function factuurnummer() As Long
Dim strSQL As String, sWaarde As String, arr As Variant, NewNum As Long

    strSQL = "SELECT TOP 1 FactuurNummer FROM factuurkop ORDER BY FactuurNummer DESC"
    With CurrentDb.OpenRecordset(strSQL)
        If Not .BOF And Not .EOF Then sWaarde = !factuurnummer.Value
        .Close
    End With
    If sWaarde & "" = "" Then GoTo GeenNummer
    If Left(sWaarde, 2) = Right(Year(Date), 2) Then
        NewNum = CInt(Right(sWaarde, 4)) + 1
    Else
        NewNum = 1
    End If
    factuurnummer = Left(sWaarde, 2) + Right("0000" & NewNum, 4)
    Exit Function
    
GeenNummer:
    factuurnummer = Right(Year(Date), 2) & "-0001"

End Function
Op je formulier zet je nu in het tekstvak <factuurnummer> als standaardwaarde de formule =factuurnummer() en je bent klaar.
 
Bedankt, dat helpt!

als ik nu de tabel leeg maak en opnieuw ga beginnen krijg ik een foutmelding,
"Fout 13, typen komen niet met elkaar overeen..."
De foutopsporing gaat naar "geennummer:" onderaan in de vba code.

als ik een eerste waarde handmatig ingeef loopt het wel door..
 
Ben er uit op de laatste regel moet het min teken eruit;
Code:
GeenNummer:
    factuurnummer = Right(Year(Date), 2) & "0001"

Bedankt, kan weer verder:thumb:
 
Sorry, ik had de code inderdaad niet volledig aangepast. Zelf gebruik ik een koppelteken in het nummer, zodat ik jaar en nummer beter kan scheiden. Ieder zijn meug :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan