Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Laufzeitfehler 2185 bei Suche im Formular

Begonnen von claus66, November 24, 2016, 10:34:17

⏪ vorheriges - nächstes ⏩

claus66

Mittels eines ungebundenen Textfeld (txtSucheStyle) möchte ich Daten aus dem Detailbereich filtern.

Mit nachstehendem Code klappt eigentlich alles wunderbar, jedoch bei der Konstellation, dass es keine Übereinstimmung zwischen zwischen dem Suchfeld txtSucheStyle und dem Detailbereich gibt, erhalte ich die Fehlermeldung 2185 ("Sie können auf die Eigenschaften oder Methoden eines Steuerelements nur verweisen, wenn das Steuerelement den Fokus hat).
Beim Debuggen markiert er dann die Zeile "Me!txtSucheStyle.SelStart = intStart" in gelb.

Muss noch dazu sagen, dass ich den nachstehenden Code aus einer Beispiel-Anwendung kopiert habe und nur den Namen des Suchfeldes geändert habe.

Hat jemand einen Tip für mich? Vielen Dank im Voraus.

Private Sub txtSucheStyle_Change()

    Dim strFilter As String
    Dim intStart As Integer
    intStart = Me!txtSucheStyle.SelStart
    If Not Len(Me!txtSucheStyle.Text) = 0 Then
        strFilter = "Style LIKE '" & Me!txtSucheStyle.Text & "*'"
        Me.Filter = strFilter
        Me.FilterOn = True
        Me!txtSucheStyle.SelStart = intStart
    Else
        Me.Filter = ""
        Me.FilterOn = False
        Me!txtSucheStyle.SetFocus
    End If

End Sub


crystal

Hallo,

meine bescheidene Meinung ist, dass du den Code in ein anderes Event kopiert hast. Im change-Event ist für selstart (und sellength, was hier komplett fehlt) schon zu spät.


Private Sub txtSucheStyle_Change()

    Dim strFilter As String
'    Dim intStart As Integer
'    intStart = Me!txtSucheStyle.SelStart
    If Not Len(Me!txtSucheStyle.Text) = 0 Then
        strFilter = "Style LIKE '" & Me!txtSucheStyle.Text & "*'"
        Me.Filter = strFilter
        Me.FilterOn = True
'        Me!txtSucheStyle.SelStart = intStart
    Else
        Me.Filter = ""
        Me.FilterOn = False
'        Me!txtSucheStyle.SetFocus
    End If
    Me!txtSucheStyle.SetFocus

End Sub


Wahrscheinlich wird durch die Zuweisung         
Me.FilterOn = True/False
ein Event-Kaskade ausgelöst, die den Fokus (z.B. im current-event) auf ein anderes Feld setzt.
Deshalb könnte es auch klappen, wenn du unmittelbar danach
Me!txtSucheStyle.SetFocus
einfügst (so wie im else-Zweig) - oder eben nach end if.

"selstart" ist im Code wohl übrig geblieben, weil der Autor erreichen wollte, das auch Teile des Feldes in den Suchstring eingesetzt werden können. Ob das allerdings im change-event gemacht werden kann, ist fraglich... Ich kenne ein selectionchange-event nur im Form-Kontext und habe damit keine Erfahrung.

lg
crystal


Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

Josef P.

Hallo!

Ist das Steuerelement für de Suchtext im Detailbereich des Formulars?
Dieser ist nämlich nicht verfügbar, wenn es keinen Datensatz im Formular gibt und ein Anfügen nicht möglich/erlaubt ist.

mfg
Josef

claus66

@ Josef P.: Ja, das Steuerelement für den Suchtext befindet sich im Detailbereich. Soll ich dieses mal in den Formularkopf verschieben?