Hallo!
Ich habe ein Problem mit OpenArgs, bei dem ich hoffe, dass mir jemand von Euch helfen kann.
Ausgangslage:
- in einem Hauptformular (Datenquelle "tblEreignisse") habe ich ein Unterformular (Datenquelle "tblPersonenEreignisse") eingebunden, das anhand der ID aus dem Hauptformular über eine Abfrage die Personen zu referenziert, die mit der ID aus dem Hauptformular verknüpft sind anzeigt. Das funktioniert soweit auch feherlfrei.
- im Unterformular habe ich 3 ungebundene Felder, die ich für eine Weiterverarbeitung (E-Mail senden mit DoCmd.Sendobjects) brauche. Die Daten sollen in ein ungebundenes Formular übergeben werden.
- in einem ungebundenen Formular (frmMailvorbereitung) verarbeite ich die Zusammenstellung von Daten aus dem Hauptformular für den E-Mail-Versand, das funktioniert soweit auch fehlerfrei.
- im Formular frmMailvorbereitung habe ich die 3 ungebundenen Textfelder ("mName", "mAdresse" und "mVerwendung"), in die mit OpenArgs jene Daten aus dem Unterformular übernommen werden sollen.
Soweit so gut; der Code für den Button aus dem Unterformular lautet wie folgt:
Private Sub taskAufforderung_Click()
Dim strPar As Variant
strPar = "mAdresse=" & Me.P_EMAIL_ADRESSE & "|" & "mName=" & Me.P_NAME_KOMB & "|" & "mVerwendung=" & Me.P_DIENSTEIGENSCHAFT
DoCmd.OpenForm "frmMailvorbereitung", , , , , , strPar
End Sub
Im Formular "frmMailvorbereitung" habe ich folgenden Code:
Private Sub Form_Open(Cancel As Integer)
Dim strPar As Variant
strPar = Split(Me.OpenArgs, "|")
End SubWenn ich mir die zu übergebenen Daten in einer MsgBox anzeigen lasse, dann sehe ich, dass die Daten auch "ankommen", die Felder bleiben aber seltsamerweise leer.
Kann mir jemand von Euch vielleicht einen Tipp geben, was ich falsch mache bzw. ob ich dabei etwas vergessen habe?
Danke für Eure Hilfe.
Viele Grüße,
VIE81
Zitat von: VIE81 am Juni 15, 2020, 11:53:29
Wenn ich mir die zu übergebenen Daten in einer MsgBox anzeigen lasse, dann sehe ich, dass die Daten auch "ankommen", die Felder bleiben aber seltsamerweise leer.
Du bzw. dein Code muss sich darum kümmern, dass die Steuerelemente gefüllt werden.
Zitat von: PhilS am Juni 15, 2020, 12:05:41
Zitat von: VIE81 am Juni 15, 2020, 11:53:29
Wenn ich mir die zu übergebenen Daten in einer MsgBox anzeigen lasse, dann sehe ich, dass die Daten auch "ankommen", die Felder bleiben aber seltsamerweise leer.
Du bzw. dein Code muss sich darum kümmern, dass die Steuerelemente gefüllt werden.
Hmmm - und da hänge ich offenbar :-\
Kannst Du mir hier bitte auf die Sprünge helfen?
DANKE :)
Nur mal den groben Ansatz skizziert:
Private Sub Form_Open(Cancel As Integer)
Dim strPar As Variant
strPar = Split(Me.OpenArgs, "|")
Me.txtAdresse.Value = strPar(0)
End Sub
Natürlich hast du dann auch das "mAdresse=" mit in dem Steuerelement.
Es gibt verschiedene Ansätze, wie man das tatsächlich umsetzt. Du könntest den Steuerelementnamen in den String schreiben, dann nochmal bei Gleichheitszeichen splitten und anhand des ersten Teils das Steuerelement erkennen und ihm den zweiten Teil als Wert zuweisen.
Ungesteter Luftcode:
Private Sub Form_Open(Cancel As Integer)
Dim strPar As Variant
dim i as long
strPar = Split(Me.OpenArgs, "|")
for i = lbound(strpar) to Ubound(strPar)
Me.Controls(Split(strPar,"=")(0)).value = Split(strPar,"=")(1)
next i
End Sub
Zitat von: PhilS am Juni 15, 2020, 12:41:01
Nur mal den groben Ansatz skizziert:
Private Sub Form_Open(Cancel As Integer)
Dim strPar As Variant
strPar = Split(Me.OpenArgs, "|")
Me.txtAdresse.Value = strPar(0)
End Sub
DANKE PhilS!
Das wars - ich habe nun aber noch im Code, wo ich strPar definiere die Feldbezeichnungen weggenommen, da die Namen der Felder sinngemäß natürlich nicht im Textfeld stehen sollen.
Funktioniert super ;)
Danke nochmals und viele Grüße,
VIE81
Im Form_Open würde man vorteilhaft immer OpenArgs zuerst auf IsNull prüfen. Das versetzt einen auch problemfrei in die Lage, das Formular zusätzlich in anderer Weise, z.B. als Nur-Eingabeformular, zu nutzen.