Freitext-Suche bringt Fehler

Moderator: ModerationP

Freitext-Suche bringt Fehler

Beitragvon accessGast » 16. Jan 2018, 07:44

Hallo und Guten Morgen
Ich habe ein Problem mit meiner Freitext-Suche.

Gebe ich einen Suchbegriff ein, der in der Datenbank vorhanden ist, funktioniert die Suche problemlos. Mehr Zeichen im Suchbegriff, schränkt das Ergebnis ein, weniger Zeichen vergrößert die Datensätze im angezeigten Endlosformular.

Wenn ich aber ein Wort eingebe, welches es in dem Suchstring nicht gibt, kommt ein Fehler. (Laufzeitfehler 2185) Aber ich finde einfach das Problem nicht. Ich habe in einer anderen DB den gleichen Aufbau. Dort kann ich sonst was eingeben und er bringt keinen Fehler. Hat vielleicht jemand eine Idee, was in dem Code dafür verantwortlich sein könnte? Datenherkunft ist eine Abfrage mit einem zusammengesetzten Feld aus "allen" Feldern, worin dann gesucht wird.
Was auch ein Problem ist, wenn man dieser Fehler erscheint und man möchte dann Zeichen für Zeichen aus dem txt_SuBegriff löschen, erscheint bei jedem Zeichen was man weg nimmt wieder der Laufzeitfehler. Bis alle Zeichen raus sind.
Der Debugger markiert dann die Zeile If Not Len.....

Code: Alles auswählen
Private Sub txt_SuBegriff_Change()
Dim strFilter As String
    Dim intStart As Integer
    intStart = Me!txt_SuBegriff.SelStart
    If Not Len(Me!txt_SuBegriff.Text) = 0 Then
        strFilter = "SuchFeld Like '*" & Me!txt_SuBegriff & "*'"
         Me.Filter = strFilter
        Me.FilterOn = True
        Me!txt_SuBegriff.SelStart = intStart
    Else
        Me.Filter = ""
        Me.FilterOn = False
        Me!txt_SuBegriff.SetFocus
    End If
End Sub
accessGast
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 53
Registriert: 20. Apr 2016, 11:13

Re: Freitext-Suche bringt Fehler

Beitragvon mmarkus » 16. Jan 2018, 11:13

Das was aus meiner Sicht zu einem Problem führt ist, die Anweisung:

strFilter = "SuchFeld Like '*" & Me!txt_SuBegriff & "*'"

Weil du hier auf Value statt auf Text zugreifst.
Hier also mit einer kleinen Änderung.
Falls du den With Operator nicht kennst, ist es vielleicht etwas verwirrend.

Code: Alles auswählen
Private Sub txt_SuBegriff_Change()
    Dim intStart As Integer
   
    With txt_SuBegriff
        intStart = .SelStart
        If Not Len(.text) = 0 Then
            Me.Filter = "SuchFeld Like '*" & .text & "*'"
            Me.FilterOn = True
            .SelStart = intStart
        Else
            Me.Filter = ""
            Me.FilterOn = False
            .SetFocus
        End If
    End With
End Sub
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 784
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Freitext-Suche bringt Fehler

Beitragvon Joss » 16. Jan 2018, 11:43

Du kannst auch im DBWiki mal nachschauen.
http://dbwiki.net/wiki/VBA_Tipp:_Suchen_(Filtern)_im_Endlosformular

Gruß
Josef
Meine Suchmaschine: www.fireball.de | Access-Wiki: www.dbwiki.de
Joss
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 156
Registriert: 20. Okt 2012, 11:38

Re: Freitext-Suche bringt Fehler

Beitragvon accessGast » 16. Jan 2018, 12:46

Hallo Joss

Vielen Dank für die Reaktion.
Ich werde mir das in DBWiki noch einmal genau anschauen.

Hab es jetzt mit Deinem Code versucht. Leider das gleiche Problem. Sobald man drei Zeichen eingibt, die es in der Zusammenfolge so nicht gibt, meckert er bei jedem Zeichen was man hinzufügt oder wieder aus dem Suchfeld wegnehmen möchte. "Laufzeitfehler 2185 Sie können auf die Eigenschaften oder Methoden eines Steuerelements nur verweisen, wenn das Steuerelement den Fokus hat"
Bsp.:
txt_SuBegriff: Schrank.. findet Kleiderschrank, Anstellschrank, Aktenkleiderschrank
txt_SuBegriff: Wand... findet Aktenkleiderschrank, Schrankwand, Schiebetürenschrank

txt_SuBegriff: scr (die Kombi kommt als Wort nirgends vor) fängt er ab dem "r" mit dem Laufzeitfehler an. Den bestätige ich mit Debuggen...

Dann ist diese Zeile im Code markiert:

Code: Alles auswählen
.SelStart = intStart


Editor schließen, okay.. Ist das Suchformular weiterhin leer und wenn ich in das Suchfeld reinklicke, um den letzten der drei Buchstaben das "r" wegzunehmen.. kommt beim wegnehmen sofort wieder Laufzeitfehler
dann jedoch mit dieser Zeile markiert:

Code: Alles auswählen
 If Not Len(.Text) = 0 Then


Das ganze macht er dann so lange bis alle drei Buchstaben raus sind... Obwohl er ja ursprünglich bei den Buchstaben "sc" ja noch Ergebnisse anzeigt

Kann es manchmal auch an dem Formular liegen? Das Ereignis "bei Änderung" ist doch aber auch richtig, oder? Denn der ursprüngliche Code funktioniert ja in einer anderen Datenbank probemlos. Wobei es dort ja auch nur ein Feld ist und nicht ein aus der Abfrage zusammen gesetztes Feld. Kann das manchmal der Grund sein? Das immer der Laufzeitfehler ausgegeben wird?
accessGast
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 53
Registriert: 20. Apr 2016, 11:13

Re: Freitext-Suche bringt Fehler

Beitragvon accessGast » 17. Jan 2018, 14:34

Hallochen

Ich wollte mich noch einmal bedanken. Der Tipp mit der DBWiki war spitze. Habe mein Suchformular jetzt nach diesem Beispiel angepasst. Funktioniert super.

Kurz noch einmal zu meiner Problematik vorher. Ich habe festgestellt, dass wenn ich als Grundlage für die Daten eine Tabelle nehme, hat es ohne Laufzeitfehler funktioniert, nehme ich eine Abfrage (auch wenn ich eine neue erstelle) passiert der Fehler wieder.

Also noch einmal vielen Dank Joss,
für die Unterstützung und die Tipps.
accessGast
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 53
Registriert: 20. Apr 2016, 11:13


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste