Hi Forum,
ich öffne ein Formular mit OpenArgs.
Der wert KundenId wird mir auch wie erwartet im entsprechenden Feld angezeigt.
Nun habe ich dort auch ein Kombinationsfeld welche mir die einträge für die KundenId anzeigen soll.
WHERE (((Kunden.KundenID)=[Me].[KundenID]) AND...
Leider muss ich beim öffnen des Forms immer die KundenID manuell eingeben.
Hierfür gibt es doch sicherlich eine lösung!?
MFG J.D
Hallo,
prinzipiell; ohne Errorhandling und ohne weitere Kenntnis der Hintergründe:
Sub Form_Load()
Me!Kombifeld1.Rowsource = "Select ...... WHERE Kunden.KundenID=" & Me.Openargs & " AND... "
End Sub
Zitat von: DF6GL am September 19, 2021, 11:43:41Hallo,
prinzipiell; ohne Errorhandling und ohne weitere Kenntnis der Hintergründe:
Sub Form_Load()
Me!Kombifeld1.Rowsource = "Select ...... WHERE Kunden.KundenID=" & Me.Openargs & " AND... "
End Sub
erst mal danke für die Antwort.
Also so wie ich das sehe entferne ich die abfrage aus dem Kombiefeld und trage es dann beim laden im Form ein...
Private Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then Me!KundenID = Me.OpenArgs
...
Me!aktiveadresse.RowSource = "SELECT Kunden.KundenID, Kunden.KundenNR, Kunden.KundenNachname, Kunden.KundenAnrede, Kunden.KundenName, Kunden.KundenPrivat, Kunden.Kunden_TrägerID, Kunden.Kunden_Strasse, Kunden.Kunden_PLZ, Kunden.Kunden_Ort, Kunden.Kunden_Tel, Kunden.Kunden_Mob, Kunden.Kunden_Stundensatz, Kunden.Kunden_Kilometer, Kunden.Kunden_Abrechnung_von, Kunden.Kunden_Bemerkung, Kunden.UStFrei, KundenAdressen.ID, KundenAdressen.KundenID, KundenAdressen.KName, KundenAdressen.KNachname, KundenAdressen.KStrasse, KundenAdressen.KPlz, KundenAdressen.KOrt, KundenAdressen.KAktuelle_Adresse"
FROM Kunden LEFT JOIN KundenAdressen ON Kunden.KundenID = KundenAdressen.KundenID
WHERE (((Kunden.KundenID=" & Me.Openargs & " ) AND ((KundenAdressen.KAktuelle_Adresse)=True));"
End Sub
Aber ich bekomme die Abfrage im Form nicht hin das es nicht mehr ROT schrift ist und das es funktioniert..
Kannst du mir da bitte nochmals behilflich sein?
mfg J.D
ZitatLeider muss ich beim öffnen des Forms immer die KundenID manuell eingeben.
Man darf davon ausgehen, dass die Maßnahmen in den diskutierten Ereignisprozeduren zu spät für die ersten Datenherkunftszuweisung erfolgen. Also sollte die Start-Datenherkunft ohne Parameter auskommen:
WHERE 1 = 0
So hat man ein leeres Recordset, und alles funktioniert.
Durch Auswerten von OpenArgs und Neusetzung der Datenherkunft bekommst Du dann das, was Du sehen willst, das anfängliche leere Recordset wird man nicht wahrnehmen.
If Not IsNull(Me.OpenArgs) Then ...
Diese Prüfung ist auf jeden Fall gut und wäre bei mir obligatorisch, weil man da das Formular auch ohne OpenArgs z.B. in einer weiteren Verwendung oder beim Testen fehlerfrei öffnen kann.
OpenArgs sind schon beim Form_Open, dem ersten Ereignis, verfügbar. Ein verändertes Verhalten könnte man testen.
Es sollte bei der Weiterverarbeitung beachtet werden, dass OpenArgs einen String-Ausdruck zurückgibt.
Hallo,
Knackpunkt hier dürte die falsche Syntax sein...
Zudem ist zu fragen, warum für ein Kombifeld(!) eine dermaßen lange Selectliste benötigt wird und die KundenID einem (gebundenen ??) Textfeld zugewiesen wird.
Das Anführungszeichen hinter KundenAdressen.KAktuelle_Adresse ist falsch.
ZitatMe!aktiveadresse.RowSource = "SELECT Kunden.KundenID, Kunden.KundenNR, Kunden.KundenNachname, Kunden.KundenAnrede, Kunden.KundenName, Kunden.KundenPrivat, Kunden.Kunden_TrägerID, Kunden.Kunden_Strasse, Kunden.Kunden_PLZ, Kunden.Kunden_Ort, Kunden.Kunden_Tel, Kunden.Kunden_Mob, Kunden.Kunden_Stundensatz, Kunden.Kunden_Kilometer, Kunden.Kunden_Abrechnung_von, Kunden.Kunden_Bemerkung, Kunden.UStFrei, KundenAdressen.ID, KundenAdressen.KundenID, KundenAdressen.KName, KundenAdressen.KNachname, KundenAdressen.KStrasse, KundenAdressen.KPlz, KundenAdressen.KOrt, KundenAdressen.KAktuelle_Adresse
FROM Kunden LEFT JOIN KundenAdressen ON Kunden.KundenID = KundenAdressen.KundenID
WHERE (((Kunden.KundenID=" & Me.Openargs & " ) AND ((KundenAdressen.KAktuelle_Adresse)=True));"
oder hier auch:
ZitatMe!aktiveadresse.RowSource = "SELECT Kunden.KundenID, Kunden.KundenNR, Kunden.KundenNachname, Kunden.KundenAnrede, Kunden.KundenName, Kunden.KundenPrivat, Kunden.Kunden_TrägerID, Kunden.Kunden_Strasse, Kunden.Kunden_PLZ, Kunden.Kunden_Ort, Kunden.Kunden_Tel, Kunden.Kunden_Mob, Kunden.Kunden_Stundensatz, Kunden.Kunden_Kilometer, Kunden.Kunden_Abrechnung_von, Kunden.Kunden_Bemerkung, Kunden.UStFrei, KundenAdressen.ID, KundenAdressen.KundenID, KundenAdressen.KName, KundenAdressen.KNachname, KundenAdressen.KStrasse, KundenAdressen.KPlz, KundenAdressen.KOrt, KundenAdressen.KAktuelle_Adresse
FROM Kunden LEFT JOIN KundenAdressen ON Kunden.KundenID = KundenAdressen.KundenID
WHERE (((Kunden.KundenID=" & Me!KundenID & " ) AND ((KundenAdressen.KAktuelle_Adresse)=True));"
und optimiert (code-formatiert bis auf Reduktion der Selectliste):
ZitatMe!aktiveadresse.RowSource = "SELECT Kunden.KundenID, KundenNR, KundenNachname, KundenAnrede, KundenName, " & _
" KundenPrivat, Kunden_TrägerID, Kunden_Strasse, Kunden_PLZ, Kunden_Ort, Kunden_Tel, " & _
" Kunden_Mob, Kunden_Stundensatz, Kunden_Kilometer, Kunden_Abrechnung_von, Kunden_Bemerkung, " & _
" UStFrei, ID, KundenAdressen.KundenID, KName, KNachname, KStrasse, " & _
" KPlz, KOrt, KAktuelle_Adresse " & _
" FROM Kunden LEFT JOIN KundenAdressen ON Kunden.KundenID = KundenAdressen.KundenID " & _
" WHERE Kunden.KundenID=" & Me!KundenID & " AND KAktuelle_Adresse=True"
Danke euch allen, der letzte Code von Franz hat funktioniert...
Sonntag gerettet...
MFG einen schönen Sonntag euch!