Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Ein Formular samt Unterformular per Doppelklick auf Datensatz öffnen

Begonnen von gilles_de_rais, November 17, 2017, 11:48:31

⏪ vorheriges - nächstes ⏩

gilles_de_rais

Hallo,
ich habe ein Listenfeld in einem Formular und möchte per Doppelklick den zugehörigen Datensatz in einem anderen Formular öffnen. An anderer Stelle habe ich dies bereits etabliert. Ich stolpere jetzt darüber, dass das zu öffnende Formular ein Unterformular enthält, das wiederum die ID enthält, auf die ich mich beziehen möchte.

DoCmd.OpenForm "frmBahnen", , , "bahn_ID = " & Me!bahn_ID, , acDialog

öffnet lediglich das übergeordnete Formular ohne dem angeklickten Datensatz Rechnung zu tragen.

DoCmd.OpenForm "Forms!frmBahnen!frmWartungen", , , "wart_ID = " & Me!wart_ID, , acDialog

funktioniert natürlich nicht. Öffne ich lediglich das Unterformular, so bekomme ich ebenso eine Fehlermeldung, weil sich dieses logischerweise auf das übergeordnete Formular bezieht.

Gibt es einen Weg mit DoCmd.Open die Formular-Hierarchie abzubilden oder muss ich völlig anders vorgehen?

Gruß,
Dennis

MzKlMu

Hallo,
das Ufo sollte doch mit dem Hafo verknüpft sein, daher genügt es doch nur das entsprechende Hafo zu öffnen.
Gruß Klaus

gilles_de_rais

Hallo,
dachte ich mir eigentlich auch so. Aber leider wird nicht der zugehörige Eintrag geöffnet. Möglicherweise beziehe ich mich auf die falsche ID.

gilles_de_rais

#3
Hallo,
ich habe gerade ein Debug.Print auf Me!bahn_ID angewendet und bekomme, ganz gleich welchen Wert ich in der Liste anklicke, immer den Wert "1" zurück. Woran kann das liegen?

EDIT: Die Liste bezieht ihren Inhalt der Auswahl verschiedener Kombis. Kann es daher sein, dass ein Doppelklick daher immer den selben Wert zurückgibt?


gilles_de_rais

Hallo,
meine Vermutung, dass es mit der Art wie der Inhalt des Listenfeldes bezogen wird, scheint falsch zu sein.

Testweise habe ich als Datensatzherkunft eine Tabelle angegeben und auch hier bekomme ich für die betreffende ID immer eine "1" zurück. Entsprechend natürlich auch kein zufriedenstellendes Ergebnis beim Aufrufen des Formulars.

MzKlMu

Hallo,
zeige den verwendeten Code.

Ein Listenfeld gibt bei Klick den Wert der gebundenen Spalte zurück.
Daher erkläre die Einstellungen des Listenfeldes und zeige den SQL Text der Abfrage für das LF.
Gruß Klaus

gilles_de_rais

Hallo,

SQL Listenfeld:
SELECT DISTINCT tblBahnen.bahn_ID, tblWartungen.wart_id, tblBahnen.bahn_name, tblWartungAuswahl.aus_wahl_ID, tblWartungAuswahl.aus_art, tblWartungen.wart_datum, Year([wart_datum])
AS wart_jahr, DatePart("ww",[wart_datum],2,2)
AS wart_kw, Month([wart_datum]) AS wart_monat, Format(DateSerial(1,CInt([wart_monat]),1),"mmmm")
AS wart_monnam, Format([wart_datum],"ww",2,2)
AS wart_kawe
FROM ((tblWartungAuswahl INNER JOIN (tblBahnen INNER JOIN tblWartungen ON tblBahnen.bahn_ID = tblWartungen.bahn_id_f) ON tblWartungAuswahl.aus_wahl_ID = tblWartungen.aus_wahl_id_f)
INNER JOIN tblWochenwartung ON tblWartungAuswahl.aus_wahl_ID = tblWochenwartung.aus_art) INNER JOIN tblWoch_Wart ON (tblWochenwartung.woch_ID = tblWoch_Wart.woch_id_f)
AND (tblWartungen.wart_id = tblWoch_Wart.wart_id_f)
ORDER BY tblBahnen.bahn_ID, tblWartungAuswahl.aus_wahl_ID, tblWartungen.wart_datum, DatePart("ww",[wart_datum],2,2);


Und Code für Doppelklick:
DoCmd.OpenForm "frmBahnen", , , "bahn_id = " & Str(lstWartungen), , acDialog

Ich habe mittlerweile zumindest einen Fehler abstellen können. Str(lstWartungen) hat den Unterschied gemacht. Trotzdem habe ich keinen Zugriff auf die Daten des Unterformulars.

Das HaFo bezieht sich auf die bahn_ID und zeigt das jeweils ausgewählte Fahrzeug. Funktioniert mit dem oben genannten Code auch wunderbar.

wart_id im Unterformular (frmWartungen) im selben Code eingesetzt funktioniert leider nicht und führt nur dazu, dass ich die wart_id manuell eingeben muss.

gilles_de_rais

Hallo,
ich habe jetzt einfach das Unterformular kopiert und etwas angepasst. So geht es wunderbar! Ich denke, mit der Lösung kann ich leben!