Office: (Office 2013) Access 2013; VBA; Unterformular stürzt ab

Helfe beim Thema Access 2013; VBA; Unterformular stürzt ab in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; rs.Close steht aber nicht aktiv im Code, oder? Das müsste auch weg. Anbei ist noch einmal eine bei mir lauffähige Version. Ich kommentierte nur 2x... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Crashbreaker, 29. September 2015.

  1. Access 2013; VBA; Unterformular stürzt ab


    rs.Close steht aber nicht aktiv im Code, oder? Das müsste auch weg.

    Anbei ist noch einmal eine bei mir lauffähige Version.
    Ich kommentierte nur 2x wks.Close aus und verwendete zum Auslesen der Werte Recordset statt RecordsetClone.

    Wenn diese Beispiel auch nicht wie erwartet funktioniert, bitte beschreiben, was erwartet wird.

    Anm.: Das der Code einige unnötige Verrenkungen macht, spielt bezüglich Fehlersuche keine Rolle.

    mfg
    Josef
     
    Josef P., 5. Oktober 2015
    #61
  2. Doch - bei deiner Version auskommentiert. Aber auch nach auskommentieren bekomme ich dann den beschriebenen Fehler (unzulässiger Wert), weil trotz aller Prüfungen auf nothing und .EOF und .BOF das Recordset wohl irgendwo ins Leere greift ...
    maike
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  3. .. das greift ins Leere, sobald dem Recordset der Workspace geschlossen wird. (Beachte: wks.Close steht 2x im Code)

    mfg
    Josef
     
    Josef P., 5. Oktober 2015
    #63
  4. Access 2013; VBA; Unterformular stürzt ab

    *stupid Jetzt hab' ichs glaube ich.
    Wenn ein neuer Datensatz bearbeitet oder angelegt wird,
    dann aktualisiert oder gespeichert wird,
    und danach - ohne vorher im Ufo einen neuen DS zu markieren - Bearbeiten aufgerufen wird,
    dann geht es in die Wüste.
    Aber auch nicht immer ...
    (wks.close ist raus - 2x mal, deine funktionierende Version)
    maike
     
  5. Hallo!

    Das ist ein interessanter Fehler.
    Die Fehlermeldung sagt aus, dass es keinen aktuellen Datensatz gibt, obwohl einer markiert dargestellt wird.

    Abhilfe schafft:
    Code:
    als Ersatz für
    Code:
    mfg
    Josef
     
    Josef P., 5. Oktober 2015
    #65
  6. Jippiiee, Josef hatte recht gehabt. Nach seinem Vorschlag funktioniert es.

    Hier die Änderung:
    Code:
     
    Crashbreaker, 5. Oktober 2015
    #66
  7. Ja genau die Fehlermeldung habe ich sehr oft bekommen und konnte mir da nichts einreimen.

    als Ersatz für
    Code:
    Wieso sollte man den "Set .." im "with" deklarieren?
    Wozu dient das mit dem Bookmark?
    Muss der auch dahin?

     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Crashbreaker, 5. Oktober 2015
    #67
  8. Access 2013; VBA; Unterformular stürzt ab

    Code:
    Muss du nicht. Es kommt auf die Bookmark-Synchronisation an. (Datensatz-Zeiger vom Formular an das Recordset weitergeben).
    Du kannst auch schreiben:
    Code:
    Anm.: Das ist nur eine Maßnahme um das Problem zu umgehen. Warum es überhaupt zu diesem Problem kommt, kann ich nicht erklären.
    Für mich sieht das so aus, als würde das Formular-Recordset nirgendwohin zeigen.
    Allerdings steht es auch nicht auf EOF oder BOF und enthält Datensätze. Wohin kann dann ein Datensatzzeiger noch zeigen? => Auf den zuvor aktualisierten nicht mehr vorhandenen Datensatz? Das wäre noch verständlich, wenn zuvor kein Requery durchgeführt worden wäre. Aber das lief durch. Daher würde ich beim Aufrufen von Recordset nach einem Requery den im Formular aktiven Datensatz erwarten.


    Du hast irgendwo geschrieben, dass du mit anderen Programmiersprachen gute Kenntnisse hast. Welche Sprachen verwendest du?
    (Dann kann ich es vielleicht besser beschreiben, falls ich diese Sprachen auch ein wenig kenne und Vergleiche verwenden kann.)


    Kurz zu VBA und "Objekten"
    In VBA (VB6) werden grundsätzlich nur Referenzen in den Objektvariablen gespeichert.
    Wenn du eine neue Instanz willst, ist die mit New zu erzeugen bzw. muss über eine Factory-Prozedur o. ä. erzeugt werden.

    Code:
     
    Josef P., 5. Oktober 2015
    #68
  9. Muss du nicht. Es kommt auf die Bookmark-Synchronisation an. (Datensatz-Zeiger vom Formular an das Recordset weitergeben).
    Du kannst auch schreiben:
    Code:
    Anm.: Das ist nur eine Maßnahme um das Problem zu umgehen. Warum es überhaupt zu diesem Problem kommt, kann ich nicht erklären.
    Für mich sieht das so aus, als würde das Formular-Recordset nirgendwohin zeigen.

    Ach so okay, klingt gut, werde ich gleich mal ausprobieren.
    Müsste ich dann auch statt .Controls dann eher .Fields benutzen denke ich mal oder?

    Okay klingt interessant und verstehe das. Allerdings wäre es denn dann besser, wenn man den Requery nicht setzt oder an eine andere stelle setzt, wo es besser aufgehoben ist?
    Wo und wie könnte ich dann nach EOF oder, und nach BOF prüfen?

    Ja habe die Programmiersprachen: C/C++, Java, PHP, MySQL und noch paar andere Studiert. Sehr intensiv und experte bin ich in PHP versiert. Arbeite damit mitlerweile schon über 10 Jahre und zu 100% nur OOP ...

     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Crashbreaker, 5. Oktober 2015
    #69
  10. Hallo!

    Die Requery-Anweisungen in deinem Code passen meiner Meinung nach schon.
    Im Formular werden auch die richtigen Daten angezeigt.
    Kurz: das Problem ist nicht dein Code sondern die Innereien von Access.Form.Recordset

    Aber du wirst dich sowieso bald daran gewöhnen, dass man bei der Arbeit mit Access hin und wieder nachhelfen muss, obwohl man nicht versteht, warum das sein muss. *biggrin.gif*

    Dann war ich mit Referenz im bekannten Sprachgebrauch. *wink.gif*


    Genau!
    Im gezeigten Fall ist das noch gut erkennbar, aber wenn man einmal Code schreibt und nicht daran denkt wird die Fehlersuche lustig werden.
    => Modulvariablen bis auf wenige Ausnahmefälle (bei denen es nicht anders möglich ist) vermeiden.

    In C++ hast du doch auch bestimmt nur die Methoden-übergreifenden Variablen im Klassenkopf, oder? (Stichwort: Kapselung)

    Und beachte: wenn du in VBA ein Standardmodul (kein Klassenmodul) verwendest, gibt es davon nicht mehrere Instanzen. Somit können sich Aufrufe von Funktionen aus Standardmodulen überlagern.
    Daher versuche ich solche Funktionen nur durch deren Parameter mit den benötigten Daten zu versorgen und keine Zwischenergebnisse usw. in Modulvariablen auszulagern.

    Bezüglich OOP:
    Da wirst du mit VBA keine Freude haben. Du kannst zwar objektbasierend Programmieren, aber Vererbung wirst du lange suchen. Es ist nur möglich ein Interface festzulegen.

    mfg
    Josef
     
    Josef P., 5. Oktober 2015
    #70
  11. Code:
    Das funktioniert leider so nicht. Bekomme fehler und durch Debuggen springe ich genau auf die Zeile mit "rs.Bookmark".
    Habe ich etwas übersehen?
     
    Crashbreaker, 5. Oktober 2015
    #71
  12. Wann kommt dieser Fehler?
    Meiner Meinung nach sollte das nur ein Problem sein, wenn du im Formular auf einem neuen (noch nicht gespeicherten) Datensatz stehst.

    Code:
    .. wobei du überlegen könntest, ob du überhaupt Dateneingaben im Unterformular erlauben willst.


    BTW: deine Update-SQL-Anweisung ist für Jet-SQL passt nicht.
    Du musst die Datumswerte im passenden Format liefern und nicht als String.
    Code:
    .. allerdings würde ich die Parameter für die Datumswerte auch als Datum und nicht als String in der Prozedur umsetzen.

    mfg
    Josef
     
    Josef P., 5. Oktober 2015
    #72
  13. Access 2013; VBA; Unterformular stürzt ab

    .. wobei du überlegen könntest, ob du überhaupt Dateneingaben im Unterformular erlauben willst.

    Also will irgendwie nicht funktionieren. Der knallt mir immer an dieser Stelle ab:
    Code:
    .. allerdings würde ich die Parameter für die Datumswerte auch als Datum und nicht als String in der Prozedur umsetzen.

    Ah super, das ist ein guter Hinweis. Habe ich gar nicht dran gedacht.
    Dann war ich mit Referenz im bekannten Sprachgebrauch.

    Oh ja das stimmt, Referenzen und Zeiger kenne ich bereits aus C/C++ ;-)


    Ah das ist etwas mies. Denn ich war kurz davor hier Klassen zu erzeugen und das ganze als OOP zu programmieren.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Crashbreaker, 5. Oktober 2015
    #73
  14. Hallo!

    Wie sieht deine aktuelle DB aus?
    Probier bitte einmal die letzte von mir hochgeladene mdb aus und für die Bookmark-Zeile ein.

    Ansonsten:
    Du könntest auch RecordsetClone ausprobieren, da die Datensatzzeiger durch die Bookmark-Zeile synchronisiert werden.

    Anm.: Ich gehe derzeit davon aus, dass du am funktionierenden Code deines Ansatzes interessiert bist. Einfacher kannst du dein Vorhaben nämlich mit den Access-üblichen Mitteln umsetzen. Ein Vorteil von Access ist nämlihc, dass man relativ viel im Bereich Datenzugriff und Datenänderung ohne besondere Programmierung umsetzen kann.

    Klassen und Interfaces kannst du schon einsetzen. Du kannst nur keine Vererbung u. ä. nutzen.

    mfg
    Josef
     
    Josef P., 5. Oktober 2015
    #74
  15. Hallo Josef,

    sorry das ich gestern mich nicht mehr gemeldet habe aber habe einen sehr wichtigen Anruf bekommen und war dann sehr lange unterwegs.

    Ja ich arbeite bereits erst einmal eh schon so lange an deinem DB den du hier hoch geladen hast.
    Okay ich versuche das mit dem Bookmark-Zeile.

    Ja klar bin ich daran interessiert, dass dieser Code am Ende einwandfrei funktioniert. Wie genau meinst du das mit wenig Programmieren aber viel mit Access Datenzugriff und Datenänderung umsetzen kann?
    Meinst du die vorgefertigten Formulare mit den Standard-Schaltflächen? Die sehen zwar schick aus aber kann damit kaum Transaktionen bauen.
    Transaktionen sind wichtig, wenn gewisse Beziehungen zwischen mehreren Tabellen herschen. Sonst sind die Daten nicht mehr brauchbar, wenn etwas schief läuft.

    Ja ich brobiere das mal mit den Klassen, sobald ich erst einmal dieses Problem komplett gelöst habe.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Crashbreaker, 6. Oktober 2015
    #75
