Cita:
Empezado por manueltp
pero el resultado en el reporte me da repetido dos veces los datos de factura , esto sucede si la factura tiene algun abono......
|
Revisa la base de datos y comprueba que no tengas en la tablas de abonos más de un registro con el mismo número de campo 'Folio', prueba la
sentencia sql en un editor sql y observa las filas que te devuelve,casi con toda seguridad es un problema de consistencia de la consulta o de la base de datos
Cita:
|
y pues yo quiesiera que se imprimiera un linea por cada tipo , ya sea si fue cargo o abono.....
|
para hacer eso te recomiendo que hagas lo siguiente:
- Amplias la banda de detalle y posiciones en dos lineas los elementos que desees imprimir, en la primera linea los datos de la factura , y en la segunda los de los abonos.
- En el evento 'Onbeforeprint' de la banda de detalle del report, puedes
cambiar la altura de la banda dependiendo de si tiene o no información de abonos, por ejemplo:
if consulta.fieldbyname('abtotal2').value <> 0 then
bandadetalle.height := longitud_normal else
bandadetalle.height := longitud_normal - longitud_elementos_abonos
Cita:
y como hago sumatoria al final, se me duplican los cargos...
ojla me explique bien y me puedan ayudar....
|
te creas unas variables que inicializas en el evento 'onbeforeprint' del report, y después en la banda de detalle, en el evento 'onafterprint' efectuas la suma
vtotal_fac := vtotal_fac + consulta.fieldbyname('total').value
vtotal_abo := vtotal_abo+ consulta.fieldbyname('abtotal').value despues solo tienes que crear en la banda de final del listado un qrlabel o qrexpr, y poner en el evento onafterprint , value := formatfloat('###,###.##',vtotal), por ejemplo
Cita:
y agradeceria mucho si me explicaran un poco mas sobre las consultas para mandarlas en tiempo de ejecucuion en algun componente ya sea en qrlabel o qrexpression... gracias anticipadas
|
Si necesitas presentar un resultado en el informe que necesite de una consulta, puedes poner un componente tquery donde tengas dicha consulta
por ejemplo: select sum(total) as ntotal from facturas ,
después , en el evento onbeforeprint simplemente abres la consulta:
consulta.open;
value := formatfloat( '###,###.##',consulta.fieldbyname('ntotal').value );
tambien se puede crear la misma consulta en el evento asi:
consulta.sql.clear;
consulta.sql.add('select sum(total) as ntotal from facturas');
Espero no haberte liado mucho....

Saludos...