Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular öffnen und Wert an Kombinationsfeld übergeben

Begonnen von sugar76, Februar 18, 2020, 11:46:19

⏪ vorheriges - nächstes ⏩

sugar76

Hallo allerseits,

ausgehend von Formular frmPerson, möchte ich per VBA Formular frmPerson_Adressen öffnen. In  frmPerson_Adressen gibt es ein Kombinationsfeld  cmbPersonen. Beim Öffnen möchte ich das Kombinationsfeld frmPerson_Adressen.cmbPersonen mit dem Wert aus dem Textfeld frmPerson.Id selektieren.

Der Code zum Öffnen des Formulars:

DoCmd.OpenForm "frmPerson_Adressen"
Forms!frmPerson_Adressen!cmbPersonen.Value = Me.Id.Value
Forms!frmPerson_Adressen!cmbPersonen.Requery


Das Feld frmPersonen.Id.Value ist vom Typ Replikations-ID, die Spalte 0 im Kombinationsfeld ebenfalls.

Das Formular frmPerson_Adressen wird mit diesem Code auch geöffnet, aber das Kombinationsfeld frmPerson_Adressen.cmbPersonen bleibt leer.

Hat jemand eine Idee, woran das liegen könnte?

Gruß  :)

Beaker s.a.

Hallo,
Falls das "Requery" nötig ist, mach es zuerst, das setzt nämlich jedes RS zurück
auf den ersten DS.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

sugar76

Ich habe es doch selber hinbekommen.

Das Problem war: hinter dem Kombinationsfeld steckt eine Abfrage, Werte vom Typ GUID (Replikations-ID) enthält.

Im Kombinationsfeld ist die resultierende Spalte dann vom Typ vom Typ Variant/String und die Werte haben die Form  "{2F3CDBE4-872F-4807-9F33-72F7A7360798}".

Damit die Zuweisung Me.cmbPersonen.Value = Me.Id.Value klappt, muss man den Wert vom Me.Id.Value in einen String umwandeln. Leider kann man die Bibliotheks-Funktion StringFromGUID nicht einfach verwenden, da diese aus einer GUID folgendes macht:
"{guid {2F3CDBE4-872F-4807-9F33-72F7A7360798}}"

Ich habe mir daher eine Funktion geschrieben, welche die Umwandlung korrekt vornimmt:
Public Function MyStringFromGUID(Guid As Variant) As String
    MyStringFromGUID = Replace(Replace(StringFromGUID(Guid), "guid {", ""), "}}", "}")
End Function


Den Aufruf habe ich dann mit OpenArgs realisiert:
DoCmd.OpenForm "frmPerson_Adressen", OpenArgs:=MyStringFromGUID(Me.Id.Value)

Im Formular frmPerson_Adressen sieht das dann so aus:
Private Sub Form_Load()
    If Not IsNull(Me.OpenArgs) Then
        Me.cmbPersonen.Value = Me.OpenArgs
    End If
End Sub


Mann, da muss man erstmal drauf kommen ...