Entonces creo que lo que quieres es algo así:
Código:
procedure TForm1.bt1Click(Sender: TObject);
var
Q2 : TIBDataSet;
begin
try
Q2 := TIBDataSet.Create(Owner);
Q2 := Q1 ; // .Assign(Q1);
ShowMessage(Q2.SelectSQL.Text);
finally
FreeAndNil(Q2);
end;
end;
Pruébalo, te lo digo de memoria, no tengo un delphi aquí.
Edito: Ahora que lo pienso, esa solución no sirve, fallaría la segunda vez que lo asignaras porque al igualar Q2 a Q1, al hacer el FreeAndNil(Q2) también se lo estaría haciendo a Q1.
Mejor déjame que saque un poquito de tiempo mañana en el trabajo y lo miro.