Legacy Geschrieben 31. Juli 2003 Teilen Geschrieben 31. Juli 2003 Hallo, ich habe folgendes Problem: Ich habe ein Listenfeld, in dem drei Tabellen ausgelesen werden: 'Fragen', 'Kategorien' und eine Auflösungstabelle zwischen den beiden. Mit dem Doppelklick auf das Listenfeld soll das entsprechende Element aus der Auflösungstabelle gelöscht werden: Sub frage_kategorie_sub() Dim kategorie As String Dim frage As String Dim sql As String kategorie = Form_Fragen.kat_frage.Value frage = Form_Fragen.fr_id sql = "DELETE FROM aufl_kategorie_fragen WHERE kat_id=" & kategorie & "AND fr_id=" & frage DoCmd.RunSQL (sql) 'aktualisierungen.fragen_aktualisieren End Sub Dies funktioniert soweit, der Datensatz wird gelöscht. Allerdings möchte ich das Listenfeld dann aktualisiert haben - dies geschieht mit der Sub aktualisierungen.fragen_aktualisieren (das ' vorne wird weggemacht): Sub fragen_aktualisieren() Form_Fragen.Liste14.Requery Form_Fragen.kat_all.Requery Form_Fragen.kat_frage.Requery 'Das betroffene Listenfeld End Sub Nach einem Doppelklick kommt dann aber der Laufzeitfehler 2118: Sie müssen das aktuelle Feld speichern, bevor Sie die Aktion AktualisierenDaten ausführen können. WIE kann ich das aktuelle Feld speichern? Ich vermute, dass die Tabelle aufl_kategorie_fragen irgendwie noch "offen" ist... wie kann ich den Vorgang abschließen??? Gruss Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 31. Juli 2003 Teilen Geschrieben 31. Juli 2003 Also, ich denke, dass du mit Access arbeitest. Das sollte man dazu schreiben :mod: Zur Frage: Warum löscht du nicht den kompletten Inhalt und erstellt das Listenfeld neu ?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Legacy Geschrieben 31. Juli 2003 Autor Teilen Geschrieben 31. Juli 2003 Ja, es ist Access. Das Listenfeld wird erstellt durch folgende Abfrage: SELECT data_kategorien.kat_id, data_fragen.fr_id, data_kategorien.Kategorie FROM data_kategorien INNER JOIN (data_fragen INNER JOIN aufl_kategorie_fragen ON data_fragen.fr_id = aufl_kategorie_fragen.fr_id) ON data_kategorien.kat_id = aufl_kategorie_fragen.kat_id WHERE (((data_fragen.fr_id)=[formulare].[fragen].[frage_id])); Und wenn ich es aktualisieren will, muss ich doch nur die Abfrage neu ausführen (requery)? Leider weiß ich nicht, was du mit neu erstellen genau meinst? Gruss Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 31. Juli 2003 Teilen Geschrieben 31. Juli 2003 Du füllst das Listenfeld wahrscheinlich mit listView.items.add ,oder ?? Wenn ja, mache ein Clear auf die Liste mit ListView.Clear und füge die Items neu hinzu ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Legacy Geschrieben 31. Juli 2003 Autor Teilen Geschrieben 31. Juli 2003 Nein, ich fülle das Datenfeld mit obenstehender Abfrage :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Legacy Geschrieben 2. August 2003 Autor Teilen Geschrieben 2. August 2003 *aufwärm* Kann mir hier keiner helfen???ß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 2. August 2003 Teilen Geschrieben 2. August 2003 Bei welchem Feld kommt der Fehler?? Ist schon etwas "wild" deine Namensgebung, was passiert da bei welchem Ereignis. kategorie = Form_Fragen.kat_frage.Value Woher kommt Form_Fragen.kat_frage.Value?? Ist das ein Textfeld?? Wenn ja im gleichen Formular?? Wo genau kommt die Fehlermeldung?? Du sagst bei einem Doppelklick... Allerdings sagst du auch das bei einem Doppelklick frage_kategorie_sub() ausgeführt wird und das funktioniert, also was nu??? Noch was anderes was evt. wichtig wäre, falls die Fehlermeldung nicht aus den geposteten Prozeduren kommt... Ist das Formular gebunden (kann ich nur von abraten, lieber alles per VBA machen), oder ungebunden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Legacy Geschrieben 3. August 2003 Autor Teilen Geschrieben 3. August 2003 Okay, ich versuche, das ganze zu Formulieren :-) Insgesamt handelt es sich um eine Fragendatenbank. Ich habe ein Formular (1 Datensatz wird angezeigt), in dem die Fragen eingetragen werden (Tabelle Fragen, Formular heisst "Fragen"). Desweiteren habe ich eine Tabelle "Kategorien". Da jetzt eine Frage in mehreren Kategorien sein kann, und eine Kategorie mehrere Fragen beinhalten kann habe ich hier noch eine Auflösungstabelle (aufl_kategorie_fragen). Um die Fragen bequem zu den Kategorien zuordnen zu können, habe ich zwei Listenfelder in das Formular gebastelt: Zum einen das Listenfeld "kat_all" in dem per SQL alle Kategorien aufgelistet werden, zu denen die Frage (noch) nicht gehört, und zum anderen das Listenfeld "kat_frage" hier stehen alle Kategorien drin, die der Frage zugeordnet sind (hier wird einfach die Auflösungstabelle und die Kategorien per SQL abgefragt. Jetzt will ich der Bequemlichkeit halber das Ganze so gestalten, dass mit einem Doppelklick auf "kat_all" die entsprechende Kategorie zu der Frage in die Auflösungstabelle eingetragen wird, und mit Doppelklick auf "kat_frage" wieder gelöscht wird. also: Doppelklick auf "kat_all": Die doppelgeklickte Kategorie wird zusammen mit der aktuellen Frage in die Auflösungstabelle geschrieben. Danach werden die Listenfelder aktualisiert (Kategorie verschwindet in "kat_all"; Kategorie erscheint in "kat_frage", da die SQL-Abfragen neu gestartet werden). Und dies funktioniert auch wunderbar! Doppelklick auf "kat_frage": Es wird in der Auflösungstabelle nach der aktuellen Frage und der Doppelgeklickten Katgorie gesucht und dann gelöscht (delete from where). Dies funktioniert auch noch. Aber sobald ich danach die Listenfelder aktualisieren will, kommt obengenannter Fehler! Ich hoffe, dass ich alle Klarheiten beseitigt habe Wenn ihr möchtet, kann ich euch die Datenbank auch mal schicken (Access 2000, ~800 kB) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Legacy Geschrieben 3. August 2003 Autor Teilen Geschrieben 3. August 2003 Danke an Wolle!!! Der Fehler lag einfach in einem falschen Aufruf. Danke auch nochmal an alle anderen, die sich mit diesem Problem beschäftigt haben :-))) Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.