PDA

Ver la Versión Completa : No refresca datos en FastReport


brandolin
12-01-2006, 06:31:41
Hola a todos. Uso FastReport3 + Delphi 7 + Firebird + dbexpress para el acceso a datos.

Tengo la siguiente situacion, he generado un reporte con el FastReport y en el DataSet he colocado la consulta sql correspodiente para obtener los datos. En tiempo de diseño funciona bien, sin problemas, ahora cuando lo ejecuto y cambio la sentencia sql con otro tipo de restricciones (se cambia el rango de fechas), en el reporte resultante me aparece lo mismo que tenia en tiempo de diseño, es decir que el reporte no se actualiza con los datos de la nueva consulta.
Por si sirve de algo, asi llamo al reporte:
frxReportBasico.LoadFromFile('c:\reporte1.fr3', True);
frxReportBasico.FileName := 'c:\reporte1.fr3';
frxReportBasico.PrepareReport(True);
frxReportBasico.ShowPreparedReport;
¿Esta bien como se llama a el reporte? ¿Como se puede hacer el refresh de los datos del reporte en tiempo de ejecucion?.

Desde ya muchas gracias

Luis M.
12-01-2006, 20:27:49
Hola a todos. Uso FastReport3 + Delphi 7 + Firebird + dbexpress para el acceso a datos.

Tengo la siguiente situacion, he generado un reporte con el FastReport y en el DataSet he colocado la consulta sql correspodiente para obtener los datos. En tiempo de diseño funciona bien, sin problemas, ahora cuando lo ejecuto y cambio la sentencia sql con otro tipo de restricciones (se cambia el rango de fechas), en el reporte resultante me aparece lo mismo que tenia en tiempo de diseño, es decir que el reporte no se actualiza con los datos de la nueva consulta.
Por si sirve de algo, asi llamo al reporte:
frxReportBasico.LoadFromFile('c:\reporte1.fr3', True);
frxReportBasico.FileName := 'c:\reporte1.fr3';
frxReportBasico.PrepareReport(True);
frxReportBasico.ShowPreparedReport; ¿Esta bien como se llama a el reporte? ¿Como se puede hacer el refresh de los datos del reporte en tiempo de ejecucion?.

Desde ya muchas gracias
Saludos.
Mira si te sirve de ayuda.
Yo lo hago así y me funciona perfectamente

DMListados.QCierre.Close;
DMListados.QCierre.SQL.Clear;
DMListados.QCierre.SQL.Text := 'SELECT * FROM Cierre '+
'WHERE (Fecha >= :dIni AND '+
'Fecha <= :dFin) ORDER BY Fecha';

DMListados.QCierre.ParamByName('dIni').AsDate := StrToDate(DesdeFecha.Text);
DMListados.QCierre.ParamByName('dFin').AsDate := StrToDate(HastaFecha.Text);

cPath := ExtractFilePath(Application.ExeName);
frxReport1.LoadFromFile(cPath + 'REPORTS\' + 'ListCierre.fr3');
frxReport1.ShowReport;

brandolin
12-01-2006, 20:41:05
Gracias, eso tambien lo probe. Algo raro pasa ya que he estado hace 2 dias con este tema. Ahora pude notar que los datos quedan en el reporte ya que por mas que borre los datos de la base de datos los mismos siguen estando en el reporte. La unica forma de que se refresuen los datos es haciendo en tiempo de diseno un Close, Open de SimpleDataSet...

cInvCab.Close;
cInvCab.DataSet.CommandText := format('%s WHERE I.NRO=%d', [STCab, NroInv]);
cInvCab.Open;
cInvCab.Refresh;
frxReport2.FileName := DP.vINICarpetaReportes + 'InvDetallado.fr3';
frxReport2.ShowReport(True);


STCAb contiene un "select * from.... etc etc"
y sigue sin funcionar.... alguna idea... ¿seran el SimpleDataSet?

brandolin
15-01-2006, 15:23:27
Me respondo a mi mismo... por si alguien le pasa lo mismo.

El problema recidia en que los reportes estaban almacenados en un DataModule y el mismo se se creaba en dos lugares diferentes con diferentes nombres, de alli el problema... lo que yo veia en pantalla en tiempo de ejecucion no era lo mismo que en tiempo de diseño... cosa rara verdad ?:confused: