Habe Paradox Tabelle mit einem Feld Nachname und einem Feld Vorname. <BR> Ich habe nun einen zusammengesetzten Index erstellt mit Nachname + Vorname. <BR> Wie kann ich über Delphi nach Datensätzen suchen mit diesem zusammengesetzten Index ? <BR> Die Eingabe wäre z.B Maier Theo und er sollte mit findkey direkt den Datensatz finden. Danke
Announcement
Collapse
No announcement yet.
Primär Index und Datensatzsuche
Collapse
X
-
Hallo Rolf!
Zunächst ist es falsch einen zusammengesetzten Primärindex aus Name und Vorname zu bilden.
Die Eindeutigkeit des Schlüssels ist nicht gewährleistet.
Eine Suche über beide Feldinhalte in einem String ist nur sehr schwer möglich.
Ich habe folgende Lösung:
function FindeZwei(Tbl:TTable;TxtStr:String):boolean;
var N1,N2:string;
gefunden:boolean;
lf:integer;
begin
gefunden:=false;
lf:=Pos(' ',TxtStr);
if (lf=0) then
exit;
Trim(TxtStr)
lf:=2;
N1:='';
N2:='';
repeat {Text Teilen bis gefunden oder kein Blank mehr in Text}
while (lf<=length(TxtStr)) and (TxtStr[lf]<>' ') do {Blank suchen}
inc(lf);
if (lf<=length(TxtStr)) then BEGIN {wenn Blank dann teilen}
N1:=copy(TxtStr,1,lf);
N2:=copy(TxtStr,lf+1,length(TxtStr)-lf);
gefunden:=Tbl.FindKey([N1,N2]);
inc(lf);
END;{if}
until (gefunden) or (lf>length(TxtStr));
END;//if
result:=gefunden;
end;//functio
-
Hallo,
hier mal eine andere Variante:
Table1.Locate('Name; Vorname; Anrede',
VarArrayOf([Edit1.text,cb1.Items[ComboBox1.ItemIndex],Table2Anrede.value]), [loCaseInsensitive]);
Hier wird z.B. Nach "Meier Alfred Herr" gesucht. Das ist zwar kein eindeutiger Begriff, aber es ist möglich. Die Daten stammen aus verschiedenen Quellen. Besser ist es aber immer, mit TQuery sich alle Herren Alfred Meier anzeigen zu lassen.
Query1.close; Query1.SQL.clear;
s := 'SELECT name, vorname, gebdat FROM kunden.db<br>
WHERE name = Edit1.text<br>
AND vorname = edit2.text';<br>
Query1.SQL.Add(s);<br>
Query1.Active := true;<br>
mfg Klaus-Pete
Comment
Comment