Office: (Office 2010) Nur im Einzelschrittmodus ok.?

Helfe beim Thema Nur im Einzelschrittmodus ok.? in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Liebe Access-Profis, kann mir jemand erklären, warum dieser Code im Einzelschritt-Modus funktioniert, im normalen Programmablauf aber nicht? Code: If... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von gromax, 13. September 2020.

  1. Nur im Einzelschrittmodus ok.?


    Liebe Access-Profis,

    kann mir jemand erklären, warum dieser Code im Einzelschritt-Modus funktioniert, im normalen Programmablauf aber nicht?

    Code:
    Für jede Hilfe bin ich - wie immer - sehr dankbar!

    Alles Gute
    gromax

    :)
     
  2. Hallo gromax,

    funktioniert nicht, ist ja ungemein aussagekräftig!

    Wenn du eine Anwort auf deine Frage haben möchtest, mußt du die auch so stellen, daß man anworten kann.

    Ulrich
     
  3. Hallo Ulrich, da hast Du natürlich recht; sorry!
    Das Problem ist dabei folgendes:
    Von meinem Formular aus möchte ich auf ein anderes Formular (frm_AVAntrag) zugreifen und dieses dortige UFO (sfm_AV_Einsaetze) beim Eintreffen einer bestimmten Bedingung aktualisieren.
    Nun generiere ich diese Bedingung und das Ufo wird nicht aktualisiert?!
    Setze ich aber einen Haltepunkt in die Bedingungszeile und arbeite den Code folgend schrittweise ab, so wird dieses Ufo aktualisiert - so wie ich es haben möchte!

    Dazu habe ich keine Erklärung.

    Den gesamten Vorgang habe ich ausführlichst unter dem Thema "Formular aktualisieren" dargestellt; hierzu habe ich aber keine Antwort bekommen, so dass ich weiter experimentiert habe und bei der hier gestellten Fragestellung hängen geblieben bin.

    Viele Grüße
    gromax
     
  4. Nur im Einzelschrittmodus ok.?

    Servus gromax,
    einmal ins Blaue geraten:
    Bei einer HF-/UFO Kombination werden immer zuerst die UFOs geladen,
    bevor das HF geladen wird.
    Könnte das ein Problem sein?
     
    Ohrkester, 16. September 2020
    #4
  5. Hallo gromax,

    stellt sich die Frage, wo die Bedingung geprüft wird, dann könnte man sich das ganze Gedöns mir Form!... sparen und würde das Unterformular über das SubForm-Steuerelement direkt ansprechen, und ob diese Bedingung auch True liefert.

    Entspricht diese DB deiner hochgeladenen DB in dem anderen Thread?

    Gruß Ulrich
     
  6. Hallo Ohrkester,

    ich denke nicht, dass dies das Problem ist; die Formulare stehen ja bei der Eingabe geladen nebeneinander. Doppelklick im einen Formular generiert die zunehmende Summe im Unter-UFO des anderen Formulars.
    Erst wenn diese Summe gleich der Zielzahl im UFO des anderen Formulars ist, sollte das weitere UFO in eben diesem anderen Formular aktualisiert werden.

    Danke für Deine Nachfrage!

    Viele Grüße
    gromax
     
  7. Hallo Ulrich,

    den Ort der Prüfung habe ich mehrfach gewechselt und ausprobiert:
    - Im ersten Formular mit dem Ereignis 'Doppel-Klick' und nachfolgend dem Übertrag in das Unter-Ufo des anderen Formulars (mit diesem "Forms!_Gedöns")
    aber auch
    - im ersten UFo des Zielformulars (mit Me.Parent!-Syntax)
    - im AfterUpdate oder im Dirty-Ereignis des Summenfeldes 'txtSummeLwh'
    - im AfterUpdate oder im Dirty-Ereignis des Summenfeldes 'txtSummeAVHIN_Lwh' innerhalb des UnterUFo des Zielformulars
    - im Form_AfterUpdate des UnterUFo des Zielformulars.

    Ja, dieses Problem ist innerhalb der hochgeladenen DB im anderen Thread.

    Dass eine If-Then-Bedingung innerhalb einer normalen Laufzeit nicht abgearbeitet, im Einzelschritt-Modus aber dann doch umgesetzt wird, ist mir wirklich schleierhaft.

    Vielen Dank für Euere Lösungssuche und das Hineindenken in meine Problematik!

    Alles Gute
    gromax
     
  8. Nur im Einzelschrittmodus ok.?

    Hallo Ohrkester, hallo Ulrich,

    in einem Excel-Portal habe ich eine Lösung gefunden; jetzt funktioniert es - wie gewünscht!

    Ich habe eine allgemeingültige Prozedur mit folgendem Code ...
    Code:
    ...ausgelagert und rufe diese nun von dem veranlassenden Formular frm1 auf.

    Wenn jemand noch Zeit findet, wäre ich für eine Erklärung dankbar. Warum muss den hierzu eine "Verzögerung" eingebaut werden?

    Ansonsten nochmals Dank an Euch für die Zeit des Hineindenkens!

    Macht's gut
    gromax
     
  9. Hallo gromax,

    normalerweise ist das nicht nötig, mit Wartezeiten zu arbeiten. Davon mal ganz abgesehen, würde der von dir gezeigte Code nicht laufen (-> until z = 10 )

    Aber du sprichst von Summen und hier wäre es jetzt interessant zu wissen, wie diese Summen gebildet werden. Ausdrücke werden nämlich erst später asynchron zum VBA Code im Formular bewertet und deshalb können diese Summen nicht in verschiedenen Formularen per VBA-Code für Bedingungen verwendet werden. Das kann funktionieren, wenn das Timing stimmt, muß es aber nicht. Generell sollte man davon aus den o.a. Gründen Abstand nehmen und den Programmablauf anders organisieren.

    Vielleicht ist darin dein Problem begründet und das würde auch erklären, warum das im Debugger läuft und zur Laufzeit nicht.

    Grüße Ulrich
     
  10. Hallo Ulrich,

    vielen Dank für Dein Nachhaken.
    Die Summe wird in einem Textfeld eines UnterUnterFormular mit dem Ausdruck =Summe([AVHIN_Lwh]) gebildet. Diese Summe wird in das "darüberliegende Unterformular" übernommen ("=[sfm_AVAntragListe02]![txtSummeAVHIN_Lwh]") und dort mit der Eingabe in einem Textfeld [EIN_Lwh] verglichen.
    Sollten die Summe und die Eingabe gleich sein, so sollte der Eintrag in einem "parallelen UnterFormular" abgebildet werden.
    Näheres könntest Du in dem Thread "Formular aktualisieren" anschauen und ausprobieren - nur, wenn Du Zeit hast; ich habe mein Anliegen dort sehr umfänglich beschrieben.

    Den Code habe ich natürlich korrigiert (z --> intw) und er läuft. Sicherlich nicht die beste Lösung, aber ich habe keine andere zur Hand!

    Alles Gute
    gromax
     
Thema:

Nur im Einzelschrittmodus ok.?

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden