Hilfe bei Makro zum Suchen von Feldinhalten
Hallo Könner,
ich brauche bitte Unterstützung bei der Erstellung eines Makros.
In einem Formular habe ich ein ungebundenes Textfeld [txtSuchwort,]dessen Inhalt mithilfe eines Makros bei der Datensatzsuche in einem Feld (Ordnername)dient. Das funkt auch super - das Problem ist, dass ich jetzt ein Makro brauche, welches anhand des Suchbegriffes in dem Textfeld, drei Felder (Ordnername, Registertext, Dokumentenbezeichnung) gleichzeitig durchsuchen will. Ich habe mit dem Editor die verschiedensten Konstellationen durchprobiert, aber es wird immer nur in einem Feld gesucht.
Ich hoffe, dass ihr mir helfen könnt und danke euch im Voraus!
Gruß Stefan
Antwort schreiben
Antwort 1 von Gudrun11 vom 02.02.2019, 11:57 Options
Hallo,
was willst Du genau machen ?? Einen betimmten Datensatz suchen oder eine gewisse Menge von Datensätzen nach Kriterien herausfiltern ??
Gruß
Gudrun
Antwort 2 von vaddaziegler vom 02.02.2019, 14:40 Options
Hi Gudrun,
ich will einen bestimmten Datensatz [txtSuchwort] suchen und natürlich, da Begriffe mehrfach vorkommen, auch weitersuchen. Es klappt zwar mit "Suchen Datensatz" und "Suchen Weiter" aus den auszuwählenden Makrobefehlen sehr gut - aber ich kann nur den Fokus auf ein Steuerelement setzen (zumindest schaffe ich es nicht andes bisher) und nicht gleichzeitig/nacheinander auf die genannten Drei: Dokumentenname;Registertext;Dokumentenbezeichnung. Der Cursor springt immer nur in den Datensätzen von einem Steuerelement zum gefundenen Datensatz.
Hast Du dazu einen Tipp??
Gruß
Stefan
Antwort 3 von erik vom 03.02.2019, 22:26 Options
Hallo Stefan,
theoretisch müsste es reichen, wenn du in deinem Makro die Eigenschaft "Nur aktuelles Feld" auf "Nein" stellst, dann würden neben den drei geforderten Felder alle restlichen aber ebenso durchsucht werden.
Wenn du nichts gegen VBA-Code hast, dann solltest du das hier ausprobieren:
Private Sub txtSuchwort_AfterUpdate()
Dim strFilter As String
With Me
If Not IsNull(.txtSuchwort) Then
strFilter = "[Ordnername] LIKE '" & .txtSuchwort & "' OR " & _
"[Registertext] LIKE '" & .txtSuchwort & "' OR " & _
"[Dokumentenbezeichnung] LIKE '" & .txtSuchwort & "'"
.Filter = strFilter
.FilterOn = True
Else
.FilterOn = False
End If
End With
End Sub
Wähle in den Eigenschaften des Suchfeldes unter "Nach Aktualisierung" den Eintrag "[Ereignisprozedur] aus und klicke dahinter auf "...". Füge dann den obigen Code ein.
Dieses Beispiel durchsucht gleichzeitig alle drei von dir genannten Felder. Um den Filter später wieder zu entfernen reicht es, wenn du dann den Inhalt des Suchfeldes wieder entfernst. Dank des LIKE-Operators kannst du dann auch nach Teilen von Wörtern suchen, so findet "*a*" alle Begriffe, in denen ein "a" vorkommt. :-)
Gruß
erik
Antwort 4 von vaddaziegler vom 04.02.2019, 11:01 Options
Hi Erik,
Zitat:
theoretisch müsste es reichen, wenn du in deinem Makro die Eigenschaft "Nur aktuelles Feld" auf "Nein" stellst, dann würden neben den drei geforderten Felder alle restlichen aber ebenso durchsucht werden.
Das habe ich versucht, aber es führte zu keinem Ergebnis, kein Datensatz wurde als gefunden markiert.
Ich werde morgen deinen Vorschlag ausprobieren und teile dann das Ergebnis an dieser Selle mit - bis dahin viele Dank!
Stefan
Antwort 5 von vaddaziegler vom 06.02.2019, 13:24 Options
Hi Erik,
vielen, vielen Dank!
VBA-Code funktioniert großartig.
Gruß
Stefan