Suchfunktion

Hallo zusammen!

Ich stehe vor einem Rätsel. Und zwar habe ich ein Formular, in den sich klassische Adressfelder befinden. In diesen Feldern möchte eine komfortable Suchfunktion erstellen. Dazu habe ich einen Button erstellt, wenn man den anklickt, erscheint ein kleinen Popup-Formular, in das man den Suchtext eingeben und dann die Suche starten kann. Sowei so gut. Insgesamt funktioniert es auch, aber er findet nicht immer alle Datensätze (wenn z.B. nach „hh“ gesucht wird, müsste er ca. 20 Datensätze, bzw. Datenfelder finden. Kurioserweise taucht dieses Problem nicht immer auf. Wenn ich z.B. „haldes“ eingebe, findet er korekt zwei Mal die „Haldesdorfer Straße“.

Kann sich jemand mal den folgenden Code ansehen und mir einen Tipp geben?

Daaaaanke & viele Grüße aus Hannover

Private Sub btnSuchen_Click()
Dim Suchtext As String

Suchtext = Me.txtSuchen

DoCmd.SelectObject acForm, „formAnfang“

DoCmd.GoToControl („txtName_1“)
DoCmd.FindRecord Suchtext, acAnywhere, , acDown, , acAll, False

End Sub

Hallo Yuppi,

Private Sub btnSuchen_Click()
Dim Suchtext As String

Suchtext = Me.txtSuchen

ich würde die Eingabe auf das Wesentliche einschränken und ggf. vorhandene Leerzeichen entfernen. Z.B.:

Suchtext = LTRIM(RTRIM(Me.txtSuchen))

?? hast diese Zeile einen besonderen Grund? Falls nicht kann sie auch weggelassen werden.

DoCmd.SelectObject acForm, „formAnfang“

Grüße aus Essen
Wolfgang
(Netwolf)

Hi,

DoCmd.GoToControl („txtName_1“)
DoCmd.FindRecord Suchtext, acAnywhere, , acDown, , acAll, False

Das sagt die Hilfe:
Ausdruck.FindRecord(SuchenNach, Vergleichen, GroßKlein, Suchen, WieFormatiert, NurAktuellesFeld, AmAnfangBeginnen)

und dabei fällt mir auf:

  • Warum setzt du den Fokus auf das Feld „txtName_1“ wenn du mit „acAll“ doch in allen Feldern suchst?
  • du sucht mit „acDown“ abwärts ab dem Datensatz auf dem du stehst bis zum Ende. Mit der der letzten Option, die auf „false“ steht, verhinderst du aber, dass von Beginn gesucht wird.
    Das kann natürlich alles Absicht sein. Ich wundere mich nur.

Gruß (auch aus Hannover)
Quaser

Guten Morgen!

Hm, ich hatte den Fokus auf das textfeld gesetzt, weil mir ein „schlaues“ Buch das empfahl… aber wenn ich diesen Befehl weglasse, bekomme ich immer eine Fehlermeldung.

Deine anderer Hinweis hat mir leider auch nicht weitergeholfen. Ich hatte mit der Zeit sämtliche Variationen ausprobiert!

Danke für die Hilfe!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Netwolf!

Danke für Deinen Tipp, probiere ich gleich mal aus.

?? hast diese Zeile einen besonderen Grund? Falls nicht kann
sie auch weggelassen werden.

DoCmd.SelectObject acForm, „formAnfang“

Naja, die Suche starte ich in einem Popup-Formular, dann muss ich dem Programm ja „sagen“, wo gesucht werden soll…

Danke & Grüße aus Hannover

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Netwolf!

ich würde die Eingabe auf das Wesentliche einschränken und
ggf. vorhandene Leerzeichen entfernen. Z.B.:

Suchtext = LTRIM(RTRIM(Me.txtSuchen))

Leider hatte Dein Tipp nicht die gwünschte Lösung gebracht!

Bekomme leider nach wie vor falsche Ergebnisse.

Danke & Grüße!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Yuppi,

Bekomme leider nach wie vor falsche Ergebnisse.

ok, wie Quasar schon richtig schreibt: ändere das False in True am Ende deines Suchbefehls damit du auch vom Anfang an suchst.

DoCmd.FindRecord Suchtext, acAnywhere, , acDown, , acAll, TRUE

Grüße aus Essen
Wolfgang
(Netwolf)

Komisch, klappt trotzdem nicht so recht… habe aber eine andere Lösung. Einen Knopf für die Suche und einen zweiten für die „Weitersuche“

Danke & liebe Grüße

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]