Neuigkeiten:

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

Mobiles Hauptmenü

Wert aus ungeb. Textfeld an Kombifeld übergeben und auswählen per VBA

Begonnen von AvalonStealth, Mai 21, 2018, 07:47:48

⏪ vorheriges - nächstes ⏩

AvalonStealth

Hallo,
ich möchte folgendes realisieren.
In einem Formular wird per Kombinationsfeld ein Datensatz ausgewählt. Einfach, funktioniert.
Nun soll diese Auswahl auch auf einem Touch-Display möglich sein. Da die Bediener alle dicke Finger haben, soll die Eingabe der Datensatznummer über ein On-Screen Touchpad erfolgen. Das Touchpad hat ein ungebundenes Textfeld, in dem die eingegebene Nummer angezeigt wird, und soll diese Nummer nach Klick auf ein OK Feld an das Formular mit dem Kombifeld übergeben.
Auch dies funktioniert korrekt, dass Kombifeld wird aufgeklappt, der Wert übergeben und auch im Kombifeld angezeigt und auch hervorgehoben (dunkel hinterlegt). Alles gut!
Nun kommt mein Problem! Habe schon alles mögliche probiert.
Wie bringe ich nun das Kombifeld dazu, diesen Wert auch zu übernehmen? Dass heisst, zu diesem Datensatz zu springen?
Ein simples SendKeys {Enter} funktioniert nicht. Zahl bleibt im Kombifeld stehen, aber es wird nicht zum Datensatz gesprungen.
Hier mal mein bisheriger Code aus dem Touchpad:

Private Sub Befehl59_Click()
Forms!frmLoescherWerkstatt.SetFocus
Forms!frmLoescherWerkstatt!Kombinationsfeld2.SetFocus
Forms!frmLoescherWerkstatt!Kombinationsfeld2.Dropdown
Forms!frmLoescherWerkstatt!Kombinationsfeld2.Value = Me.Textfeld
    With Forms("frmLoescherWerkstatt")
        .Controls("Kombinationsfeld2").SetFocus
        SendKeys "{Enter}"
    End With
DoCmd.Close acForm, "frmNumPad", acSaveYes
End Sub

Es gibt keine Fehlermeldung, doch der Eintrag im Kombinationsfeld wird nicht angesprungen.
Klickt man jedoch mit der Maus auf den hervorgehobenen Datensatz, funktioniert es.
Wie realisiere ich diesen notwendigen "Mausklick" per VBA?
Powered by AvalonStealth

DF6GL

Hallo,

statt dem Sendkeys-Gemurkse:



Kombinationsfeld2_Click

falls die Klick-Ereignisprozedur die Filterung durchführt.


PS: sehe gerade, dass es sich um ein anderes Form handelt, das nicht den Code ausführt.

Dann:  Das Ereignis Kombinationsfeld2_Click   als Public Sub deklarieren und mit

Forms!frmLoescherWerkstatt.Kombinationsfeld2_Click

aufrufen.

AvalonStealth

Danke,
leider bleibt das Ergebnis gleich. Das Kombifeld funktioniert, Datensatz wird ausgewählt, doch im dazugehörigen Formular wird der Datensatz nicht aufgerufen.
Powered by AvalonStealth

Joss

Hallo AvalonStealth,

Zitat von: AvalonStealth am Mai 21, 2018, 07:47:48
In einem Formular wird per Kombinationsfeld ein Datensatz ausgewählt.
wie sieht der Code dazu aus?
Ist das ein Filtervorgang?

Gruß
Josef

Beaker s.a.

Hallo,
Versuche es mal so (Luftcode)
Private Sub Befehl59_Click()
    Dim frm As Access.Form
    Dim rst As DAO.Recordset

    Set frm = Forms!frmLoescherWerkstatt

    With frm
        .SetFocus
'----diesen Teil halte ich für überflüssig----------
        !Kombinationsfeld2.SetFocus
        !Kombinationsfeld2.Dropdown
        !Kombinationsfeld2.Value = Me.Textfeld
        .Controls("Kombinationsfeld2").SetFocus
'-----------------------------------------------------
        Set rst = .RecordsetClone
        rst.FindFirst "NameTabellenfeld = " & Me.Textfeld
        frm.Bookmark = rst.Bookmark

'oder als Filter
'.Filter = "NameTabellenfeld = " & Me.Textfeld
'.FilterOn = True

    End With

    DoCmd.Close acForm, "frmNumPad"  ', acSaveYes -> unnötig, da keine Entwurfsänderung vorliegt

rst.Close
Set rst = Nothing
Set frm = Nothing

End Sub


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)

AvalonStealth

#5
Hallo Beaker s.a.,
dein Ansatz ist korrekt, im nachhinein ganz logisch Und funktioniert!!!

Die Datenfilterung per Kombifeld funktioniert ganz normal per:

Private Sub Kombinationsfeld2_AfterUpdate()
Me.Recordset.FindFirst "feuID = " & Me.Kombinationsfeld2.Column(0)
Me.Kombinationsfeld2 = Null
End Sub
Funktioniert tadellos.

Den Datensatz per NumPad nun auch. Aktueller Code auf der NumPad Taste "OK":

Private Sub Befehl59_Click()
Dim frm As Access.Form
    Dim rst As DAO.Recordset

    Set frm = Forms!frmLoescherWerkstatt

    With frm
        .SetFocus
        Set rst = .RecordsetClone
        rst.FindFirst "feuID = " & Me.Textfeld
        frm.Bookmark = rst.Bookmark

    End With

    DoCmd.Close acForm, "frmNumPad" 

rst.Close
Set rst = Nothing
Set frm = Nothing

End Sub

Formular springt nun korrekt die richtige Datensatz ID an!

Vielen Dank für die kompetente Hilfe an alle Teilnehmer!!!!
Powered by AvalonStealth

Beaker s.a.

Hallo,
Freut mich, dass es funzt.
Kurze Anmerkung
Me.Kombinationsfeld2.Column(0)
.Column(0) ist das Gleiche wie .Value, kannst du dir also sparen,
da .Value die Standardeigenschaft ist.
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)