Zum Inhalt springen

Felder speichern? Fehler 2118


Legacy

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :rolleyes:

Wenn ihr möchtet, kann ich euch die Datenbank auch mal schicken (Access 2000, ~800 kB)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...