Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi STRING SUCHE! (https://www.delphipraxis.net/21684-string-suche.html)

thomasvonmuenster1 6. Mai 2004 14:40


STRING SUCHE!
 
In DBMemofeld eine String suche mit sonderzeichen(* oder ?).
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
 timer4.Enabled:=false;
 IBQuery4.SQL.Text:='select titel,datei from tabelle1 where memofeld like ''%'+ComboBox2.Text+'%''';
 IBQuery4.Open;
end;

Luckie 6. Mai 2004 14:42

Re: STRING SUCHE!
 
:wiejetzt: ;)

sakura 6. Mai 2004 14:46

Re: STRING SUCHE!
 
:warn: Nur Großbuschtaben in der Überschrift sind unerwünscht. Sofort ändern, sonst zu ;)

...:cat:...

thomasvonmuenster1 6. Mai 2004 14:56

Re: STRING SUCHE!
 
In meinen Bsp. oben vergleicht er nur den Text in der ComboBox2.Text mit den Einträgen im DBMemofeld.
Er soll nun mit * suchen.
Bsp. arbeits*
Anzeige: arbeitsrecht
arbeitsschuhe
arbeitskleidung....

shmia 6. Mai 2004 15:05

Re: STRING SUCHE!
 
Datenbankfelder vom Datentyp LOB (=Large Object) können nicht in einer
SQL-Anweisung mit like, =, <> abgefragt werden.
Möglich, dass manche Datenbanken da eine Ausnahme machen, aber man kann sich nicht
darauf verlassen.
Du könntest nun die Tabelle linear durchsuchen, das Memo-Feld mit dem Muster vergleichen,
die gefundenen Treffer (nur die Primärschlüssel) dir in einer Liste merken.
Danach wird eine Abfrage erzeugt:
SQL-Code:
SELECT * FROM Tabelle WHERE PrimaerSchluesselFeld in [Treffer1 , Treffer2, ...]
Oder du erweiterst dein Datenbankdesign so, dass eine Volltextsuche in einem Memofeld
nicht nötig ist. Man kann z.B. zusätzl. Suchwörter in einem normalen Charfeld speichern.

Robert_G 6. Mai 2004 15:09

Re: STRING SUCHE!
 
Dafür gibt es doch CLOBs (Character Large Object), die kann man fast wie einen Varchar2 behandeln. ;)

Sharky 6. Mai 2004 15:14

Re: STRING SUCHE!
 
Zitat:

Zitat von thomasvonmuenster1
...Er soll nun mit * suchen.

Dann nehme das '%' aus dem Querystring und setze den Suchtext von "Hand" Stichwort -> StringReplace

Udontknow 7. Mai 2004 11:39

Re: STRING SUCHE!
 
In Interbase kann man mit "containing" Text-Blobs durchsuchen. Ist natürlich nicht indiziert.

Cu,
Udontknow


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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