collapse

* Benutzer Info

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

* Wer ist Online

  • Punkt Gäste: 79
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13909
  • stats Beiträge insgesamt: 65765
  • stats Themen insgesamt: 8870
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Ereignis "Beim Anzeigen" wird zweimal durchlaufen  (Gelesen 666 mal)

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1885
Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« am: Januar 01, 2018, 01:05:27 »
Hallo,

in meiner access2003-Datenbank (bestehend aus Hauptformular mit mehreren Unterformularen, die wiederum Unterformulare haben) habe ich festgestellt, dass in einigen Unterformularen das Ereignis "Beim Anzeigen" zweimal durchlaufen wird.

Beim Debuggen zeigt sich, dass im Hauptformular ("Beim Anzeigen") von der Anweisung Me.MeinUfo.Requery das Ufo aufgerufen wird und ich dort im Ereignis "Beim Anzeigen" lande {bis hierhin ist alles wie erwartet abgelaufen}. Am Ende der dort stehenden Anweisungen werden aber noch einmal die kompletten Anweisungen dieses Ereignisses durchlaufen, ohne dass irgendeine andere Sub aufgerufen wurde.

Aufgrund meines Debuggens schliesse ich aus, dass Datensatzänderungen für das zweimalige Anfeuern des "Beim Anzeigen"-Ereignisses verantwortlich sind (weder "bei Geändert" noch bei "Vor Aktualisierung" noch bei "Nach Aktualisierung" wurde etwas durchlaufen).

In http://www.ms-office-forum.net/forum/showthread.php?t=268051 wird erwähnt, dass diese Macke nur unter a2003 und nicht unter a2007 auftritt.

In http://www.office-loesung.de/ftopic402886_0_0_asc.php wird ein Verfahren beschrieben, wie diese Macke unter a2003 zu vermeiden ist.
In modifizierter Fassung bringt das folgende das gewünschte Ergebnis, dass das Ereignis nur einmal durchlaufen wird:

Private Sub Form_Current()
    Static Datensatz_id As Long
   
    If Datensatz_id = 0 Or Datensatz_id <> Nz(Me.id, 0) Then
        Datensatz_id = Nz(Me.id, 0)
       
... eigentliche Routinen für dieses Ereignis

    End If   
End Sub

Meine Frage für das neue Jahr:
Welche Anregungen, Hinweise, Tipps habt Ihr für den weiteren Einsatz von a2003,
   um die eigentliche Ursache für das zweimalige Durchlaufen zu beseitigen und
   um auf das Therapieren mit den obigen Zeilen zu verzichten?

Harald
« Letzte Änderung: Januar 01, 2018, 10:24:43 von bahasu »
Servus
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1165
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #1 am: Januar 01, 2018, 01:45:06 »
Wenn nicht die bedingte Formatierung für das Verhalten verantwortlich ist, dürfte es sich vermutlich hinter dem verborgenen Code verstecken. :)
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: bahasu

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23264
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #2 am: Januar 01, 2018, 09:45:51 »
Hallo,

diese "Macke" stelle ich auch bei >= A2010 fest.

Es dürfte sich  hier wohl um ein systembedingtes (und m. E. notwendiges) Aktualisieren der Formulare handeln, wenn in irgendwelchen UFOs (abhängige) Daten manipuliert wurden.

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1736
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #3 am: Januar 02, 2018, 12:37:51 »
Hallo,
Zitat
Am Ende der dort stehenden Anweisungen werden aber noch einmal die kompletten Anweisungen dieses Ereignisses durchlaufen, ohne dass irgendeine andere Sub aufgerufen wurde.
Wahrscheinlich  wird da noch mal ein Requery auf das HFo abgesetzt,
welches auf den 1. DS positioniert und dadurch das Current-Ereignis
auslöst.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: bahasu

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1885
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #4 am: Januar 02, 2018, 13:25:07 »
Hi Ekkehard,

Zitat
Hallo,
Wahrscheinlich  wird da noch mal ein Requery auf das HFo abgesetzt

