Fortschrittsbalken in Access

Der Fortschrittsbalken zeigt an, wie weit die Arbeit bereits fortgeschritten ist

Ersten Kommentar schreiben
Stand: 2. Mai 2011

In der Statuszeile

Gerade bei großen Datenmengen oder langwierigen Aktionen in Access ist es sinnvoll, den Benutzer darüber zu informieren, wie weit die Arbeit bereits vorangeschritten ist. Da bietet sich eine grafische Darstellung an: der Fortschrittsbalken. Access bringt bereits alles mit, um ihn in der Statuszeile oder auf dem Formular anzuzeigen. Lorenz Hölscher bringt die gut versteckten Befehle dafür ans Tageslicht.

Den Fortschrittsbalken in der Statuszeile anzeigen

Der blaue Fortschrittsbalken in der Statuszeile lässt sich mit der SysCmd-Funktion erzeugen, die insgesamt so ein bisschen die Reste aller übriggebliebenen Access-Aufgaben gesammelt hat. Ihre tatsächliche Aufgabe übergeben Sie mit der jeweiligen Konstante des ersten Parameters.

Code im Formular statt in Standard-Modul

Sie könnten die folgende Prozedur ohne Einschränkungen auch in einem Modul mit F5 ausführen, aber dann wäre der VBA-Editor aktiv und Sie sähen die Statuszeile von Access nicht. Damit es dort trotzdem funktioniert, darf der VBA-Editor nicht im Vollbild sein und als nächstes Programm dahinter muss Access angezeigt werden, so dass Sie dessen Statuszeile gleichzeitig sehen.

Erstellen Sie zum Testen in einer leeren Datenbank ein leeres Formular namens frmFortschrittStatuszeile mit einer Schaltfläche namens btnStatuszeile wie im folgenden Bild:

Ein einfaches Testformular

Schreiben Sie in die btnStatuszeile_Click-Prozedur der Schaltfläche diesen Code hinein. Die Prozedur ist völlig nutzlos, sie enthält im Grunde nur eine inhaltsleere Schleife und zeigt dafür den Fortschrittsbalken an:

Private Sub btnStatuszeile_Click()
    Dim lngZaehler As Long
    Const clngMaximum = 100000

    SysCmd acSysCmdInitMeter, "Bitte warten...", clngMaximum
    For lngZaehler = 1 To clngMaximum
        SysCmd acSysCmdUpdateMeter, lngZaehler
    Next

    SysCmd acSysCmdRemoveMeter
End Sub

Die Statuszeile beginnt mit der Initialisierung, wofür der erste Parameter auf acSysCmdInitMeter gestellt werden muss. Der zweite Parameter nennt den Text, der anschließend unverändert immer vor dem Fortschrittsbalken angezeigt wird.

Wechselnde Texte sind nicht möglich

Selbstverständlich möchten Sie vor dem Fortschrittsbalken einen dynamischen Text anzeigen, der beispielsweise den Fortschritt in Prozent-Werten oder die gerade bearbeitete Datei nennt. Das geht nicht! Falls Sie versuchen, den Text auch innerhalb der Schleife mittels acSysCmdInitMeter zu setzen, bleibt der blaue Balken immer nur am Anfang stehen, es dauert mehr als zehn Mal so lang und flackert ganz furchtbar.

Auch der Einsatz von SysCmd acSysCmdSetStatus, "neuer Text" in der Schleife führt direkt zu einem Laufzeitfehler, weil anschließend der Fortschrittsbalken ganz gelöscht (und durch diesen Text ersetzt) ist.

Im dritten Parameter übergeben Sie den Maximalwert für die 100%-Anzeige. Für die For/Next-Schleife müssen Sie selbstverständlich den gleichen Maximalwert setzen. Mit dem zweiten Aufruf von SysCmd und dem Parameter acSysCmdUpdateMeter wird der Fortschrittsbalken ständig aktualisiert. Der blaue Balken verlängert sich automatisch im Verhältnis von lngZaehler zu clngMaximum (dies kann statt einer Konstanten auch eine Variable sein).

Als Mitglied können Sie diesen Beitrag weiterlesen!

Werden Sie Mitglied und testen Sie akademie.de 14 Tage lang kostenlos!

In den ersten 14 Tagen haben Sie Zugriff auf alle Inhalte auf akademie.de, außer Downloads. Sie können in dieser Zeit ohne Angabe von Gründen stornieren. Eine E-Mail an service@akademie.de genügt. Nur wenn Sie Mitglied bleiben, wird der Mitgliedsbeitrag nach Ende der 14tägigen Stornofrist abgebucht.

Ich bin bereits Mitglied
Jetzt Mitglied werden und akademie.de 14 Tage kostenlos testen
Ich entscheide mich für folgende Zahlungsweise:
14 Tage Stornorecht:
Ich kann meine Mitgliedschaft in den ersten 14 Tagen jederzeit formlos stornieren, z.B. per E-Mail an service@akademie.de.

Inhalt

Downloads zu diesem Beitrag

Newsletter abonnieren