2.1k Aufrufe
Gefragt in Datenbanken von
Hallo Spezialisten!

Ich hab in einem Endlosformular ein "Suchfeld" Vorname in das dann zB Hans eingegeben wird und daraufhin wird das Formular nach allen Hans gefiltert. Wenn ich aber zB "Hx..." eingebe, also einen Namen, den es nicht gibt, bekomme ich eine Fehlermeldung "Laufzeitfehler 2185: Sie können die Eigenschaften oder Methoden eines Steuerelements nur dann auswerten, wenn das Steuerelementde Fokus hat". Gibt es eine Möglichkeit, eine Meldung ausgeben zu lassen, dass es den Eintrag nicht gibt oder wenigstens, dass nichts passiert, also nicht der "Debugger" gestartert wird?

Vielen Dank im Voraus für jede Idee !!!

Private Sub SFVorname_Change()
If Nz(Me!SFVorname.Text) <> "" Then
Me.Filter = "Vorname Like '" & Me!SFVorname.Text & "*'"
Me.FilterOn = True
Else
Me.FilterOn = False
Exit Sub
End If
Me!SFVorname.SelStart = Len(Me!SFVorname.Text)

End Sub

5 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

zwei Fragen.
Warum verwendest du die SelStart-Eigenschaft und warum .Text statt .Value? Zu Text und Value findest du eine gute Hilfe in Access, was ich nicht besser ausdrücken könnte. Einfach den Cursor auf .Text stellen und F1 drücken.

Gruß
Ralf
0 Punkte
Beantwortet von
Hallo Ralf,

ich habe mir den Code "zusammengesucht" und rumprobiert, da ich in VBA überhaupt (noch) nicht fit bin! Daher weiss ich leider nicht, warum hier die SelStart-Eigenschaft genommen wurde.

Ich habe .text mal gegen .value ausgetauscht, aber dann funktioniert das ganze Formular bzw. das Filtern nicht mehr.

Die Hilfe hierzu habe ich mir angeschaut, aber dafür reicht´s bei mir leider einfach nicht ...

Trotzdem danke für Deine Hilfe!
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

ich würde die Zeile mit "selStart" auskommentieren (einfach ' vor die Zeile setzen). Das sollte das Problem mit der Fehlermeldung erst einmal beseitigen.

Gruß
Ralf
0 Punkte
Beantwortet von
Hallo Ralf,

wenn ich die auskommentiere, funktioniert´s aber leider nicht mehr, dann kann ich immer nur einen Buchstaben eingeben ...
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo,

falls du nicht bei jedem neuen Buchstaben den Filter aktualisieren musst, hier ein nicht so resourcenfressende Variante:
Private Sub SFVorname_AfterUpdate()
If Nz(Me!SFVorname.Text) <> "" Then
Me.Filter = "Vorname Like '" & Me!SFVorname.Text & "*'"
Me.FilterOn = True
Else
Me.FilterOn = False
End If
Me!SFVorname = ""
End Sub

Ich gehe auf das Ereignis AfterUpdate, gefiltert wird also erst nach "return".

Gruß
Ralf
...