Laufende Nummer für Berichte vergeben

In einer Access-Anwendung für eine Grundschule basieren Abfragen wie »alle Jungen der Klasse 1a« auf einer Tabelle mit allen Daten. Die Berichte enthalten die laufende Nummer des Datensatzes, der von 1 beginnend
aufsteigen soll. Wenn ich einzelne Datensätze lösche, kommt es in der Reihenfolge der Nummern zu Lücken, da Access die Datensätze nicht erneut
nummeriert. Wie kann ich das ändern?

Die laufende Nummer, die Sie bei der Definition Ihrer Tabelle als Datentyp ausgewählt haben, vergibt Access bei der Anlage eines Datensatzes nur ein einziges Mal automatisch. Sie können diesen Wert nicht mehr ändern. Deshalb eignet er sich für Ihre Anforderungen nicht.

Hilfe bringt die VBA-Funktion »currentRecordNr()«, deren Quelltext im Kasten weiter unten steht oder auf der Heft-CDliegt: CHIP-Code LFDNR. Damit bestimmen Sie die Position des Datensatzes in der Gruppe, die der Bericht momentan darstellt.



Public Function
currentRecordNr(ReportName As String) As Long
On Error GoTo
Err_currentRecordNr
Dim rpt As Report
Set rpt = Reports(ReportName)
currentRecordNr = rpt.CurrentRecord
Exit_currentRecordNr:
Exit Function
Err_currentRecordNr:
MsgBox Err.Description
Resume Exit_currentRecordNr
End Function




Um die Funktion einzusetzen, öffnen Sie ein Modul Ihrer Datenbank in der Entwurfsansicht und legen mit »Einfügen | Prozedur« die neue Funktion »currentRecordNr« an. Definieren Sie die Funktion als öffentlich und ergänzen Sie den VBA-Quelltext.

Im String-Parameter »ReportName« übergeben Sie den Namen des aktuellen Berichtes an die Funktion. Diese erzeugt nun das Objekt »rpt«, das auf den Bericht mit dem übergebenen Namen verweist. Mit der Eigenschaft »CurrentRecord« des Report-Objektes ermitteln Sie die Position des aktuellen Datensatzes in der Gruppe, die durch das Report-Objekt dargestellt wird. Diesen Wert gibt die Funktion zurück.

Nun müssen Sie den Rückgabewert noch im Detailbereich Ihres Berichtes ausdrucken: Erzeugen Sie ein neues Textfeld und öffnen Sie dessen »Eigenschaften«. Im Register »Alle« tragen Sie bei »Steuerelementinhalt« den Aufruf »=currentRecordNr(ôRptNameô)« ein. Dabei tauschen Sie »RptName« gegen den Namen Ihres Berichtes.