collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 60
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13953
  • stats Beiträge insgesamt: 66365
  • stats Themen insgesamt: 8942
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Fortschrittsfenster zuckt :)  (Gelesen 666 mal)

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 701
Fortschrittsfenster zuckt :)
« am: März 02, 2018, 11:12:06 »
Hallo,

ich habe mir für die Bearbeitung größerer Datensätze, welche z.B. mit Do Loop Schleifen durchlaufen werden ein Fortschrittsfenster gebaut. Ein einfaches Fenster in dem steht "Fortschritt: x von y erledigt".

In einem Modul habe ich eine Sub, welche x und y aus der Do Loop Schleife empfängt und die Werte an das geöffnete Fortschrittsfenster weitergibt, in dem die Sub einfach das Textfeld aktualisiert (frm.txtFeld = Fortschritt: " & lngX & " von " & lngY & " erledigt."

Leider flackert dieses Fortschrittsfenster bzw. der Text mit jeder Änderung. Das sieht nicht professionell aus. Gibt es hier andere Ansätze wie das Flackern vermieden werden kann?
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7268
Re: Fortschrittsfenster zuckt :)
« Antwort #1 am: März 02, 2018, 11:15:01 »
Hallo,
Zitat
ich habe mir für die Bearbeitung größerer Datensätze, welche z.B. mit Do Loop Schleifen durchlaufen werden ein Fortschrittsfenster gebaut.
wahrscheinlich wäre eine Aktualisierungsabfrage besser geeignet als Schleifen. Sollte man in einer Datenbank eh vermeiden.
Und mit einer Abfrage braucht es dann wahrscheinlich keinen Balken mehr, weil die Abfrage das viel schneller erledigt. Und der Balken verlangsamt das Ganze noch zusätzlich, der braucht ja auch Ressourcen des Rechners.

Was wird denn bearbeitet in den Datensätzen ?
Gruß
Klaus
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 376
Re: Fortschrittsfenster zuckt :)
« Antwort #2 am: März 02, 2018, 11:52:42 »
Bei mir flackert da nichts. Nicht vergessen, DoEvents auszulösen direkt nach der Aktualisierung des Textfelds.

Fragen:
Wie wird das geöffnete Formular denn angesprochen? Wird das Fortschrittsformular evtl immer wieder neu aufgerufen?
Hängt an dem Textfeld vielleicht irgendein Ereignis?
 

Offline datekk

  • Access-Meister
  • ***
  • Beiträge: 701
Re: Fortschrittsfenster zuckt :)
« Antwort #3 am: März 07, 2018, 14:01:18 »
Ja, erstmal vielen Dank für Eure Antworten.

Eine Aktualisierungsabfrage bringt mich leider nicht in jedem Fall weiter denn diese kann ich ja nur anwenden, wenn Aktualisierungen in den Datentabellen nötig sind, welche auf reinem SQL basieren. Wenn z.B. Mailings zu senden sind oder eine größere Anzahl an Daten anderweitig zu bearbeiten sind, sind Recordsets notwendig, welche dann durchlaufen werden. Ich habe dieses Fortschrittsfenster bewusst nur für Arbeiten gewählt, die länger / lange dauern.

Ansonsten, das Textfeld hängt an keinem Ereignis, ein Do Events ist in der Schleife selbst enthalten. Das Formular wird auch nicht mit jedem durchlaufen der Schleife neu geöffnet, es wird nur das Feld aktualisiert.

Angesprochen wird das Form und das Feld aus einer Sub heraus via

frm = forms("frmFortschritt")
frm.TxtFeld = "Fortschritt: " & lngAktuell & " von " & lngGesamt & " erledigt."


« Letzte Änderung: März 07, 2018, 14:12:00 von datekk »
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 376
Re: Fortschrittsfenster zuckt :)
« Antwort #4 am: März 07, 2018, 14:22:34 »
Ich hab das mal folgendermassen ausprobiert, und mich stört kein Zucken.

Im Formular gibt es eine public Routine:
Public Sub Fortschritt(ByVal lngAktuell As Long, ByVal lngGesamt As Long)

  txt01.Value = "Fortschritt: " & lngAktuell & " von " & lngGesamt & " erledigt."
  DoEvents

End Sub

Im Modul habe ich folgende Testroutine:
Private Sub meineRoutine()

    DoCmd.OpenForm ("frmFortschritt")

    Dim frm As Object
    Set frm = Forms("frmFortschritt")
   
    Dim lngGesamt As Long
    lngGesamt = 100

    Dim lngAktuell As Long
    For lngAktuell = 1 To lngGesamt
   
        Debug.Print lngAktuell
       
        Call frm.Fortschritt(lngAktuell, lngGesamt)
       
        Warten (10) 'API-Funktion sleep aufrufen

    Next lngAktuell

End Sub

 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1227
Re: Fortschrittsfenster zuckt :)
« Antwort #5 am: März 07, 2018, 14:27:13 »
Das spärlich ausgefallene und unformatierte Code-Zitat stellt in der gezeigten Form schon einmal keine gültige VBA-Syntax dar und trägt kaum zur Ursachenfindung des Problems bei. Du müsstest also schon etwas mehr von Deiner Programmierkunst preisgeben, um eine ähnliche Szenerie nachstellen und analysieren zu können.
Grüße von der (⌒▽⌒)
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 376
Re: Fortschrittsfenster zuckt :)
« Antwort #6 am: März 07, 2018, 14:47:07 »
Am besten ein Label (Bezeichnungsfeld) nehmen und mit lbl.Caption den Inhalt aktualisieren. Dann flackert gar nichts.