Entwickler-Ecke
Datenbanken - Teilstring suchen
cscp - So 23.01.05 21:46
Titel: Teilstring suchen
Hallo,
ist es denn im Paradox System möglich nach einem Teilstring zu suchen...
Also angenommen ich hab in der Datenbank stehen 'Dies ist ein Test Eintrag' kann ich dann nach Eintrag suchen lassen und diesen Datensatz holen?
Danke!
atarigold - So 23.01.05 23:24
Ja, sehr einfach mit dem LIKE-Operator, also z. B.
select Test_ID, Kommentar from Test
where Kommentar like '%Eintrag'
Das Jokerzeichen % steht für beliebig viele Zeichen. % zu Beginn eines Zeichenstrings sollte aber bei umfangreichen Tabellen möglichst vermieden werden.
atarigold
cscp - Mo 24.01.05 00:29
benutze aber das paradox 7 system...
jasocul - Mo 24.01.05 09:36
Hat mit der Paradox-Version nichts zu tun.
Du musst mit einer TQuery statt einem TTable-Komponente auf deine Daten zugreifen.
Argoran - Mo 21.02.05 23:14
Hi,
sry, dass ich den Thread noch einmal aufrolle, aber ich verstehe nicht ganz wie das gemeint. Ich habe eine Paradox7 Tabelle und möchte darin in einem bestimmten Feld einen beliebigen Inhalt finden. Ich hatte folgenden Code dafür verwendet: Table1.Locate('Feld1', Edit1.Text, [loCaseInsensitive, loPartialKey]);
Das Problem daran ist, dass er die Anfrage nur findet, wenn sie ganz am Anfang steht, also nicht in der Mitte. Könnt ihr mir das mit dem TQuery noch einmal genauer erklären?
Vielen Dank
Argoran
schlumpf70 - Mo 21.02.05 23:28
atarigold hat folgendes geschrieben: |
Ja, sehr einfach mit dem LIKE-Operator, also z. B.
select Test_ID, Kommentar from Test
where Kommentar like '%Eintrag'
Das Jokerzeichen % steht für beliebig viele Zeichen. % zu Beginn eines Zeichenstrings sollte aber bei umfangreichen Tabellen möglichst vermieden werden.
atarigold |
Table1.Locate('Feld1', '%'+Edit1.Text, [loCaseInsensitive, loPartialKey]);
^^ wenn mich nicht alles täuscht müsste funzen
Argoran - Mo 21.02.05 23:48
geht leider net :( , aber danke dir
Argoran - Di 22.02.05 16:42
weil dann sucht er ja nach dem String % + der Eintrag im Edit Feld. Hat keiner eine Lösung dafür?
Argoran - Mi 23.02.05 20:48
ok, habe mir jetzt selber was überlegt. Ich stelle den Code hier rein, damit wenn jemand das gleiche Problem hat Hilfe bekommt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.Button1Click(Sender: TObject); var anzahl,i,posi,fundstellen : integer; begin Table1.DisableControls; Table1.First; anzahl := Table1.RecordCount; i := 1; ComboBox1.Clear; fundstellen := 0; while not Table1.Eof do begin if i = 1 then Table1.First else Table1.Next; if anzahl >= i then begin posi := pos(Edit1.Text, Table1.FieldByName('FELDNAME').AsString); if posi <> 0 then begin fundstellen := fundstellen + 1; label13.caption := IntToStr(fundstellen); ComboBox1.Items.Add(IntToStr(i)); end else label13.caption := IntToStr(fundstellen); end; i := i + 1; end; Table1.EnableControls; end; |
Die Fundstellen werden in einer ComboBox ausgegeben.
cu
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!