Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TDBF - Suchen (mit Wildcards) (https://www.delphipraxis.net/34566-tdbf-suchen-mit-wildcards.html)

moelski 24. Nov 2004 19:47


TDBF - Suchen (mit Wildcards)
 
Moin !

Ich progge mir gerade meine erste DB Anwendung. Und zwar brauche ich für ein anderes Projekt eine EMail/Newsletter Verwaltung. Dort kann ich Name, Ort, ...., Mail und ein Boolean ablegen für Newsletter ja/nein. Dazu noch ein Memo wo ich einen Text hinterlegen kann.
Als DB verwende ich die TDBF. Weil das reicht mir vollkommen und ich brauche die BDE nicht.
Ich habe das Prog mitlerweile ganz gut am rennen. Sprich Eingaben und Ausgaben gehen wunderbar. Aber nun müsste ich ein bisserl über die DB Suchen, um mir entsprechende Maillisten generieren zu lassen. Nur wie !?

Eins muss ich noch dazu sagen ... In meiner DB gibts z.B. so ne Tabelle (is in Echt etwas umfangreicher).
Name | EMail | Gerät
Nun müsste ich nach bestimmten Geräten suchen. Bräuchte aber Wildcards, denn es gibt z.B. ein ISL 6 und ISL 8 oder einer nennt es z.B. Schulze ISL. Was mich nun interessiert ist das "ISL". Und dazu brauche ich dann alle Mailadressen.
Kurzum kann man da irgendwie was mit Wildcards machen, oder geht das mit der DB nicht? Und wie sollte man die Suche bewerkstelligen? Mit Locate!? Muss ich dann in einer For Schleife die ganzen einzelnen Sätze durchgehen, oder macht das Locate selber? Und wenn letzteres wie Suche ich dann weiter!?

Hänge da im Moment irgendwie ein bisserl und hoffe mir kann da einer 1-2 Tips geben. Thx!

mirage228 24. Nov 2004 19:49

Re: TDBF - Suchen (mit Wildcards)
 
Hi,

soweit ich weiss gibt es den SQL Befehl "like" mit dem Auf Ähnlichkeit prüfen kann (Hier im Forum suchenSQL LIKE).

Alternativ könntest Du alles Datensätze durchgehen und diese mit einem Hier im Forum suchenRegEx matchen.

mfG
mirage228

moelski 24. Nov 2004 19:53

Re: TDBF - Suchen (mit Wildcards)
 
Moin !

Zitat:

SQL Befehl
Öhm, ich habe da ne DBase IV Datenbank. Leider keine SQL. Und die Befehle gibt es nicht für meine DB (oder ich finde sie nicht :roll: ).

Also wie gesagt ich habe hier eine TDBF Datenbank und kein SQL.

mikhal 25. Nov 2004 05:21

Re: TDBF - Suchen (mit Wildcards)
 
Wenn es die Eigenschaften Filter und Filtered gibt, versuch es mal damit. In die Eigenschaft Filter setzt du die WHERE-Klausel einer SQL-Anwendung und mit Filtered = TRUE setzt du den Filter, Beispiel:

Code:
...
var
  SuchStr: String;
...
SuchStr := 'blubber';
with TDBF1 do
begin
  Filtered := False;
  Filer := 'NAME LIKE ' + QuotedStr('%' + SuchStr + '%');
  Filtered := True;
end;
...
Grü0e
Mikhal

moelski 25. Nov 2004 07:15

Re: TDBF - Suchen (mit Wildcards)
 
Moin!

Mit dem Filter kann ich zwar suchen, aber nicht nach einem Teilstring. Was noch geht ist z.B. M* > also alles suchen was mit M anfängt.
Ich brauche aber zwingend eine Teilstringsuche. Bsp: In der Tabelle steht folgender String: "Hallo 123Welt". Nun möchte ich eine Suchanfrage starten, die mir als Ergebnis alle Datensätze liefert, wo in dem String 123 vorkommt.
Weiterhin bräuchte ich ne Möglichkeit, um zu prüfen ob in der Tabelle ein Boolscher Wert True oder False ist.

mikhal 25. Nov 2004 08:20

Re: TDBF - Suchen (mit Wildcards)
 
Schon mal versucht, das % durch * zu ersetzen?

Normalerweise kann ich auch in einem Filter mit LIKE hantieren...

Grüße
mikhal

shmia 25. Nov 2004 10:13

Re: TDBF - Suchen (mit Wildcards)
 
Du hast im Prinzip 3 Möglichkeiten:
  • du verwendest eine Query mit LIKE
  • du füllst das Property Filter und setzt Filtered:=True
  • du schreibt dir deinen eigenen Filter mit hilfe von OnFilterRecord
Ich geb dir etwas Hilfe zur 3. Möglichkeit.
Dazu musst du einen Eventhandler für OnFilterRecord schreiben:
Delphi-Quellcode:
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := CompareWildText('*LSL*', DataSet.FieldByName('Geraet').AsString);
end;
Die Funktion CompareWildText bekommst du in der Code-Library:
http://www.delphipraxis.net/internal...ct.php?t=21980


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz