Hallo zusammen, war das Wochenende über frleißig und bin auf ein Problem gestoßen, wo ich bisher keine Lösung zu habe...
Ich habe ein Hauptformular, auf dem ich in dessen Kopfbereich per Kombinationsfeld den Lieferanten auswähle.
Im Detailbereich des HaFos habe ich dann 3 Registerkarten mit jeweils einem Ufo angelegt für die
- Lieferandendaten (tbl_Lieferanten)
- Daten der Ansprechpartner zum gewählten Lieferanten (tbl_Absprechpartner _Lief)
- Und die Bestellungen bei eben diesem Lieferanten (tbl_Bestellungen).
Die Ufo's sind jeweils mit ID_Lief und ID_Lief_f verknüpft.
Im Ufo zu den Ansprechpartnern habe ich im rechten Bereich ein Listenfeld eingefügt, welches mir zu den Lieferanten die Ansprechpartner anzeigt. Beim Klick auf den Ansprechpartner in der Listbox werden dann im linken Bereich die Kontaktdaten zur Person geladen.
Das Listenfeld der Ansprechpartner habe ich in der Datensatzherkunft mit dem
Feld ID_Lief aus dem Hauptformular verknüpft: [Formulare]![frm_Lieferantendetails]![lief_ID].
Funktioniert soweit auch alles prima.
Nur habe ich dann das HaFo (frm_Lieferantendetails) in das Navigationsformular eingebunden und jetzt erscheint bei jedem Aufruf des Navigationsformulars die Abfrage: Parameterwert eingeben: [Formulare]![frm_Lieferantendetails]![lief_ID]. Und das Listenfeld wird (allerdings nur im Naivigationsformular) nicht befüllt. Starte ich das HaFo allein, funktioniert alles.
Nun die Frage: welche Möglichkeit habe ich, diesen Fehler zu umgehen oder das Ufo ohne Parameter zu starten. Ich weiß, dass das UFo wohl vor dem HaFo geladen wird..... Denke, dass der Hase hier im Pfeffer liegt.
Saß da gefühlt ewig dran und finde keine Lösung. Daher besten Dank im Voraus für ein paar Tipps.....
Grüße aus dem Süden der Republik
Chris
Hallo Chris,
Dein HFo wird jetzt in das UFo des Naviforms geladen. Daher
stimmt der Bezug nicht mehr. Der muss jetzt über die Hierarchie
Naviform - Naviform-UFo(Control) - .Form - DeinUFoControl - .Form - .Feld
hergestellt werden.
gruss ekkehard
Vielen, vielen Dank, lieber ekkehard.
Musste zwar etwas probieren, aber es hat dann nach einigen (Fehl-) versuchen im Generator dann super geklappt.
Ein Problem bleibt hingegen noch beim Listenfeld. Hier wird nichts aktualisiert. Seither (vor der Einbindung ins NaviForm) war es so, dass wenn ich die cbo_AuswahlLieferanten geändert habe, mir die Listbox lst_AnsprechpartnerLieferant die Ansprechpartner angezeigt hat.
Die Datensatzherkunft der Listbox hat folgende Syntax:
SELECT
tbl_Ansprechpartner_Lief.lapart_ID,
tbl_Ansprechpartner_Lief.lapart_Anzeigename,
tbl_Ansprechpartner_Lief.lief_ID_f
FROM
tbl_Lieferanten
INNER JOIN
tbl_Ansprechpartner_Lief
ON tbl_Lieferanten.lief_ID = tbl_Ansprechpartner_Lief.lief_ID_f
WHERE
(((tbl_Ansprechpartner_Lief.lief_ID_f) = [Forms] ! [Navigator] ! [Navigationsunterformular].[Form] ! [ufo_AnsprechpartnerLieferanten] ! [lief_ID]))
ORDER BY
tbl_Ansprechpartner_Lief.lapart_Anzeigename;
Im VBA Editor habe ich Folgendes stehen:
frm_lieferantendetails:
Private Sub cbo_AuswahlLieferanten_Change()
Me.ufo_AnsprechpartnerLieferanten.Form!lst_AnsprechpartnerLieferant.Requery
End Sub
Private Sub Form_Load()
Me!cbo_AuswahlLieferanten = Me!cbo_AuswahlLieferanten.ItemData(0)
Me.Requery
Me.ufo_AnsprechpartnerLieferanten.Form.Requery
End Sub
im Ufo frm_lieferantendetails_ufo_Anspechpartner
Private Sub lst_AnsprechpartnerLieferant_Click()
Me.Form.Recordset.FindFirst "lapart_ID=" & Me!lst_AnsprechpartnerLieferant
End Sub
ich denke, hier passt irgendwo noch ein Verweis nicht.....
Grüßle Chris
Hallo Chris,
Hier
(((tbl_Ansprechpartner_Lief.lief_ID_f) = [Forms] ! [Navigator] ! [Navigationsunterformular].[Form] ! [ufo_AnsprechpartnerLieferanten] ! [lief_ID]))muss m.E. noch der Form-Verweis im Ufo ergänzt werden (die Leerzeichen sind auch fehl am Platze)
Zitat(((tbl_Ansprechpartner_Lief.lief_ID_f) = [Forms]![Navigator]![Navigationsunterformular].[Form]![ufo_AnsprechpartnerLieferanten].Form![lief_ID]))
Und dies erscheint mir auch nicht ganz richtig
Private Sub lst_AnsprechpartnerLieferant_Click()
Me.Form.Recordset.FindFirst "lapart_ID=" & Me!lst_AnsprechpartnerLieferant
End Sub"Me" ist hier schon das Ufo, da braucht es kein ".Form". Die Liste befindet sich
auf dem HFo, also
Private Sub lst_AnsprechpartnerLieferant_Click()
Me.Recordset.FindFirst "lapart_ID=" & Me.Parent!lst_AnsprechpartnerLieferant
End Subgruss ekkehard
P.S.: In der Hoffnung nicht wieder die Diskussion um "." oder "!" loszutreten; -
verwende in VBA lieber durchgängig den ".". Der Vorteil ist, dass du schon
beim Kompilieren auf Schreibfehler bei Objektnamen hingewiesen wirst, und
nicht erst zur Laufzeit per Fehlermeldung.
Zitat von: Beaker s.a. am August 09, 2023, 13:33:54(die Leerzeichen sind auch fehl am Platze)
Jup, sorry, das kam vom SQL-Formatter. In der Syntax sind keine Leerzeichen.
Herzlichen Dank auch für den Hinweis mit "." und "!". Der Unterschied bzw. dass der Punkt besser ist, war mir nicht bekannt. Im Internet liest man mal so, mal so... gerne gewöhne ich mir das Pünktchen an.
Allerdings zeigt die Listbox noch keine Reaktion.
Zitat von: Beaker s.a. am August 09, 2023, 13:33:54Die Liste befindet sich
auf dem HFo, also
Vllt. noch zur Info:
- Kombobox (Lieferantenauswahl) ist auf dem (bisherigen) HaFo.
- Listbox (Ansprechpartner auf dem (bisherigen) UFo.
Beide Formulare sind jetzt im Navigationsformular (Navigator) eingebunden.
Hallo Chris,
Sorry, bekomme gerade den Kopf nicht frei. Kannst du die DB mit
ein paar Beispiel-DS hochladen. Ich schau mir das dann an, - ist
einfacher.
gruss ekkkehard