Seriennummer für Tabellenfelder generieren (Access 97)

30.12.2003

Frage:

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:

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

Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.