Mit Doppelklick Datensatz in neues Formular laden

Hallo liebe Access/VBA-Experten!

Da ich mit den Googleergebnissen irgendwie nicht zurecht komme bzw. ich nicht weiß, wie ich damit weiterarbeiten muss/kann, wende ich mich wiedermal an euch.

Folgendes:
Access 2003-Datenbank (soll mal eine DVD-Verwaltung werden):
Es gibt ua. ein Formular mit einem Listenfeld - dies soll eine DVD-Liste werden. Das Listenfeld entnimmt die Daten einer Abfrage, da ich nicht alle Informationen aus der DVD-Tabelle anzeigen möchte (nur die wichtigsten Infos - der Übersicht halber).

Wenn ich jetzt auf einen der Listeneinträge doppelklicke, möchte ich, dass sich das Formular „frm_modifyDVD“ öffnet und dort bereits die Infos des Datensatzes der angeklickt wurde drinstehen (die Felder sind bereits alle vorhanden).
Dann kann man Änderungen vornehmen und mittels eines Buttons die Änderungen wieder in die DB zurückschreiben.

Ich weiß eigentlich nur nicht, wie ich in dem modify-Formular an den angeklickten Datensatz rankomme…
Bei Google hab ich zB folgendes gefunden:

Private Sub ListeSuche\_DblClick(Cancel As Integer)
DoCmd.OpenForm "frm\_bearbeitung", acNormal, "", "[EintragID]=[Forms]![frm\_suchergebnis]![ListeSuche]", , acNormal
End Sub 

Implementiere ich diese Zeile (angepasst natürlich) bei mir, dann öffnet sich nach dem Doppelklick zwar das modify-frm, aber es stehen keine Daten drin…
Irgendwie auch logisch. Aber WIE kann ich das nun machen… ?!

Ich hab in dem Listenfeld übrigens auch eine eindeutige DVD-ID (wird nicht angezeigt, ist nur vorhanden), da ich mir dachte, evt. braucht man das…?!

Ich hoffe, es kann mir das jemand so erklären, dass ich es auch verstehe :wink: Suche schon tagelang mit Google rum, und werd einfach nicht schlau…

Danke schon mal,
lG
Katharina

PS: Codeschnipsel auf Anfrage, falls erforderlich

Hallo,

PS: Codeschnipsel auf Anfrage, falls erforderlich

sind immer hilfreich bei solchen Fragen…

Private Sub ListeSuche_DblClick(Cancel As Integer)
DoCmd.OpenForm „frm_bearbeitung“, , , „[EintragID]=“ & me![ListeSuche].Column(0)"
End Sub

falls EintragID vom Datentyp Zahl, Long in der Tabelle ist und dieser ID-Wert in der ersten Listenfeld-Spalte steht. „Mehrfachauswahl“ des Listenfeldes sollte auf „keine“ stehen.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo,

Hi!
Danke für deine Antwort!

PS: Codeschnipsel auf Anfrage, falls erforderlich

sind immer hilfreich bei solchen Fragen…

Also bei mir sieht das so aus:

Private Sub Liste4\_DblClick(Cancel As Integer)

 'DoCmd.OpenForm "frm\_modifyDVD", acNormal, "", "[DVDID]=[Forms]![frm\_DVDListe]![Liste4]", , acNormal
 DoCmd.OpenForm "frm\_modifyDVD", , , "[DVDID]=" & Me![Liste4].Column(0)

End Sub

(DVDID ist die eindeutige ID (autowert) in der DVD-Tabelle)

Gut, aber wie gehts jetz weiter?
Hier wird ja nur geprüft, ob die DVDID mit der ID des ausgewählten Datensatzes in der Liste übereinstimmt…
Aber wie kann ich nun genau diesen Datensatz ansprechen?

Ich brauche irgendein RS, das ich danach mittels des Formulars anpassen (Änderungen machen) kann und dann die Änderungen mit rs.update in die DB zurückschreiben kann.

WO/WIE nehme ich dieses RS her??

