Ver Mensaje Individual
  #4  
Antiguo 12-01-2005
DobleSiete DobleSiete is offline
Miembro
 
Registrado: ene 2005
Posts: 32
Reputación: 0
DobleSiete Va por buen camino
Ya encontre la solución: colocar el parametro dentro del QuickReport y crearla a partir de una variable declarada en una unidad publica, la cual llamo en el uses del formulario y del reporte. He aquí la solución para los interesados:

En el Unit1 que tiene el Form1 con el DBGrid de las cuentas mayores, se hace la primera consulta SQL, se captura el valor seleccionado con un click y se llama al QuickReport:

Código Delphi [-]
uses MID_DM, Unit2, Unit3;
 
 {$R *.dfm}
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
   with IBQuery1 do
   begin
     SQL.Clear;
     SQL.Add('SELECT * ');
     SQL.Add('FROM scginf ');
     SQL.Add('WHERE estado = 2');
     Open;
   end;
 end;
 
 
 procedure TForm1.DBGrid1CellClick(Column: TColumn);
 begin
 
   codigo := Form1.IBQuery1.FieldValues['cod_inf'];
 
   with Unit3.TQuickReport1.Create(nil) do
   begin
     Preview;
     Destroy;
   end;
 end;
... luego en un Unit publico simplemente declaro la variable codigo que es el parametro para generar el reporte ...

Código Delphi [-]
unit Unit2;
 
 interface
 
 var
   codigo: string;
 
 implementation
 
 end.
... y por último el Unit3, que es el QuickReport, se hace otra consulta SQL para mostrar las cuentas de movimientos relacionadas con la cuenta mayor elegida por el usuario:

Código Delphi [-]
uses MID_DM, Unit2;
 
 {$R *.DFM}
 
 procedure TQuickReport1.QuickRepBeforePrint(Sender: TCustomQuickRep;
   var PrintReport: Boolean);
 begin
   with IBQuery1 do
   begin
     SQL.Clear;
     SQL.Add('SELECT * ');
     SQL.Add('FROM scgctas ');
     SQL.Add('WHERE est_fnz = :cod');
     ParamByName('cod').AsString := codigo;
     Open;
   end;
 end;
Como ven, el Unit2 es llamado por el Unit1 (formulario) y el Unit3 (reporte) para compartir la variable codigo. Mi problema es que queria llamar al IBQuery1 del QuickReport1 desde el Form1 lo cual me impedia pasar la variable.
__________________
"Nadie es perfecto" (Don Nadie)
Responder Con Cita