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 user profile iconGausi: Code- durch Delphi-Tags ersetzt.