factuurnummer

Status
Niet open voor verdere reacties.

paul.jacobs

Gebruiker
Lid geworden
25 feb 2004
Berichten
424
Hallo

Ik wil een factuurnummer maken met een opbouw van : 02.001
Dus 02: het jaar
001: eerste factuur van dat jaar
Nu loop ik te zoeken en het schiet niet er op maar heb het idee dat het simpel kan .
Iemand een idee?
:8-0:
 
Kun je iets specifieker zijn, waarin wil je deze opbouw hebben?? In een tabel of zo? Of wil je een soort autonummering hebben?
 
Sorry, ben wat te vaag klop… ik heb een kasboek en daarin heb ik een boekingsnummer. Het is nu een autonummer maar ik wil dat veranderen in een nummer dat bestaat uit de laatste twee nummers van het jaar (04) en het aantal boeknummers van dat jaar) dus op 1 januari moet het 05.001 zijn

Het moet dus in het tabel transactie komen te staan
 
Moet wanneer je nieuwe gegevens invoert het nummer verschijnen of wordt deze bepaald aan de hand van een datum? (dat ie per jaar telt hoeveel het er zijn en dan voor het nieuw record zelf bepaald welk jaar en de hoeveelste factuur deze is?)
 
Wat ik nu heb is dit : ik voor een datum in van de transactie
Daaruit weet hij ook welk jaar hij moet rekenen
Zit zelf te denken aan een query en dan een dmax +1
Het lastige komt als je de eerste aanmaakt: null +1 is null
En ik wil dus 002 en niet 2
 
Maak een tabel met daarin de velden fldJaar en fldLaatstUitgegevenNummer.

Maak vervolgens twee functies in VBA:
- Eén om het eerstvolgende nummer op te halen uit de tabel en de tabel bij te werken (het nummer met één ophogen). Dit gebaseerd op het jaar, dat jaar kun je het beste als parameter aan de functie meegeven.
- Eén om een nieuw jaar aan te maken in de tabel. Deze functie roep je dan aan vanuit de eerste functie.

Op het moment dat je zeker weet dat je factuur gemaakt moet worden roep je de eerste functie aan. Deze geeft je dan het juiste factuurnummer dat je vervolgens in je factuur tabel kunt registeren.
 
OK, daar komt ie.

Plak de volgende code in een module:

Option Compare Database

Public Sub subCreateTableFactuur()
Dim strSQL As String
Dim db As Database

strSQL = ""

strSQL = strSQL & "CREATE TABLE tblFactuurNr" & vbCrLf
strSQL = strSQL & "("
strSQL = strSQL & "fldJaar integer, " & vbCrLf
strSQL = strSQL & "fldVolgnr integer" & vbCrLf
strSQL = strSQL & ")"

Set db = CurrentDb
DoCmd.SetWarnings False
db.Execute strSQL, dbFailOnError
DoCmd.SetWarnings True
Set db = Nothing
End Sub

Public Function fnGetNextFactuurNummer(mintJaar As Integer) As Integer
Dim strSQL As String
Dim db As Database
strSQL = ""

'Meegegeven jaar mag niet voor 2000 liggen
If mintJaar < 2000 Then
fnGetNextFactuurNummer = 0
Exit Function
End If

'Controleren of opgegeven jaar al bestaat
If Not fnCheckYearExists(mintJaar) Then
fnGetNextFactuurNummer = 0
Exit Function
End If

'Ophalen en registreren eerstvolgende factuurnummer voor dat jaar.
'Eerst geregistreerde factuurnummer met 1 ophogen.
strSQL = "UPDATE tblFactuurNr" & vbCrLf
strSQL = strSQL & "SET fldVolgnr = fldVolgnr + 1" & vbCrLf
strSQL = strSQL & "WHERE fldJaar = " & CStr(mintJaar) & ";"
Set db = CurrentDb()
DoCmd.SetWarnings False
db.Execute strSQL, dbFailOnError
DoCmd.SetWarnings True
Set db = Nothing
'Ophalen factuurnummer
fnGetNextFactuurNummer = DMax("fldVolgnr", "tblFactuurNr", "fldJaar = " & CStr(mintJaar))

End Function

Public Function fnCheckYearExists(mintJaar As Integer) As Boolean
Dim strSQL As String
Dim db As Database

On Error GoTo fnCheckYearExists_Error

strSQL = ""
fnCheckYearExists = False

If DCount("fldJaar", "tblFactuurNr", "fldJaar = " & CStr(mintJaar)) < 1 Then
strSQL = "INSERT INTO tblFactuurNr" & vbCrLf
strSQL = strSQL & "VALUES(" & CStr(mintJaar) & ", 0);"
Set db = CurrentDb()
DoCmd.SetWarnings False
db.Execute strSQL, dbFailOnError
DoCmd.SetWarnings True
Set db = Nothing
End If

fnCheckYearExists_OK:
fnCheckYearExists = True
Exit Function

fnCheckYearExists_Error:
fnCheckYearExists = False
Exit Function
End Function


Maak nu eerst de tabel tblFactuurNr door de subroutine subCreateTableFactuur uit te voeren.

Je kunt nu de functie fnGetNextFactuurNummer(param) gebruiken om het eerstvolgende factuurnummer op te halen. De parameter param moet dan het jaartal bevatten van de betreffende factuur.
Simpel toch?
 
het is al even oud maar is er iemand die mij hiermee kan helpen ik krijg het niet helemaal klaar
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan