Welkom op het forum van startpagina!

Dit forum staat op alleen-lezen. Je kan hier informatie zoeken en oude berichten terugvinden, maar geen nieuwe berichten plaatsen.

Naar overzicht van alle forums

Volgnummer

  • Eric

    Hoi,

    Ik heb een vraag met betrekking tot volgnummers. Ik heb heel wat hierover gevonden op het forum, maar niks dat voor mij duidelijk en bruikbaar is.

    Ik wil een volgnummer genereren voor orders. Deze moet er uit zien zoals:

    SO-ORD-04x001

    SO-ORD- is tekst.

    04 is het jaartal

    x is tekst

    001 is het daadwerkelijke volgnummer

    Tevens is de vraag wanneer het 1-1-2005 (en op 1-1-2006 etc.) is, dat dan het volgnummer weer opnieuw met 001 begint.

    Wie heeft hier een duidelijk voorbeeld voor? of kan me vertellen hoe ik hier aan moet beginnen.

    Alvast bedankt,

    Eric

  • Eric

    Niet echt een voorbeeld.

    Het volgnummer moet plukbaar zijn met andere woorden het moet alfabetisch zijn dit bereik je door een nummer te genereren die oplopend is.Een goed voorbeeld is SO-ORD-041020001

    hierbij =04 jaar

    10=maand

    20=dag

    001 =volgnummer

    Dus als x bij jou niet altijd hetzelfde is dan lukt het niet.

    Wat je doet

    In je formulier bij het event Before_update stuur je een routine aan

    Private Sub Form_BeforeInsert(Cancel As Integer)

    me.nummer=GetHnum

    End Sub

    In de module maak je een functie aan :

    Function GetHnum () as string

    -1-stuur een query aan die het hoogste nummer uit de tabel voor je haalt (max)

    dit levert bijvoorbeeld op SO-ORD-041020800

    -2- daarna controleer je of het jaar van de geretourneerde waarde gelijk is aan het

    huidige jaar. Is dit niet het geval dan retourneer je SO-ORD-05020001

    Als dit wel het geval is verhoog je het nummer met 1 dus SO-ORD-041020801

    -3- Retourneer de waarde gethnum=nieuwewaarde

    End function

  • Eric

    Hoi,

    Alleen op het rapport is SO-ORD-04x nodig, dit kan ik er ook zo in zetten, momenteel heb ik achter SO-ORD-04x het OrderID staan. Het orderID wil ik vervangen door een volgnummer.

    Het enigste is dat ik totaal niet weet hoe dit in VBA etc. moet.

    Dus mij lijkt dat ik in de tabel orders een veld Volgnummer moet maken, dit veld ook in een formulier zetten. En dan één of andere code er voor maken, bij de gebeurtenis Voor Bijwerken, dat bij het veld volgnummer hoord.

    Maar hoe wat voor ‘code’het moet zijn zou ik niet weten…

    Dus als je me hiermee kunt helpen, graag!

    Eric

  • Eric B

    Wat is de tabelnaam en de veldnaam van het volnummer dan bak ik hem even voor je.

  • Eric P

    tabelnaam: inkooporders

    veldnaam: volgnummer (gegevenstype: tekst, geindexeerd: Ja, geen duplicaten)

    in iedergeval al hartstikke bedankt!

    eric

  • Eric B

    'In je formulier kopieren :

    'kontroleer daarna even of er bij de eigenschappen

    'van het formulier tabblad Gebeurtenis

    'bij voor invoegen staat

    'is dit niet het geval klik dan op de puntjes

    Private Sub Form_BeforeInsert(Cancel As Integer)

    dim ret as string

    ret=MKHignum

    if len(ret) > 0 then

    me.volgnummer=ret

    else

    MsgBox “Fout opgetreden bij het aanmaken van het ordernummer”, _

    vbOKOnly + vbExclamation, “Probleem”

    cancel=true

    end if

    End Sub

    'In de module kopieren :

    'als je dit in de module hebt gekopieerd

    'kijk dan in het menu Extra/verwijzingen of de verwijzing Microsoft

    'DAO 3.6 object library is aangevinkt (nummer kan verschillen( is versie))

    '=======================================

    'Private Function MKHignum() As String

    '

    'Bepaal het hoogste nummer

    'MKHignum Retourneert het hoogste nummer

    '=======================================

    Private Function MKHignum() As String

    On Error GoTo MKHignum_Err

    Dim db As Database

    Dim thequery As String

    Dim therec As Recordset

    Dim mw As String

    Dim vlc As String

    Dim fnr As String

    vlc = “SO-ORD-” 'voorloopcode

    Set db = CurrentDb

    thequery = “SELECT Max(OrderId) AS MaxRecnum FROM inkooporders;”

    Set therec = db.OpenRecordset(thequery)

    If therec.RecordCount > 0 Then

    If Not IsNull(therec(“MaxRecnum”)) Then

    mw = therec(“MaxRecnum”)

    mw = Right$(mw, 5) 'nieuw jaar?

    If Val(Left$(mw, 2)) <> Year(Date) - 2000 Then

    fnr = “001”

    Else 'verhoog nummer

    fnr = Right$(“000” & Val(Right$(mw, 3)) + 1, 3)

    End If

    Else 'lege tabel

    fnr = “001”

    End If

    Else

    fnr = “001”

    End If 'retourneer de waarde

    MKHignum = vlc & Format(Date, “yy”) & fnr

    '—————————————

    'Err_exit

    '—————————————

    MKHignum_Err_exit:

    CloseRecset therec

    CloseDB db

    Exit Function

    '—————————————

    'Err_handler

    '—————————————-

    MKHignum_Err:

    Resume MKHignum_Err_exit

    End Function

    '=======================================

    'Sub CloseRecset()

    '

    'Close en release recordset

    '=======================================

    Sub CloseRecset(trec As Recordset)

    On Error Resume Next

    trec.Close

    Set trec = Nothing

    End Sub

    '=======================================

    'Sub CloseDB()

    '

    'Close en release recordset

    '=======================================

    Sub CloseDB(datb As Database)

    On Error Resume Next

    datb.Close

    Set datb = Nothing

    End Sub

  • Eric P

    Hoi Eric B,

    Ik heb alles gedaan zoals gezegd. Maar ik krijg steeds de MsgBox “Fout opgetreden bij het aanmaken van het ordernummer”.

    Geen idee wat ik hieraan moet doen. jij wel?

    Eric P