Discussion:
Datensatz suchen mit FindRecord
(zu alt für eine Antwort)
Riebeck, Marcel
2003-08-14 12:30:43 UTC
Permalink
Hi,

in einem Formular habe ich ein Textfeld zur Sucheingabe erstellt. Der
gewünschte Begriff soll in allen Datensätzen und in allen Feldern gesucht
werden. Ich verwende dafür folgenden code:

DoCmd.FindRecord Me.Suchfeld, acAnywhere, 0, acSearchAll, True, acAll, True

Wenn ich jetzt einen Begriff suche, der im ersten Datensatz steht, dann wird
dieser angezeigt. Wenn allerdings ein Begriff gesucht wird, der in einem der
anderen Datensätze steht, wird dieser nicht gefunden, obwohl vorhanden.

Was muss ich andern, dass die Suche funktioniert?

Vielen Dank und Grüße.

Marcel
Emilia Maxim
2003-08-17 14:48:49 UTC
Permalink
Post by Riebeck, Marcel
Hi,
in einem Formular habe ich ein Textfeld zur Sucheingabe erstellt. Der
gewünschte Begriff soll in allen Datensätzen und in allen Feldern gesucht
DoCmd.FindRecord Me.Suchfeld, acAnywhere, 0, acSearchAll, True, acAll, True
Wenn ich jetzt einen Begriff suche, der im ersten Datensatz steht, dann wird
dieser angezeigt. Wenn allerdings ein Begriff gesucht wird, der in einem der
anderen Datensätze steht, wird dieser nicht gefunden, obwohl vorhanden.
Was muss ich andern, dass die Suche funktioniert?
Marcel,

du schreibst nicht, in welchem Ereignis obiger Code verwendet wird.
Fürs Weitersuchen bräuchtest den gleichen Befehl, nur mit False als
letztes Parameter, der ja als 'Am Anfang beginnen' definiert ist.
Siehe auch Hilfe zu FindRecord-Methode.

Ich würde mal sagen, du könntest noch eine Schaltfläche
"Weitersuchen" erstellen, die im Klick-Ereignis die abgewandelte Zeile
enthält:

DoCmd.FindRecord Me!Suchfeld, acAnywhere, 0, acSearchAll, True, acAll,
False

Gruß
Emilia

Emilia Maxim, Stuttgart
http://www.maxim-software-service.de
Emilia Maxim
2003-08-19 16:36:21 UTC
Permalink
Ist der gesuchte Begriff im ersten Datensatz enthalten, dann wird dieser
auch angezeigt, wenn nicht dann wird auch nichts angezeigt. Das Problem ist
jetzt aber, dass weitere Datensätze nicht durchsucht werden, obwohl der
gesuchte Begriff dort enthalten ist. Als Ereingis nutze ich click.
Scheinbar wird nur der aktuelle Datensatz durchsucht, leider ich habe noch
keine Idee, wie ich das beheben kann.
Marcel,

ich hab's gefunden. Das steht in der Hilfe:

===============
Die Methode FindNext führt die Aktion SuchenWeiter in Visual Basic
aus. Weitere Informationen zu dieser Aktion und ihren Argumenten
finden Sie unter dem Thema zur jeweiligen Aktion.

Syntax

DoCmd.FindNext
===============

Da du ein Click-Ereignis nutzt, vermute ich eine Schaltfläche
dahinter, auf dem steht 'Suchen' o.ä.. Dann ist es wirklich am
einfachsten, eine zweite Schaltfläche 'Weitersuchen' zu erstellen, in
dessen Click Ereignis obiger Befehl steht. Das Ding braucht keine
Parameter, es nimmt automatisch die Kriterien von der letzten Suche -
siehe auch Hilfe zu SuchenWeiter-Aktion.

Gruß
Emilia

Emilia Maxim, Stuttgart
http://www.maxim-software-service.de
Peter Doering
2003-08-19 17:39:09 UTC
Permalink
Hallo Marcel,

ToFu entsorgt, siehe http://www.got.to/quote
Danke für Deinen Vorschlag, leider ist es aber so, dass mein Suchbebegriff
in einer LiteraturDB in mehreren Feldern in allen Datensätzen zu suchen ist
und aktuell nur der erste Datensatz durchsucht wird.
Ist der gesuchte Begriff im ersten Datensatz enthalten, dann wird dieser
auch angezeigt, wenn nicht dann wird auch nichts angezeigt. Das Problem ist
jetzt aber, dass weitere Datensätze nicht durchsucht werden, obwohl der
gesuchte Begriff dort enthalten ist. Als Ereingis nutze ich click.
Scheinbar wird nur der aktuelle Datensatz durchsucht, leider ich habe noch
keine Idee, wie ich das beheben kann.
Bin nicht sicher, ob FindRecord das ist, was du brauchst. Ich denke, du
solltest ein selektiertes Recordset aufbauen und dem Formular als
Recordsource zuweisen. Dazu muesstest du aber jedes Feld manuell
ansprechen, z.B.

Private Sub fldSuche_AfterUpdate()
Dim strSel As String
strSel = "SELECT Feld1, Feld2, ... FROM DeineTabelle " & _
" WHERE Feld1 LIKE '" & Me!fldSuche & "' " & _
" OR Feld2 LIKE '" & Me!fldSuche & "' ...
Me!RecordSource = strSel
End Sub

Als Ergebnis haettest du ein Formular, das alle Treffer enthaelt.

HTH - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Loading...