Nicht MakroByName, sondern nur ParamByName. Hier noch mal ein anderes Beispiel, welches definitiv funktioniert :
Delphi-Quellcode:
UniQuery_MessageTypes.SQL.Clear;
UniQuery_MessageTypes.SQL.Add('SELECT * FROM Message_Types WHERE IsStandard = :IsStandard;');
UniQuery_MessageTypes.ParamByName('IsStandard').AsInteger := 1;
UniQuery_MessageTypes.Open;
while not UniQuery_MessageTypes.Eof do
begin
tmpIdx := Items.Add(UniQuery_MessageTypes.FieldByName('MessageTypeName').AsString);
Items.Objects[tmpIdx] := TObject(UniQuery_MessageTypes.FieldByName('MessageTypeID').AsInteger);
UniQuery_MessageTypes.Next;
end;
UniQuery_MessageTypes.Close;
Items.EndUpdate;
So mache ich das ständig und es funktioniert.
Edit:
Und hier noch die korrigierte Fassung aus Beitrag #15:
Delphi-Quellcode:
query.sql.text := '
SELECT * FROM Tabelle WHERE Name = :INData';
query.parambyname('
INData').AsString := '
blablabla';
{oder}
query.parambyname('
INData').AsInteger := 1;
query.open;
Ich hatte zweimal den Doppelpunkt vergessen und habe jetzt mal vorsichtshalber die Unterstriche entfernt.
Beide Beispiele funktionieren mit allen gängigen Datenbankkomponenten.