Also ich löse das Problem ganz einfach:
Sind die ersten 6 Zeichen des Statement = select, dann rufe ich open auf, ansonsten ExecSQL.
Als Beispiel:
Delphi-Quellcode:
qry.sql.text := memo.text;
if AnsiLowerCase(Copy(qry.sql.text,1,6)) = 'select' then begin
qry.Open;
end else begin
qry.ExceSQL;
end;
StatusBar.SimpleText := Format('Von der Abfrage waren %d Zeilen betroffen.',[qry.RowsAffected]);
(Jetzt nur so hingedaddelt, nicht getestet.)