Con este ejemplo si que funciona, ha sido una prueba que quería hacer ya que con la variable asignada a un solo proyecto si que funciona :P, ademas superrapido.
Código SQL
[-]begin
cProyectos:='';
IBQuery1.Close;
IBQuery1.Open;
while not IBQuery1.Eof do
begin
cProyectos := cProyectos + IBQuery1.Fields[0].AsString + ',';
IBQuery1.Next;
end;
cProyectos := Copy(cProyectos,0,Length(cProyectos)-1);
cProyectos := '3132'; //Es una prueba, solo he asignado un proyecto
IBQuery2.SQL.Text:='select * from FACTURAS where PROYECTOS in ('+ cProyectos +')';
IBQuery2.Close;
IBQuery2.Open;
Y este sería el código que debería funcionar:
Código SQL
[-]begin
cProyectos:='';
IBQuery1.Close;
IBQuery1.Open;
while not IBQuery1.Eof do
begin
cProyectos := cProyectos + IBQuery1.Fields[0].AsString + ',';
IBQuery1.Next;
end;
cProyectos := Copy(cProyectos,0,Length(cProyectos)-1);
IBQuery2.SQL.Text:='select * from FACTURAS where PROYECTOS in ('+ cProyectos +')';
IBQuery2.Close;
IBQuery2.Open;
La segunda al dejar la variable con los proyectos separados por ',' no muestra resultado, sin embargo la primera va clavada, muestra los resultados de ese proyecto.