Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" 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 ...