Sorry, aber ich steh voll auf der Leitung :frowning:(

Danke trotzdem!
lG
Katharina

Hallo Katharina,

DoCmd.OpenForm „frm_modifyDVD“, , , „[DVDID]=“ &
Me![Liste4].Column(0)

Gut, aber wie gehts jetz weiter?

ich übersetze mal in deutsch:
öffne das Formuar frm_modifyDVD, und prüfe, ob in der Datenbasis des neuen Formulars die DVDID mit der DVDID im Listenfeld des aufrufenden Formulars überein stimmt.

jetzt verstanden?

Hier wird ja nur geprüft, ob die DVDID mit der ID des
ausgewählten Datensatzes in der Liste übereinstimmt…
Aber wie kann ich nun genau diesen Datensatz ansprechen?

das Formular frm_modifyDVD benötigt die gleiche Datenbasis wie das aufrufende Formuar! Es sollen doch die selben Dane bearbeitet werden. Welche das dann sind, bestimmt das Kriterium:
„[DVDID]=“ & Me![Liste4].Column(0)

Ich brauche irgendein RS, das ich danach mittels des Formulars
anpassen (Änderungen machen) kann und dann die Änderungen mit
rs.update in die DB zurückschreiben kann.

nein benötigst du definitiv nicht!

WO/WIE nehme ich dieses RS her??

vergiss es :smile:

Sorry, aber ich steh voll auf der Leitung :frowning:(

dann steig runter :wink:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

1 Like

Hallo Katharina,

Huhu Netwolf!

ich übersetze mal in deutsch:
öffne das Formuar frm_modifyDVD, und prüfe, ob in der
Datenbasis des neuen Formulars die DVDID mit der DVDID im
Listenfeld des aufrufenden Formulars überein stimmt.

jetzt verstanden?

Yeeep, danke! Wusste nicht, dass im neuen Formular bereits DS vorhanden sein müssen.

Hier wird ja nur geprüft, ob die DVDID mit der ID des
ausgewählten Datensatzes in der Liste übereinstimmt…
Aber wie kann ich nun genau diesen Datensatz ansprechen?

das Formular frm_modifyDVD benötigt die gleiche Datenbasis wie
das aufrufende Formuar! Es sollen doch die selben Dane
bearbeitet werden. Welche das dann sind, bestimmt das
Kriterium:
„[DVDID]=“ & Me![Liste4].Column(0)

Jup, nun is alles klar!! :smile:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Ich kanns zwar grad nicht testen (morgen wieder), aber ich denke jetzt sollte es klappen.

Vielen Dank für die Kathi-gerechte Erklärung :wink:
lG
Katharina

Hi Wolfgang!

Also ich sitze jetzt wieder an der DVD-Datenbank, und hab versucht, deine Tipps umzusetzen…

das Formular frm_modifyDVD benötigt die gleiche Datenbasis wie
das aufrufende Formuar! Es sollen doch die selben Dane
bearbeitet werden. Welche das dann sind, bestimmt das
Kriterium:
„[DVDID]=“ & Me![Liste4].Column(0)

Also, im Formular frm_DVDListe entnimmt das Listenfeld seine Daten aus folgender Abfrage:

SELECT qry\_DVDListe.DVDID, qry\_DVDListe.Titel, qry\_DVDListe.Edition, qry\_DVDListe.Jahr, qry\_DVDListe.Original, qry\_DVDListe.Besitzer, qry\_DVDListe.Verliehen
FROM qry\_DVDListe
ORDER BY [Titel], [Edition]; 

(Die DVDID-Spalte ist auf 0cm gesetzt, damit sie nicht angezeigt wird)

Beim Änderungsformular frm_modifyDVD hab ich nun bei „Datenherkunft“ tblDVDs (also die gesamte DVD-Tabelle) eingestellt.

Die Zeile im Code (beim Doppelklick-Event) habe ich gleich gelassen, die war ja richtig.

DoCmd.OpenForm "frm\_modifyDVD", , , "[DVDID]=" & Me![Liste4].Column(0)

So… es funkt leider nicht…

Müssen die beiden Formulare EXAKT die gleiche Datenherkunft haben (also selbe Tab. bzw. Abfrage)? Denn dann müsste ich ja bei der DVDListe auch alle Spalten reinnehmen, aber halt die die ich nicht anzeigen will ausblenden…
Bzw. müsste ich das ganze mit den anderen Tabellen verknüpfen (Zuordnungstabelle für Genres DVDs und Darsteller DVDs …) weil ich das ja im Änderungsformular auch abbilden will.

Oder ist es vielleicht ein Problem, dass das Formular selbst gemacht ist? Also kein Form. das Access aus einer Datenquelle erstellt, sondern ich hab selbst eins gemacht und somit selbst die Felder, Buttons usw. eingefügt…

Ne, das kann ja nicht funktionieren, oder?
Wie macht man das denn normalerweise?? So ein „Übersichtsliste --> Detailansicht“ - Konstrukt …?!

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Nette Grüße aus dem verregneten Österreich.
Und ich wünsch dir viele Nerven und Geduld… :wink:

Katharina

Hi Katharina,

(Die DVDID-Spalte ist auf 0cm gesetzt, damit sie nicht
angezeigt wird)

das ist ok

Beim Änderungsformular frm_modifyDVD hab ich nun bei
„Datenherkunft“ tblDVDs (also die gesamte DVD-Tabelle)
eingestellt.

auch ok

Die Zeile im Code (beim Doppelklick-Event) habe ich gleich
gelassen, die war ja richtig.

DoCmd.OpenForm „frm_modifyDVD“, , , „[DVDID]=“ &
Me![Liste4].Column(0)

es würde reichen: „[DVDID]=“ & Me![Liste4]
da ja Spalte 0 = DVDID

So… es funkt leider nicht…

ähm, was genau funktioniert nicht?
Deine DVDID ist vom Typ nummerisch?

Müssen die beiden Formulare EXAKT die gleiche Datenherkunft
haben (also selbe Tab. bzw. Abfrage)?

nein, wichtig ist nur, dass es eine Tabelle / Abfrage ist, die auch eine DVDID hat.

Denn dann müsste ich ja
bei der DVDListe auch alle Spalten reinnehmen, aber halt die
die ich nicht anzeigen will ausblenden…

du musst nie etwas reinnehmen, was du nicht brauchst, erst Recht nicht ausblenden, sondern gar nicht erst auf dem Formular darstellen.
Frage: welche (Ansicht)Art von Formular verwendest du?

Bzw. müsste ich das ganze mit den anderen Tabellen verknüpfen
(Zuordnungstabelle für Genres DVDs und Darsteller
DVDs …) weil ich das ja im Änderungsformular auch
abbilden will.

logisch, das ist dann mit UFOs zu machen

Oder ist es vielleicht ein Problem, dass das Formular selbst
gemacht ist?

das kann ich hier genau sehen! schick mal die MDB rüber

Also kein Form. das Access aus einer Datenquelle
erstellt, sondern ich hab selbst eins gemacht und somit selbst
die Felder, Buttons usw. eingefügt…

ok, dabei könnten Fehler passieren

Ne, das kann ja nicht funktionieren, oder?

?? was meinst du ?

Wie macht man das denn normalerweise?? So ein „Übersichtsliste
–> Detailansicht“ - Konstrukt …?!

normalerweise lädt man sich eine fertige MDB aus dem Internet, wandelt diese nach Bedarf um und fertig. Man muss das Rad ja nicht immer wieder neu erfinden :smile:

Du kannst dir ja mal ein paar Anregungen holen:
http://www.google.de/search?q=dvd+datenbank+access&s…

Abgesehen davon führen viele Wege nach Rom :smile:

Ich würde z.B.

  • ein Hauptformular erstellen (öffnen zum Bearbeiten)
  • Datenbasis eine DVD-Abfrage, sortiert nach Filmtitel
  • Beziehungen zu anderen Tabellen sind natürlich vorhanden
  • Symbolleiste TOOLBAR einblenden (siehe hier die FAQ)
  • ein Registersteuerelement auf das Formular platzieren
  • im ersten Reiter Filmdaten darstellen
  • im zweiten Reiter die Schauspieler (per UFO da 1:n)
  • im dritten/ff Reitern usw. (per UFO, da 1:n)
  • im Kopf würde ich das Kombifeld für die Suche platzieren (FAQ)
  • fertig

die Eingabe/Änderungen erfolgen direkt im Formular.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

das kann ich hier genau sehen! schick mal die MDB rüber

Darf ich dir ein Mail (inkl. MDB) schicken?

Danke, lG
Katharina

Antwort ist schon unterwegs…

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)