Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi %? Alles vor und nach String abfragen? (https://www.delphipraxis.net/100712-alles-vor-und-nach-string-abfragen.html)

Jack23 2. Okt 2007 22:47

Datenbank: Access • Version: 2003 • Zugriff über: ADO

%? Alles vor und nach String abfragen?
 
Hallo

Das andere Thema hat sich erledigt. Ich habe selbst eine Lösung gebastelt. Nur weiß ich nicht wie ich sie umsetzen soll.

Ich möchte gerne das vor diesem string: + QuotedStr(sText); und nach diesem String alles abgefragt wird.
Ich glaube das geht mit diesen Prozentzeichen.

Beispiel:

Delphi-Quellcode:
Close;
    SQL.Text := 'SELECT * FROM abc WHERE wert LIKE %'+ QuotedStr(sText)%;
    Open;
So ungefähr müsste das aussehen. Ich hoffe ihr könnt mir sagen wir man das richtig macht.

DeddyH 2. Okt 2007 22:52

Re: %? Alles vor und nach String abfragen?
 
Delphi-Quellcode:
Close;
sText := QuotedStr('%' + sText + '%');
SQL.Text := 'SELECT * FROM abc WHERE wert LIKE '+ sText;
Open;
Allerdings ist das so ziemlich das unperformanteste, was man tun kann, da so kein Index der Welt mehr greifen kann (es wird immer ein Full Table Scan durchgeführt).

Jack23 2. Okt 2007 23:00

Re: %? Alles vor und nach String abfragen?
 
Ah perfekt funktioniert. Nun möchte ich aber das nach jedem Wort in dem String % kommt. Geht das?

DeddyH 2. Okt 2007 23:02

Re: %? Alles vor und nach String abfragen?
 
Zitat:

Zitat von Jack23
Nun möchte ich aber das nach jedem Wort in dem String % kommt.

Wie bitte? :gruebel:

Sko 2. Okt 2007 23:04

Re: %? Alles vor und nach String abfragen?
 
Den anderen Themen nach zu urteilen hattest du noch nicht so oft mit Datenbanken zu tun (nehm ich mal an), du solltest dir vielleicht mal die Normalisierung ansehen (wiki hilft), dann klären sich vielleicht einige Dinge von alleine (dann gibts wahrscheinlich elegantere und performantere Lösungen :wink: ).

@Roter Kasten: seh ich auch so: :gruebel:

Jack23 2. Okt 2007 23:07

Re: %? Alles vor und nach String abfragen?
 
Ich hasse das, dass ich nicht gut erklären kann. Also folgendes Problem:

Dein Code:
Delphi-Quellcode:
Close;
sText := QuotedStr('%' + sText + '%');
SQL.Text := 'SELECT * FROM abc WHERE wert LIKE '+ sText;
Open;
Indem String steht jetzt wert1 wert2 wert3

Dann wird halt eine Datenbank abfrage gemacht. Wenn es aber in der Datenbank nicht in der Reihenfolge steht wie es abgefragt wird, wird es nicht angezeigt. In der Datenbank steht es so: wert3 wert1 wert2
So kann es nicht abgefragt werden. Wie kann ich das mit dem Code oben abfragen? Also so das es egal ist wie die Wörter in dem String positioniert sind.


edit: Die Performance ist egal. Das wird keine Anwendung für 10000 Daten.

DeddyH 3. Okt 2007 14:40

Re: %? Alles vor und nach String abfragen?
 
Es widerstrebt mir, das überhaupt zu posten, aber wenn die Reihenfolge auch keine Rolle spielen darf/soll, können wir die Performance auch komplett in den Keller drücken. Das wäre dann eine Abfrage in der Art:
SQL-Code:
SELECT * FROM Tabelle
WHERE Feld LIKE '%wert1%'
AND Feld LIKE '%wert2%'
AND Feld LIKE '%wert3%'
Somit hast Du nun je Wert einen Full Table Scan, schlimmer geht' s nimmer.

Jack23 3. Okt 2007 15:30

Re: %? Alles vor und nach String abfragen?
 
Das ist ja auch kein Problem. Aber ich möchte ja die Abfrage mit dem String machen.

Oder kann ich den String für die Abfrage auseinander nehmen?

DeddyH 3. Okt 2007 15:33

Re: %? Alles vor und nach String abfragen?
 
Zitat:

Zitat von Jack23
Oder kann ich den String für die Abfrage auseinander nehmen?

Besser gar nicht erst zusammensetzen ;). Wenn Du es noch so machst wie im alten Thread, kannst Du für wert1, wert2 usw. ja CheckBox1.Caption, CheckBox2.Caption etc. einsetzen.

Jack23 3. Okt 2007 15:36

Re: %? Alles vor und nach String abfragen?
 
Was passiert mit den Checkcoxen die nicht angekreuzt sind? Und was mache ich wenn ich ungefähr hm ... 600 Checkboxen habe?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.
Seite 1 von 2  1 2      

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