Einzelnen Beitrag anzeigen

Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#2
  Alt 23. Jan 2003, 12:09
Hallo X-Dragon,
keine Panik, das ist verhältnismäßig einfach, allerdings abhängig von der Datenbank, die Du verwendest. Zudem gibt es zwei Möglichkeiten, die angezeigten Datenstätze auf das Gesuchte zu reduzieren, nämlich über SQL (dann werden nur die gesuchten Records in die Datenmenge geschoben), oder per Filter über die geöffnete Datenmenge (OnFilterRecord). Ein Beispiel wär auch gut gewesen, aber gut, mach ich eins, zunächst mal die SQL Variante. Angenommen, Du suchst in einer Adresstabelle alle Dortmunder Adressen:
Delphi-Quellcode:
with Query1 do begin
  if Open then Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM Adressen WHERE ORT LIKE ' + QuotedStr('Dortmund');
  Open;
end;
QuotedStr setzt Hochkommata vor und hinter den Suchstring und ist zwingend erforderlich!
Sollen alle Datensätze gefiltert werden, deren Ort mit 'Dor' beginnt, also z.B. auch Dormagen, kann die SELECT Anweisung mit Wildcard abgeschickt werden, das Zeichen ist datenbankabhängig (% oder &):
'SELECT * FROM Adressen WHERE ORT LIKE ' + QuotedStr('Dor%') Das Wildcard Zeichen wird in der Regel an die Usereingabe per Code angehängt und/oder vorangestellt, je nach Fragestellung. Alternativ kannst Du den SQL String auch mit Format(... %s, ...) aufbauen. Datenbanken wie z.B. Interbase/Firebird besitzen eine erweiterte SQL Syntax und kennen WHERE Klauseln wie 'WHERE Ort STARTING WITH ...'

Falls Du Code für OnFilterRecord brauchst, sach bescheid.

gruß, harrybo
Harry Boldt
  Mit Zitat antworten Zitat