Autonummering DMax text veld

Status
Niet open voor verdere reacties.
Ik snap dat ik het moet vervangen. Maar welk gedeelte moet ik vervangen?

Ik heb bij standaard waarde al beide geprobeerd:
"=VolgNummer("FacNr";"tblFactuur")"
en
"=VolgNummer()"
 
De functie moet worden vervangen. Jouw laatste code in bericht #17 bevat nog de oorspronkelijke code van de functie. Die is niet meer; vervangen dus door de nieuwe code. Je eerste regel in de standaardwaarde is goed, want je moet twee parameters meegeven: veld en tabel. En dat doe je.
 
Oke, bleek dat ik ADO 2.8 niet geladen had, nu werkt het redelijk. Ik heb toch nog een vraag, hij doet de factuurnummering als volgt:
14-0001
bij de volgende factuur werd het:
15-0001
Ik neem aan dat 14 en 15 het jaar hoort te zijn, en 0001 het factuurnummer dat steeds veranderd?
Bij mij veranderd dus het eerste ipv het tweede getal. Hoe krijg ik dit goed?

En ik zou het graag zo willen hebben:
2013-0001, 2013-0002
oftewel het volledige jaar weergeven.
 
Oke, bleek dat ik ADO 2.8 niet geladen had, nu werkt het redelijk. Ik heb toch nog een vraag, hij doet de factuurnummering als volgt:
14-0001
bij de volgende factuur werd het:
15-0001
Ik neem aan dat 14 en 15 het jaar hoort te zijn, en 0001 het factuurnummer dat steeds veranderd?
Bij mij veranderd dus het eerste ipv het tweede getal. Hoe krijg ik dit goed?

En ik zou het graag zo willen hebben:
2013-0001, 2013-0002
oftewel het volledige jaar weergeven.

Helaas werkt ook dit nu niet meer, ben even opnieuw begonnen. In het veld in het form waar de factuur moet staan, staat nu: #Fout

Zonder iets er bij waar de fout zit. Weet je hoe dit kan?

De code:

Code:
Function Volgnummer(FacNr As String, tblFactuur As String) As String
Dim strSQL As String
Dim arr As Variant
Dim Nummer As Integer, Jaar As Integer
Dim rst As ADODB.Recordset
Dim cnConn As ADODB.Connection

    strSQL = "SELECT TOP 1 [" & FacNr & "] FROM [" & tblFactuur & "] " _
        & " WHERE ([" & FacNr & "] Is Not Null) ORDER BY [" & FacNr & "] DESC"
    
    Set cnConn = CurrentProject.Connection
    Set rst = New ADODB.Recordset
    rst.Open strSQL, cnConn, adOpenKeyset, adLockOptimistic, adCmdText
    With rst
        If Not .BOF And Not .EOF Then sWaarde = .Fields(0).Value
        .Close
    End With
    
    If sWaarde & "" = "" Then GoTo GeenNummer
    arr = Split(sWaarde, "-")
    Jaar = CInt(arr(0))
    If Jaar = Year(Date) Then
        Nummer = CInt(arr(1)) + 1
    Else
        Nummer = 1
    End If
    Volgnummer = Jaar & Format(Nummer, "-0000")
    Exit Function
    
GeenNummer:
    Volgnummer = Year(Date) & "-0001"

End Function

Foutmelding:
Fout.jpg

Verwijzingen:
Verwijzingen.jpg

Alvast bedankt!
 
Oke, hele domme fout: Gegevenstype in de tabel stond nog op nummeriek ipv tekst.

Toen werkte het nog niet, nu heb ik gewoon alle bestaande facturen verwijderd, en het werkt!! :D :D :D :D

Nog één iniminivraagje dan toch:
Wanneer het volgende jaar ingaat, is dan het eerste factuur nummer:
2014-0001 of gaat hij door waar hij gebleven is, dus bijvoorbeeld in 2013 was de laatste factuur 2013-0210, gaat hij dan door met: 2014-0211 ?
 
De functie zoekt het laatste record van het actieve jaar op. Is het 2014, en maak je een nieuwe, dan is er geen laatste en begint hij opnieuw. Dat is ook de charme natuurlijk van zo'n functie, anders kun je net zo goed met Autonummering werken. Dat gebeurt in dit stukje:
Code:
    If Jaar = Year(Date) Then
        Nummer = CInt(arr(1)) + 1
    Else
        Nummer = 1
    End If
Hij kijkt dus of de waarde in Jaar gelijk is aan het huidige jaar (Year(Date)). Nu is dat zo (2013=2013), op 2 januari niet (2014 <> 2013).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan