Montag, 20. November 2017

Home
Tipps
Bücher
Software
News / Links
Hilfe
Impressum

Sponsored by
QualityHosting

Frage und Antwort
Seriennummer für Tabellenfelder generieren (Access 97)
von Sven-Oliver Schibat
Problem:

Ich möchte eine Seriennummer ermitteln, die sich aus Jahreszahl und fortlaufender Nummer zusammensetzt.

Wie kriege ich Access dazu, zum einen bei jedem Datensatz weiterzuzählen und vorher zu ermitteln, ob noch immer das gleiche Jahr läuft, oder ob es sich um ein neues Jahr handelt und dann wieder bei 1 zu beginnen?

Antwort der TriniDat GmbH:

Eine fortlaufende Nummer mit Jahreszahl, die sich beim neuen Jahr wieder zurücksetzt, kann man mit einer VBA-Funktion relativ leicht realisieren.

Legen Sie zunächst ein Textfeld mit einer Länge von mindestens 8 Zeichen in Ihrer Rechnungs-Tabelle (beispielsweise tblRechnungen) an. Für die Rechnungsnummern könnte dieses Feld folgendes Format haben: 00023-99 Diese Nummer stellt also die dreiundzwanzigste Rechnung im Jahr 1999 dar. Um die letzte Rechnungsnummer im aktuellen Jahr zu ermitteln, setzen wir die Max-Funktion in einem Recordset ein:

Dim db As Database
Dim rstLetzteRechNr As Recordset
Dim strJahr As String

strJahr = Right$(Year(Date), 2) ' Aktuelles Jahr, z.b. "99"
Set db = CurrentDb

Set rstLetzteRechNr = db.OpenRecordset("SELECT Max(Left([RechnungNr],5)) AS LetzteRechNr FROM tblRechnungen HAVING Right([RechnungNr],2)='" & strJahr & "';", dbOpenSnapshot)

Im Recordset-Feld LetzteRechNr befindet sich die allerletzte Rechnungsnummer des laufenden Jahres, z.B. "23". Wenn noch keine Rechnungsnummer in diesem Jahr vorhanden ist, enthält LetzteRechNr den Wert Null. Um die nächste Rechnungsnummer zu ermitteln, addieren Sie 1 zur letzten Rechnung und formatieren Sie das Ergebnis zusammen mit dem Jahr:

If IsNull(rstLastRechNr!LastRechNr) Then

    'erste Rechnung hat die Nummer 1
    NeueRechnungNr = Format$(1, "00000-") & strJahr

Else

    'nächste Rechnung wird um 1 erhöht
    NeueRechnungNr = Format$(rstLetzteRechNr!LetzteRechNr + 1, "00000-") & strJahr

End If

Die Variable NeueRechnungNr enthält dann die formatierte Nummer Ihrer nächsten Rechnung. Diese Paar Zeilen VBA-Code können Sie wunderbar in eine Funktion beispielsweise mit dem Namen GetNeueRechnungNr einwickeln. Sobald Sie eine neue Rechnung anlegen, lassen Sie die Rechnungsnummer automatisch generieren, z.B. im Ereignis Vor Eingabe Ihres Rechnungformulars:

Private Sub Form_BeforeInsert(Cancel As Integer)

    Me!RechnungNr = GetNeueRechnungNr()

End Sub


Ein Service der TriniDat Software-Entwicklung GmbH - Am Wehrhahn 45 - 40211 Düsseldorf

  Suche
Suche starten
  Service
Leserbrief / Frage zu Access
Kontakt
  NewsLetter
NewLetter bestellen
NewsLetter abbestellen
  Partner-Seiten
HyperLink

www.trinidat.de


HyperLink

www.fulldotnet.de