Habe Deinen Hinweis zum Anlass genommen, versuchsweise im UFO ein requery zum Hauptformular zu machen. In diesem Fall war ich laut Debuggen im Hauptformular-Ereignis "Beim Anzeigen" gelandet, was bislang nicht zu beobachten war.

Abgesehen von diesem Versuch hatte ich bewusst in den UFO's kein requery zum Hauptformular eingebaut.

Gibt es ansonsten beim Debuggen eine Möglichkeit zu verfolgen, was das Programm zwischen dem Ende und dem erneuten Start des UFO-Ereignisses "Beim Anzeigen" macht? Zur Zeit sehe ich nur, dass nach Erreichen vom Ende direkt noch einmal der Start angesprungen wird.

Harald
« Letzte Änderung: Januar 02, 2018, 14:16:14 von bahasu »
Servus
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1736
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #5 am: Januar 02, 2018, 15:28:37 »
Hallo Harald,
Wenn du kein .Requery drin hattest, kann es daran auch nicht gelegen
haben. Dein Versuch zeigt aber die Richtigkeit meiner Aussage.
Wenn's dann aber kein .Requery gibt, gibt es vielleicht eine andere
Anweisung, die einen Datensatzwechsel im HFo erzeugt, - .Find
und .Bookmark würden mir spontan einfallen.
Der Debugger lässt IMO keine Zeile aus.
gruss ekkehard

P.S.:
Zitat
dass Datensatzänderungen für das zweimalige Anfeuern des "Beim Anzeigen"-Ereignisses
Änderungen lösen das Current-Ereignis nicht aus, nur der Wechsel
zu einem anderen DS (auch zu einem neuen).
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1165
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #6 am: Januar 02, 2018, 15:48:43 »
@Ekkehard

wenn jemand den (schlechten) Einfall hat, in Form Current einen Wert an ein gebundenes Steuerelement zuzuweisen oder wenn die bedingte Formatierung im Unterformular von einem berechneten Wert im Hauptformular abhängt oder zyklische Abhänmgigkeiten zwischen Haupt- und Unterformular bestehen, tritt so ein Phänomen vermutlich auf. :)

Mit einer Formular- oder statischen Variablen könnte man zumindest den zweiten Durchlauf stoppen, falls sich die Ursache (warum auch immer) nicht abstellen lässt.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: bahasu

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1736
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #7 am: Januar 02, 2018, 15:59:09 »
Das kann nur Harald selber wissen was da passiert/wie das aufgebaut
ist, - ich stellte mit meinem bescheidenen Wissen nur Vermutungen an.
Die Lösung mit der statischen Variablen hat er ja.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1885
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #8 am: Januar 02, 2018, 18:44:14 »
Hi,

wenn jemand den (schlechten) Einfall hat, in Form Current einen Wert an ein gebundenes Steuerelement zuzuweisen oder wenn die bedingte Formatierung im Unterformular von einem berechneten Wert im Hauptformular abhängt oder zyklische Abhänmgigkeiten zwischen Haupt- und Unterformular bestehen, tritt so ein Phänomen vermutlich auf. :)

Diese Ursache schließe ich aus, da ich im Current-Ereignis keine Werte zuweise.
Bedingte Formatierung setze ich ein, diese aber nur auf das aktuelle Formular bezogen: also nicht auf ein drüber- oder drunterliegendes.

Vielleicht wird es ein Lösungsansatz sein, dass ich im UFO solange den VBA-Teil in allen möglichen Proceduren entferne, bis es zum erwarteten Verhalten kommt.

Danke für diese und die anderen Hinweise.
Harald
Servus
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1885
Re: Ereignis "Beim Anzeigen" wird zweimal durchlaufen
« Antwort #9 am: Januar 04, 2018, 14:00:22 »
Hi,

habe ein älteres Frontend geladen, dort alles gelöscht und dann aus dem aktuellen Frontend, in dem die "Macke" auftrat,  alles importiert.
Das Ergebnis: Zur Zeit werden die OnCurrent-Ereignisse in den UFO's - wie eigentlich erwartet - nur EINMAL durchlaufen.

Mal abwarten, welche Überraschung als nächstes kommt.

Harald
Servus