Tipps & Tricks: Detail

Hier finden Sie zu dem ausgewählten Tipp oder Trick die detaillierten Angaben.

Wenn in den folgenden Erläuterungen Texte wie MsgBox formatiert sind, handelt es sich um konkret einzugebende Inhalte wie VBA-Code oder die Eingabe von Werten. Menüs wie Datei Speichern sind wie hier zu sehen formatiert. Schaltflächen oder Registerkarten auf Dialogen werden wie Menüs behandelt.

Alle Tipps sind nach bestem Wissen geprüft, aber selbstverständlich ohne Gewähr. Sollten Sie doch einen Fehler darin entdecken, würden wir uns freuen, wenn Sie uns per E-Mail Bescheid sagen.

Nachdem Sie eventuell im Tipp "Zeilen fortlaufend nummerieren mit SQL" schon gelesen haben, dass bei vielen Datensätzen ganz erhebliche Laufzeiten entstehen, liegt die Versuchung nahe, dieses Problem per VBA-Function zu lösen. Tatsächlich gibt es dazu eine Lösung:

Option Explicit
 
Dim mlngNr As Long
 
Function StartNr() As Long
'ohne Parameter für einmaligen Aufruf
mlngNr = 0
End Function
 
Function LfdNr(varEgal As Variant) As Long
'muss Parameter haben, damit es mehrfach aufgerufen wird
LfdNr = mlngNr
mlngNr = mlngNr + 1
End Function

Dabei machen sich die Funktionen jeweils zunutze, dass sie ohne Parameter nur einmal pro Abfrage, mit Parameter aber für jede Zeile neu aufgerufen werden. Über diesen Trick können Sie den Startwert der Modul-öffentlichen Long-Variablen mlngNr vorgeben. Tatsächlich wird jede Zeile mit einer laufenden Nummer versehen, wenn Sie die folgende SQL-Anweisung ausführen:

SELECT StartNr() AS x, LfdNr([KundenNr]) AS Nummer, tblAdressen.*
FROM tblAdressen
ORDER BY tblAdressen.KundenNr;

Die Anzeige der ersten Datenseite ist sogar schon nach 1 Seite fertig, es ist also um ein Vielfaches schneller als die SQL-Variante. Das sieht auch noch gut aus, solange Sie vorwärts durch die Datensätze blättern. Beim Hin- und Herblättern werden Sie aber feststellen, dass Access bei jedem Anzeigen eines Datensatzes weiterzählt, also sogar beim Wechsel zwischen Access und einem anderen Programm.

Die Zeilen sind daher zwar innerhalb einer Seite fortlaufend nummeriert, aber beim Wechsel zu anderen Datensätzen ist das Ergebnis eher unkalkulierbar. Als Lösungen bleiben daher für die meisten Anlässe die langsame und sichere SQL-Variante oder die schnelle und auf Berichte beschränkte "LaufendeSumme"-Variante aus den anderen Tipps.