fmth753
Goto Top

Access 2010 - Neues Formular mit aktuellem Datensatz öffnen

Hallo zusammen,

ich bin Access-Einsteiger und auf ein Problem gestoßen, das mir schon etwas länger zu schaffen macht. Leider habe ich frühere Lösungsvorschläge bisher nicht erfolgreich umsetzen können. Ich bitte deshalb hier um etwas Hilfe.

Ich habe in Access 2010 ein kleines Datenbankmodell entworfen, in dem ich archäologische Denkmäler sammeln möchte. Konkret geht es um römische Mosaiken. Ich habe eine Tabelle angelegt, die in den verschiedenen Feldern die Informationen (ID, Kat_Nr, Land, Stadt_Ort, Kontext, Datierung, Beschreibung, Vergleiche, Literatur,…) zu jedem einzelnen Mosaik enthalten soll, d. h., jedem Mosaik entspricht ein Datensatz in der Tabelle.

Da sich verschiedene Informationen sinnvoll gruppieren lassen, möchte ich sie jeweils gemeinsam über ein separates Formular ansprechen bzw. dort die Daten eingeben. frmHerkunft enthält z. B. die Eingabefelder für Land, Stadt_Ort und Kontext; frmEinordnung enthält die Eingabefelder für Vergleiche und Literatur; usw. … Über Schaltflächen-Steuerelemente kann ich aus einem Formular jeweils das nächste öffnen.

Nun möchte ich, dass, wenn in einem Formular ein bestimmter Datensatz ausgewählt ist, im (mittels Schaltfläche) neu geöffneten Formular derselbe Datensatz angezeigt wird, anstatt immer zum aktuellen Datensatz navigieren zu müssen. Ich habe gedacht, dass die folgende Routine beim Klick auf die Schaltfläche eigentlich funktionieren müsste:

DoCmd.OpenForm "frmEinordnung",,,"ID=" & Me.ID

Allerdings wird dann immer angezeigt:

Laufzeitfehler '3075': Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ID=.'

Ich habe dazu auch schon einiges recherchiert, aber bei mir funktioniert keiner der vorgeschlagenen Lösungswege. Deutet der angezeigte Fehler eventuell darauf hin, dass irgendwo etwas mit der Benennung von Elementen nicht stimmt? Nach einigem Ausprobieren habe ich keine Idee mehr, voran es liegen könnte.

Vielen Dank für die Hilfe.
Grüße, Frederic

Content-Key: 229803

Url: https://administrator.de/contentid/229803

Printed on: April 19, 2024 at 21:04 o'clock

Member: colinardo
colinardo Feb 14, 2014 updated at 14:01:06 (UTC)
Goto Top
Hallo Frederic, Willkommen im Forum!
heißt das Steuerelement bzw. der Name der Textbox in der die ID steht tatsächlich "ID" ? Bitte überprüfe das im Eigenschaften-Explorer. Für mich sieht die Fehlermeldung sehr offensichtlich danach aus das Me.ID leer ist bzw. nicht existiert und deswegen der Fehler kommt (Fehlender Operator auf der rechten Seite des Gleichheitszeichens).
Geb der Textbox auch mal einen anderen Namen als "ID" z.b. txtID und gebe sie in der Funktion dann so an: Me.txtID.Value.

Grüße Uwe
Member: FMTh753
FMTh753 Feb 14, 2014 at 15:29:59 (UTC)
Goto Top
Hallo Uwe, vielen Dank für Deine Antwort.

Ich war mir nicht ganz sicher, ob sich Dein Tipp auf die Tabelle oder die Formulare bezieht und habe deshalb hier wie dort nachgesehen:
Das Tabellenfeld, das den Primärschlüssel enthält, heißt ID.
Wenn ich in den Formularen die Eigneschaften Textbox mit er ID überprüfe, steht dort immer
Name: ID
Steuerelementinhalt: ID

Es sieht aber so aus, als habe ich hier einen Denkfehler gemacht; ich habe versucht, den genannten Befehl auszuführen, ohne dass die Datenbank überhaupt irgendwelche Einträge hat (wie gesagt, ich bin noch in der Entwurfsphase). Es ist wohl so: Kein Datensatz = keine ID = kein Operator?!

Ich nach Deinem Hinweis mal 10 Datensätze (durch Texteingabe in der Tabelle) testweise angelegt. Es funktioniert jetzt so: Wenn ich im ersten Formular z. B. beim Datensatz 5 mit der ID 5 bin, dann wird über die Schaltfläche das zweite Formular auch tatsächlich bei ID 5 geöffnet, so wie ich es haben möchte. Allerdings wird in der kleinen Navigationsleiste am unteren Bildschirmrand dann "Datensatz: 1 von 1" angezeigt (nicht "Datensatz: 5 von 10").

Hast Du da vielleicht noch eine Idee, woran das liegen könnte?

Grüße, Frederic
Member: colinardo
colinardo Feb 14, 2014 updated at 16:07:16 (UTC)
Goto Top
Zitat von @FMTh753:
Es ist wohl so: Kein Datensatz = keine ID = kein Operator?!
yip, klar keine Daten, nichts zum Anzeigen ...
Hast Du da vielleicht noch eine Idee, woran das liegen könnte?
Das ist ja normal weil du damit einen Filter im Formular aktivierst. Wenn du den Filter in der Symbolleiste wieder raus nimmst kommst du wieder auf alle Datensätze des Formulars.

Alternativ dazu könntest du die Form normal öffnen und mit der SearchForRecord-Methode den aktuellen Datensatz setzen. So wird kein Filter gesetzt und du bist trotzdem auf dem aktuellen Datensatz:
DoCmd.OpenForm "frmEinordnung"  
DoCmd.SearchForRecord acDataForm, "frmEinordnung", acFirst, "ID=" & Me.ID.Value  
Grüße Uwe
Member: FMTh753
FMTh753 Feb 14, 2014 at 18:32:43 (UTC)
Goto Top
DoCmd.OpenForm "frmEinordnung"
DoCmd.SearchForRecord acDataForm, "frmEinordnung", acFirst, "ID=" & Me.ID.Value

Hey, wenn ich das mit dem Filter beachte funktioniert es schon sehr gut, tausend Dank dir Uwe!!!

Ich würde deinen Alternativvorschlag auch mal ausprobieren, um zu sehen, mit welcher Einstellung ich besser arbeiten kann.
Für mich als Access-Neuling: Wie müsste ich den Code in VBA einbauen? Deine Nummerierung bedeutet, es sind zwei separate Befehle in der Ereignisprozedur desselben Formulars?

Grüße, Frederic
Member: colinardo
colinardo Feb 14, 2014 at 20:08:40 (UTC)
Goto Top
Zitat von @FMTh753:
Für mich als Access-Neuling: Wie müsste ich den Code in VBA einbauen? Deine Nummerierung bedeutet, es sind zwei separate Befehle in der Ereignisprozedur desselben Formulars?
Richtig, die Nummerierung macht hier nur die Codeformatierung im Forum, die Befehle sind natürlich untereinander an der selben Stelle anstatt deines obigen Befehls einzugeben (also in der Click-Prozedur deines Buttons)

Grüße Uwe