Anzeige Bearbeitungsstatus während VBA-Code-Ausführung in Access

mareinki

Aktiver Benutzer
Beiträge
47
Hallo

Wenn ich bspw. in einem Formular eine Bearbeitung von vielen Datensätzen anstoße (zB Neuberechnung oder Textumwandlung) wäre es sinnvoll eine Anzeige zu haben an der der Benutzer sieht dass Access "arbeitet" und nicht irgendwo steckt.

Mit MsgBox geht das ja nicht, denn da müsste in einer Schleife je Datensatz OK gedrückt werden.

Ausreichen würde mir, dass ich nach Starten der Bearbeitung (Klick auf Schaltfläche-Button in einem Formular) ein Feld des gerade bearbeiten Datensatzes (zB ID) angezeigt wird (würde also von 1 hinaufzählen) oder besser eine Anzeige: " x von y Datensätzen bearbeitet"

Grüße
Markus
 
Werbung:
Was bearbeitest Du denn da?
Und was für Schleifen sind das?

Es kann Gründe geben, Schleifen über Datensätze zu machen, Cursor sozusagen, aber das macht man erst, wenn man es muss. Vorher macht man alles mit Updates und einer passenden Where Bedingung oder man bearbeitet gar nichts, sondern selektiert dynamisch die Rohdaten plus berechnete Spalten, einfach so, jedes Mal wo sie angezeigt, reported werden. Damit sind sie automatisch auch immer aktuell.
 
Einen einfachen Zähler im Formular kannst Du so realisieren.
Code:
Private Sub ButtonZaehl_Click()
Dim i As Long
   For i = 1 To 10000
     Me.Zaehler = i
     DoEvents
   Next
End Sub
Entscheidend dabei ist "DoEvents" was die Kontrolle an andere evtl. vorhandenen Prozesse kurzzeitig abgibt, sodass das Formular wieder den Event Current bekommt und somit der nächste Zähler in das Zählerfeld übernommen wird.

Bedenke aber, dass das eine Verarbeitung entsprechend verlangsamt. Ausserdem funktioniert das nur in VBA-Schleifen, wenn Datensätze sequentiell durchgelesen werden.
 
Hallo
Danke, das funktioniert in For-Schleifen.

Gibt es vergleichbares auch für Do Until Schleifen?

Also wenn ich Datensätze sequentiell abarbeite, wie zB

Code:
recordset_xy.MoveLast
Do Until recordset_xy.BOF
       irgendeine Operation mit Datensätzen
      Ausgabe Datensatz_ID oder eine s Zählers am Formular oder einem Meldungsfensters
     i=i+1
     Me.Zaehler = i
     'DO Events  bringt Fehlermeldung Syntaxfehler
  recordset_xy.Update
  recordset_xy.MovePrevious
Loop
recordset_xy.Close

Mit Do Events bekomme ich eine Fehlermeldung
Ohne Do Events zeigt er nach Abarbeitung der Do Until Schleife nur den Endwert von i im Formular an

Grüße
Markus
 
Werbung:
Noch ein kleiner Hinweis zum Close von Recordsets.
Close schließt nur das Recordset, gibt aber die Objectvariable nicht frei, was unter Umständen zu Problemen führen kann.
Besser ist es am Ende der Prozedur zu schreiben:

Code:
set recordset_xy = Nothing
 


Schreibe deine Antwort....
Zurück
Oben