derzeit arbeite ich an einer Software, die Kundendaten aus einer SQLite Tabelle liest. Um es "flexibler" zu halten, kann man auch die Spalte angeben, nach der gesucht werden soll.
Im Quelltext sieht das so aus:
[pascal]
[/pascal]
function getAllCustomers(aStartLetter : string; aFieldName : string = 'Nachname') : TCustomerArray;
begin
rQuery.SQL.Text := 'SELECT * FROM Kunden WHERE :Feld LIKE :StartLetter;';
rQuery.ParamByName('Feld').AsString := aFieldName;
rQuery.ParamByName('StartLetter').AsString := aStartLetter+'%';
rQuery.Open;
// Daten auslesen
rQuery.Close;
end;
Das klappt super ... wenn "aStartLetter" leer ist. Hat aStartLetter einen anderen Wert, wird nichts zurückgegeben.
Ersetze ich die erste Abfrage aber hierduch:
[pascal]
[/pascal]
function getAllCustomers(aStartLetter : string; aFieldName : string = 'Nachname') : TCustomerArray;
begin
rQuery.SQL.Text := 'SELECT * FROM Kunden WHERE '+aFieldName+' LIKE :StartLetter;';
rQuery.ParamByName('StartLetter').AsString := aStartLetter+'%';
rQuery.Open;
// Daten auslesen
rQuery.Close;
end;
Dann klappt das auch wenn aStartLetter nicht leer ist. Nun frage ich mich, woran das liegt.
Könntet ihr mir sagen, warum das so ist? Nach meinem Verständnis, sollte :Feld durch den Inhalt von aFieldName ersetzt werden.
Schöne Grüße
Das Chris