Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: VIE81 am Juni 15, 2020, 11:53:29

Titel: OpenArgs-Problem
Beitrag von: VIE81 am Juni 15, 2020, 11:53:29
Hallo!

Ich habe ein Problem mit OpenArgs, bei dem ich hoffe, dass mir jemand von Euch helfen kann.

Ausgangslage:


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 Sub


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.

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
Titel: Re: OpenArgs-Problem
Beitrag 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.
Titel: Re: OpenArgs-Problem
Beitrag von: VIE81 am Juni 15, 2020, 12:08:49
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  :)
Titel: Re: OpenArgs-Problem
Beitrag 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

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


Titel: Re: OpenArgs-Problem
Beitrag von: VIE81 am Juni 15, 2020, 12:55:13
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
Titel: Re: OpenArgs-Problem
Beitrag von: ebs17 am Juni 15, 2020, 13:46:16
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.