PDA

Vollständige Version anzeigen : Über Textfeld in Memofeld suchen


Arkor
14.06.2001, 17:11
Hallo Leute,

hab mal wieder eine Frage:

Habe hier ein Textfeld (255 Zeichen) und ein Memofeld.

In dem Textfeld sollen Suchbegriffen eingegeben werden, z. B.:
Hilfe HTML ASP

Dann soll das Memofeld durchsucht werden, ob einer oder mehrere der gesuchten Begriffe vorhanden sind, wenn man auf einen Suchen-Button klickt.

Die Begriffe im Memofeld sind so eingegeben:
HTML, ASP, Tipps

Wie mache ich das und wie kriege ich die Ausgabe so hin, das diejenigen Datensätze zuerst angezeigt werden, wo mehr "Treffer" waren und die zum Schluß, wo nur einer war? Am liebsten wäre mir, wenn auch noch angezeigt würde, welche Treffer bei den jeweiligen Datensätzen waren. Die Ausgabe der gefundenen Datensätze soll in einem Endlosformular erfolgen und die Anzeige der gefunden Worte soll nicht bei jedem Datensatz erscheinen, sondern eine Art Überschrift sein:

ASP, HTML, Hilfe
Datensatz 1
Datensatz 2
etc.
ASP, HTML
Datensatz 1
Datensatz 2
etc.
ASP, Hilfe
Datensatz 1
etc.

Weiß jemand eine Beispieldatenbank oder hat jemand eine Lösung parat? Ich krieg's nicht hin. :(

Arkor

Lupus
14.06.2001, 21:54
hallöle,

nennen wir das textfeld in dem der text steht der gesucht werden soll mal [Namen_Suche]
das memofeld nennem wir mal [Vorname]
gehst auf das eigenschaften von [Namen_Suche] auf "Nach Aktualisierung" stellst das auf [Ereignisprozedur] ein und
dann füge den code ein:
Private Sub Namen_Suche_AfterUpdate()
With CodeContextObject
DoCmd.GoToControl "Vorname"
DoCmd.FindRecord .Namen_Suche, acAnywhere, False, acDown, False, , True
If ((.VORNAME Like "*" & .Namen_Suche & "*") = False) Then
Beep
MsgBox "Vorname wurde nicht gefunden", vbInformation, "Suchfunktion: Vorname"
End If
End With
End Sub

ist es das weis du meinst ?

gruß lupus

Arkor
15.06.2001, 10:10
Hallo Lupus,

dein Tipp funktioniert leider nicht. Zum einen findet er nicht die gesuchten Datensätze und zum anderen löscht er bei Aktivierung die Einträge im Memofeld.

Arkor

Lupus
15.06.2001, 16:20
mh ... bei mir funktioniert es ..
wenn du willst, dann schicke mir doch mal deine datenbank .. ich schaue mal rein

Also, hab noch mal nachgeschaut:

Im Textfeld [Namen_Suche] kommt der Suchbegriff rein.
Das Memofeld heißt [VORNAME] in dem soll gesucht werden.
Das Textfeld [Namen_Suche] ist an keiner Datenbank gebunden, das Memofeld [VORNAME] gehört zu einer Datenbank:
Der Code lautet:

Private Sub Namen_Suche_AfterUpdate()
With CodeContextObject
DoCmd.GoToControl "Vorname"
DoCmd.FindRecord .Namen_Suche, acAnywhere, False, acDown, False, , True
If ((.VORNAME Like "*" & .Namen_Suche & "*") = False) Then
Beep
MsgBox "Vorname wurde nicht gefunden", vbInformation, "Suchfunktion: Vorname"
End If
End With
End Sub

Das Löschen des Textfeld [Namen_Suche] beim hingehen ist gar nicht drin ? Wieso löscht das bei dir ???

lupus

WalterS
15.06.2001, 16:36
Hallo Arkor!

Dein Problem ist nicht in einem Schritt zu lösen.

Da du ja eine Reihung deines Ergebnisses wünscht, musst du in der datenbank eiun zusätzliches Feld ( z.B Treffer) vom Tip Zahl, Integer hinzufügen.

1. Am Beginn jeder Auswertung das Feld Treffer in allen Datensätzen auf 0 setzen.

2. Deinen Suchstring in die entsprechenden Einzelteile aufteilen

2a Für jeden Einzelteil eine Aktualisierungsabfrage durchführen mit Treffer = treffer+1

3. Ergebnis sind die Datensätze mit Treffer > 0 und Sortierung Treffer absteigend.


Solltest du bei der Umsetzung der einzelnen Schritte Probleme haben, schreib wieder.