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?
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.
Danke,
leider bleibt das Ergebnis gleich. Das Kombifeld funktioniert, Datensatz wird ausgewählt, doch im dazugehörigen Formular wird der Datensatz nicht aufgerufen.
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
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
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!!!!
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