Aunque no es lo que necesitas exactamente sí contesta a una cuestión que has planteado al principio.
Utilizando un único TADOquery SI hay la posibilidad de ejecutar varias consultas independientes y acceder a los resultados.
Es decir, podemos añadir a la propiedad SQL algo como esto:
Código SQL
[-]
select * from TABLA1;
select * from TABLA2;
select * from TABLA3;
Y podemos recuperar los Datos en tres Recordset diferentes.
Si utilizamos en siguiente código:
Código Delphi
[-]
var
rs:_Recordset;
i:OleVariant;
begin
query.Close;
query.Open;
rs := query.Recordset;
Memo1.Lines.Add('--------------------------');
while Assigned(rs) do begin
while (not rs.EOF) do begin
Memo1.Lines.Add(rs.Fields[0].Value);
rs.MoveNext;
end;
rs := query.Recordset.NextRecordset(i);
Memo1.Lines.Add('--------------------------');
end;
Podemos obtener todos los recordset de la query (las 3 tablas) y todos los registros de cada recordset (tabla)
Y el resultado en pantalla sería algo así:
Código:
--------------------------
Campo1 AAAAAA Tabla1
Campo1 BBBBBB Tabla1
--------------------------
Campo1 CCCCCC Tabla2
Campo1 DDDDDD Tabla2
--------------------------
Campo1 EEEEEE Tabla3
Campo1 FFFFFF Tabla3
--------------------------