Thema:

Access 2013; VBA; Unterformular stürzt ab

Die Seite wird geladen...
  1. Access 2013; VBA; Unterformular stürzt ab - Similar Threads - Access 2013 VBA

  2. Access Abfrage mit Mittelwert wenn

    in Microsoft Access Hilfe
    Access Abfrage mit Mittelwert wenn: Hallo Miteinander Ich bräuchte mal euer Schwarwissen. Ich habe in der Abfrage ein berechnendes Feld: Teilnehmer:...
  3. Auswahlmenü in Formularen erstellen & speichern mehrerer Datensätze

    in Microsoft Access Hilfe
    Auswahlmenü in Formularen erstellen & speichern mehrerer Datensätze: Hallo zusammen, Ich melde mich bezüglich folgenden Sachverhaltes: Ziel unserer Access-Anwendung ist es: Übergabeprotokoll und Rückgabeprotokoll für Technik zu erstellen! Was haben wir bereits:...
  4. Access 2013 Bericht als pdf und mail

    in Microsoft Access Hilfe
    Access 2013 Bericht als pdf und mail: Hallo mein Problem ist das ich im Formular die Daten erheben kann und wenn ich auf den Button Abschließen gehe sollte er eine PDF erstellen in einem bestimmten Ordner mit bestimmten Namen...
  5. Access 2013; VBA; Unterformular via ADODB

    in Microsoft Access Hilfe
    Access 2013; VBA; Unterformular via ADODB: Hallo Leute, leider stehe ich wieder an einem Problem wo ich mir die Finger beim Suchen wund getippt habe. Ich habe folgendes Problem: Ich habe einen Unterformular und möchte die DS per...
  6. Video: Verwenden von Abfragekriterien in Access 2013

    in Microsoft Access Tutorials
    Video: Verwenden von Abfragekriterien in Access 2013: Video: Verwenden von Abfragekriterien in Access 2013 Access 2013 Mehr... Weniger...
  7. Access 2013 – Videos und Lernprogramme

    in Microsoft Access Tutorials
    Access 2013 – Videos und Lernprogramme: Access 2013 – Videos und Lernprogramme Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Mehr... Weniger...
  8. Video: Verwenden von Abfragekriterien in Access 2013-Datenbanken

    in Microsoft Access Tutorials
    Video: Verwenden von Abfragekriterien in Access 2013-Datenbanken: Video: Verwenden von Abfragekriterien in Access 2013-Datenbanken Access 2013 Mehr... Weniger...
  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