Nummer genereren in acces 2003

Status
Niet open voor verdere reacties.

cosimaro

Gebruiker
Lid geworden
15 okt 2008
Berichten
94
Wie kan er mij helpen? Ik ben nieuw op dit forum en een leek in acces 2003.
Via dit forum heb ik al veel kunnen oplossen met hetgeen ik bezig ben maar nu loop ik kompleet in de mist. Heb al een punthoofd en grijze haren.

Ik heb een tabel "Bestellingen"
Hierin de volgende velden met gegevenstype:

SELL-IN: tekst
STOCK : Ja/Nee
VIRTUELE OVERNAME: Ja/Nee
FYSIEKE OVERNAME: Ja/Nee
CODE MODEL: Nummeriek
KLANT: Tekst
TYPE:Tekst
CHASSISNUMMER:Tekst
ISIS:Numeriek
SELLOUT DATUM=Datum ingavce: dd/mm/yyyy

Code model is gelinkt aan een tabel "Code Model"

Code: Numeriek
Omschrijving: Tekst

Bij het openen van het formulier: Bestellingen wordt automatisch een nummer gegeven van een nieuwe bestelling telkens +1

Sell-In nummer is als volgt samengesteld: letter,volgnummer,streepje,jaartal 2cijfers.
Voorbeeld : D001-08

De letter is veranderlijk: D,E of H maar ieder letter heeft een volgnummer 1,2,3,.... en dit zou dan per jaar opnieuw moeten beginnen.

In tabel: Code model heb ik hetvolgende staan: 1 = Daily/ 2= Eurocargo/ 3=Heavy
Van zodra we in het formulier bestellingen op het veld SELL-In komen(dus On Focus) zou dus een nieuw nummer moeten worden gegeven indien aan volgende criteria worden voldaan:

Stock=Nee
Virtuele overname=Nee

Want deze mogen niet op de lijst verschijnen.

Fysieke overname=Ja MOET op de lijst verschijnen maar mag GEEN nummer krijgen.

SELLOUT datum is de datum vanaf wanneer deze bestelling op de lijst moet opgenomen worden is niet altijd de besteldatum, dewelke nu gelijk staat aan systeemdatum)

Om de lijst te genereren heb ik een dialoogvenster aangemaakt op SELLOUT datum zodanig dat er een periode kan ingegeven worden; Dit werkt wel goed.

Ik hoop dat er iemand mij kan helpen want ik zie het niet meer zitten.

m.vr.gr.
 
kan iedere prefix letter beginnen met een eigen range of moet de range doorlopen ongeacht de letter?

In het eerste geval maak je een tabel waarin je de hoogste waarde per letter opslaat. in het andere geval is 1 veld genoeg met de hoogste waarde.

Verder moet je je vragen compact houden. Zorg dat de regel die ertoe doet eindigt met een vraagteken.

HTH:D
 
Guus,

Elke prefix heeft zijn aparte nummering dus als volgt:

D001-08 E001-08 H001-08
D002-08 E002-08 H002-08

Voor volgend jaar wordt dit dan automatisch

D001-09 E001-09 H0014-09
 
Laatst bewerkt:
Onderstaande code roep je aan om voor de code model een nieuw volgnummer te krijgen.
Daar waar de code stopt door het stop statement moet je nog wat doen.
Code:
Public Function NewNumber(strCodeModel As String) As String
'Het Code model is 1 = Daily/ 2= Eurocargo/ 3=Heavy 'Daarvan komt alleen de eerste letter binnen.
'Input: D, E of H
'Die letter zoeken we op in de tabel PARAM we krijgen een volgnummer terug die hoort bij die letter.
'We halen ook het jaartal op, want op 1 januari moet die verhoogt worden en de volgnummer gereset.
'PARAM: mnemonic, value, description 'allemaal string velden
    
    Dim strRet        As String
    Dim intJaartal    As Integer
    Dim intVolgnummer As Integer

    intJaartal = Nz(DLookup("value", "param", "memonic = 'VolgnummerJaar'"), 0) 'Geen jaar gevonden, default 0
    
    If intJaartal <> Year(Date) Then
        intVolgnummer = 0
        ' UpdateVolgnummer voor alle codemodellen in de param tabel, die moet je nog maken
        Stop
        ' Schrijf nieuwe jaar weg, die moet je nog maken
        Stop
    Else
        intVolgnummer = Nz(DLookup("value", "param", "memonic = '" & strCodeModel & "'"), 0) 'Geen volgnummer gevonden, default 0
    End If
    
    'Volgnummer met 1 verhogen
    intVolgnummer = intVolgnummer + 1
    
    'Schrijf het nieuwe volgnummer weg voor strCodemodel, die moet je nog maken
    Stop
    
    ' Alle waarden aan elkaar plakken
    strRet = strCodeModel & Format(intVolgnummer, "00#") & "-" & Format(Year(Date), "0#")

    NewNumber = strRet

End Function
HTH:D
 
Onderstaande code roep je aan om voor de code model een nieuw volgnummer te krijgen.
Daar waar de code stopt door het stop statement moet je nog wat doen.
Code:
Public Function NewNumber(strCodeModel As String) As String
'Het Code model is 1 = Daily/ 2= Eurocargo/ 3=Heavy 'Daarvan komt alleen de eerste letter binnen.
'Input: D, E of H
'Die letter zoeken we op in de tabel PARAM we krijgen een volgnummer terug die hoort bij die letter.
'We halen ook het jaartal op, want op 1 januari moet die verhoogt worden en de volgnummer gereset.
'PARAM: mnemonic, value, description 'allemaal string velden
    
    Dim strRet        As String
    Dim intJaartal    As Integer
    Dim intVolgnummer As Integer

    intJaartal = Nz(DLookup("value", "param", "memonic = 'VolgnummerJaar'"), 0) 'Geen jaar gevonden, default 0
    
    If intJaartal <> Year(Date) Then
        intVolgnummer = 0
        ' UpdateVolgnummer voor alle codemodellen in de param tabel, die moet je nog maken
        Stop
        ' Schrijf nieuwe jaar weg, die moet je nog maken
        Stop
    Else
        intVolgnummer = Nz(DLookup("value", "param", "memonic = '" & strCodeModel & "'"), 0) 'Geen volgnummer gevonden, default 0
    End If
    
    'Volgnummer met 1 verhogen
    intVolgnummer = intVolgnummer + 1
    
    'Schrijf het nieuwe volgnummer weg voor strCodemodel, die moet je nog maken
    Stop
    
    ' Alle waarden aan elkaar plakken
    strRet = strCodeModel & Format(intVolgnummer, "00#") & "-" & Format(Year(Date), "0#")

    NewNumber = strRet

End Function
HTH:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan