tambien puedes pasar un objeto query y una vez ejecutada la funcion, ver los resultados que tiene.
Código Delphi
[-]
function CriaComponente(q : TAdoQuery; sql : string)
begin
...
q.Active := false;
q.SQL.Text := sql
if Pos('select',lowercase(sql)) <> 0 then
q.Active := true
else
q.ExecSQL;
end;
...
CriaComponente(query1_a_consultar,...)
showmessage(query1_a_consultar.FieldByName('total').asstring);
...