Geschafft:
Es lag wirklich an der Aufrufreihenfolge.
Seltsamerweise hat der einfache Aufruf ohne SQLabfrage an gleicher Stelle funktioniert,
mit
SQL Abfrage leider nicht.
Die Abfrage habe ich nun testweise ins Datenmodul verschoben und voila,
hier funktioniert dann alles wie es soll:
Delphi-Quellcode:
with ADOQueryClients
do
begin
Close;
SQL.Text := '
SELECT ID FROM Clients WHERE Status = ''
Y''
';
// SQL.Text := 'SELECT ID FROM Clients WHERE Status LIKE :Status ';
// funktioniert in diesem Fall genau wie:
// SQL.Text := 'SELECT ID FROM Clients WHERE Status = :Status ';
// Parameters.ParamByName('Status').Value:='Y';
Open;
NumberOfClients := RecordCount;
end;
SetLength(Client_ID_Array, NumberOfClients);
for i := 0
to (NumberOfClients - 1)
do
begin
Client_ID_Array[i]:= ADOQueryClients.FieldList.FieldByName ('
ID').AsInteger;
ADOQueryClients.Next;
end;
Ein Last; hab ich nicht benötigt, im Gegenteil:
Setze ich in diesem Fall Last; wird nur noch der letzte Datensatz ins Array übernommen.
@ mkinzler:
Habs gerade nochmal ausprobiert:
Da mein Status nur Y ist, funktioniert LIKE ohne Joker genau wie =.
Oder anders formuliert: Lässt man den Joker weg, funktioniert LIKE allgemein wie =.
Vielen Dank nochmal an alle.
Die Fehlersuche hätte ohne die hier gefallenen Denkanstöße einiges länger gebraucht.
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay