¿Pues no resultaría más comodo devolver un TQuery?
Código Delphi
[-]
var q:Tquery;
begin
q := CreaQuery('s_query', 'SELECT * FROM CLIENTES');
q.Open;
end;
Ya en el datamodule:
Código Delphi
[-]
procedure TDatamodule.CreateQuery(const Name:string; sql: string):TQuery;
begin
Result := TQuery.Create(self); Result.Database := Result.Name := name;
Result.sql.text := sql;
end;
Tal y como veo la cosa, quizás fuera bueno añadir todas las querys creadas a un TStringList, así los tendrías agrupados, facilitando la destrucción o el acceso a los mismos.
Edito: El problema que veo, es que un datamodule tendrá muchisimas tablas, querys, campos persistentes etc, realizar un bucle con FindComponent por todos ellos hasta encontrar el query deseado puede ser excesivo, con el TStringList, sería como acceder con un IndexOf a un StringList. En el Stringlist, almacenas el nombre del Query (parámetro Name), despues a su objeto asociado, le añades el Query Creado.
Saludos