none
Löschen im Endlosformular bei gleichzeitigem Filter

    Frage

  • Hallo,

    in einem Endlosformular wird im Formularkopf ein umfangreicher Filter (Me.Filter = "HierStehtEinString") aufgebaut, der die Datensätze für den Detailbereich definiert.

    Die Datensatzquelle ist eine Abfrage über mehrere Tabellen.

    Die DB ist aufgeteilt in FE und BE, es ist keine referentielle Integrität definiert.

    Nun möchte ich im Endlosformular einen Datensatz (und alle damit in Verbindung stehenden Sätze) löschen.

    Dazu gibt es im Ereignis "Beim Löschen" zunächst eine Msgbox, die abfragt, ob der Anwender wirklich den Datensatz und alle in Verbindung stehenden Daten löschen möchte. Falls ja, werden die entsprechenden SQL-Statements aufgebaut und ausgeführt.

    Nach Ausführung der SQL-Statements schalte ich im gleichen Ereignis den Filter mit Me.FilterOn = False aus, da anderenfalls beim Löschen die Meldung erscheint: "Das Microsoft Access- Datenbankmodul hat den Vorgang angehalten, da Sie und ein weiterer Benutzer gleichzeitig versuchen, dieselben Daten zu ändern." (Meldung erscheint in der Entwicklungsumgebung, in der ich der einzige Benutzer bin.)

    Im Ereignis "Vor Löschbestätigung" ist die Access-seitige Meldung ("Sie sind dabei, 1 Datensatz zu löschen")  mit DoCmd.SetWarnings = False abgeschaltet.

    Das erste Löschen eines Datensatztes aus dem gefilterten Endlosformular funktioniert wie gewünscht. Allerdings erscheint beim Versuch, den nächsten Datensatz zu löschen, auf dem ich direkt nach dem ersten Löschvorgang stehe, wieder die Meldung "Das Microsoft Access- Datenbankmodul hat den Vorgang angehalten, ..." (s. o.). Die Daten werden allerdings korrekt gelöscht.

    Mit Me.Refresh und Me. Requery habe ich in den Ereignissen "Beim Löschen", "Vor Löschbestätigung" und "Nach Löschbestätigung" schon herumprobiert, da mir scheint, dass das Formular den gelöschten Datensatz noch irgendwo hat, allerdings leider erfolglos.

    In einer ähnlichen Umgebung ohne Filter lässt sich das Löschen problemlos durchführen.

    Die Datenbank ist auf Access 2003, die Entwicklungsumgebung Access 2010.

    Vielen Dank für Eure Hilfe im Voraus!

    Viele Grüße,

    Julia

    Dienstag, 24. April 2012 09:56

Antworten

  • Hallo Michael,

    habe den Aufruf der Löschprozedur jetzt in ein anderes Formular gelegt, nach tagelangem vergeblichen Tüfteln an der anderen Baustelle. Da geht es jetzt.

    Vielen Dank noch einmal für Deine Unterstützung!

    Julia

    • Als Antwort markiert JH_OL Mittwoch, 25. April 2012 08:22
    Mittwoch, 25. April 2012 08:22

Alle Antworten

  • Hey Julia

    was ist denn wenn du vor dem Löschen den RecordSource = "" stellst und danach wieder auf den ursprünglichen RecordSource nach dem löschen

    Michael

    Dienstag, 24. April 2012 13:40
  • Hallo Michael,

    erst mal Danke für Deinen Tipp. Wenn ich den RecordSource zu Beginn des Ereignisses "Beim Löschen" leer setzen will (um ihn am Ende wieder zu belegen), bekomme ich die Meldung "Operation wird in Transaktionen nicht unterstützt".

    Viele Grüße,

    Julia

    Dienstag, 24. April 2012 16:03
  • Hallo

    kannst du mal den code posten

    Michael

    Mittwoch, 25. April 2012 05:48
  • Hallo Michael,

    habe den Aufruf der Löschprozedur jetzt in ein anderes Formular gelegt, nach tagelangem vergeblichen Tüfteln an der anderen Baustelle. Da geht es jetzt.

    Vielen Dank noch einmal für Deine Unterstützung!

    Julia

    • Als Antwort markiert JH_OL Mittwoch, 25. April 2012 08:22
    Mittwoch, 25. April 2012 08:22