PDA

Vollständige Version anzeigen : Laufzeitfehler '2185'


Gudula
24.02.2008, 22:24
Hallo

ich beschäftige mich seit einigen Tagen mit Access VBA und habe mir zu diesem Zweck ein Formular erstellt, wo im oberen Teil die Formularfelder aufgelistet werden und im unteren Teil eine Liste aus einer Abfrage. Beim Klick auf die Liste werden die Daten in den oberen Formularfeldern dargestellt.

Jetzt möchte habe ich noch ein Suchfeld einfügen und einen Button. Mit den Eingaben des Suchfeldes möchte ich dann die Liste noch filtern, aber nicht beim Änderung des Suchfeldes (Change) sondern bei Klick auf den Button.


Sub sucheNachBegriff()
Dim strSuchbegriff As String

'Suchbegriff in Variable speichern
>>>>>> strSuchbegriff = Me!txtSuche.Text

'Neue Datensatzherkunft zuweisen
Me.lstBetrieb.RowSource = "SELECT * FROM qryBetriebAbHeute WHERE Firma LIKE '*" & strSuchbegriff & "*'"

'Inhalt des Listenfeldes aktualisieren
Me.lstBetrieb.Requery
End Sub

Private Sub cmbSuche_Click()
Me!cmbSuche.SetFocus
sucheNachBegriff
End Sub


>>>> Zeile wird beim Debuggen markiert.

Bei Änderung (Change) Suchfeld geht es, beim Klick auf den Button nicht. Hier kommt folgender Fehler:

Laufzeitfehler '2185'

Sie können die Eigenschaften und Methoden eines Steuerelements nur dann
auswerten, wenn das Steuerelement den Fokus hat

Was habe ich falsch gemacht? Ich habe auch mal testweise den Fokus auf den Button gesetzt und auch auf andere Felder, aber der Fehler war der gleiche.

Josef P.
24.02.2008, 22:35
Verwendet statt .Text die Eigenschaft .Value
(Details siehe OH.)

achtelpetit
24.02.2008, 22:37
Mir fällt auf
Private Sub cmbSuche_Click()
Me!cmbSuche.SetFocus
sucheNachBegriff
End Sub
Du setzt den Focus auf das Element, daß ihn schon hat, nämlich durch den Klick.
strSuchbegriff = Me!txtSuche.Text

Wahrscheinlich willst Du doch den im Feld eingetragenen Wert auslesen, der heißt Value, da Value die Standardeigenschaft ist reicht Me!txtSuche

Gudula
25.02.2008, 08:16
Jo, vielen Dank, es lag am value.

wg. dem setfocus, ich habe, bevor ich hier die Frage gestellt habe, erst einmal nach dem Laufzeitfehler gegoogelt und u.a. stand dort ein Beitrag mit ungefährem Wortlaut "... dann setz den Fokus auf das Feld " oder ".. einen Fokus auf ein Hilfsfeld setzen" und einiges mehr. Ich habe das alles mal durchprobiert, deshalb lag noch der Fokus auf dem Button. ;)

Also ich weiß noch nicht genau, wie Access tickt, aber ich werds noch begreifen.

Nochmals vielen Dank für die nette Hilfe :)

Craig Marduk
06.03.2008, 09:25
Ich habe auch ein Problem in diesem Umfeld.

Ich habe ein Formular mit einer Textbox zur Eingabe. Ich möchte die Eingabe in diese Textbox während der Eingabe abprüfen und Aktionen ausführen. Dazu habe ich mir folgende Funktion gebaut.

Private Sub Name_der_Textbox_Change()
If Len(Name_der_Textbox.Text) = 7 And IsNumeric(Name_der_Textbox.Text) = True Then
Commandbutton.SetFocus
ElseIf Len(Name_der_Textbox.Text) = 0 Or Len(Name_der_Textbox.Text) = 1 Then
'Felder leeren
End If

End Sub

Diese Prozedur wird ausgeführt, sobald ich etwas in das Textfeld schreibe.
Das hat soweit auf verschiedenen Formularen auch prima funktioniert. Aber jetzt habe ich diese Routine in eine Formular eingefügt und bekomme Probleme.
Wenn ich das Attribut ".Text" lasse, bekomme ich den Laufzeitfehler 2185. Wenn ich das Attribut weglasse oder auf ".Value" ändere, bekomme ich den Feldinhalt "Null" zurück. Das kann aber nicht sein, da die Funktion ja nur ausgeführt wird, wenn ich etwas in das Textfeld eingebe.

Kann mir da jemand helfen? Vielen Dank im Voraus.

Hinweis: Ich arbeite mit Access97.