Ver Mensaje Individual
  #2  
Antiguo 24-02-2011
SergioVlc SergioVlc is offline
Registrado
 
Registrado: nov 2004
Posts: 3
Reputación: 0
SergioVlc Va por buen camino
Solucionado

Hola de nuevo,

Finalmente he conseguido solucionar el problema cambiando la forma de pasar los datos al informe, lo comento por si le sirve a alguien:

Hasta ahora pasaba los datos de esta forma:
- La cabecera (Nombre, cif, etc.) y algunos parametros para formatear dinamicamente el informe (Negrita, NoImprimirTotal, etc.) los pasaba mediante paramFields al rpt.
- Las lineas del la factura (articulo, cantidad, precio, etc.) los pasaba mediante una tabla de access.

El problema, además de que no se actualizaba bien, era que cuando ocurría el error teníamos una cabecera de factura con las lineas de la factura anterior. Esto era mas grave que el imprimir una factura anterior o posterior.

La solución:

No utilizar los parametros (paramFields) de crystal para pasar información al report.
Para pasar los datos de cabecera y lineas de la factura he utilizado una consulta.

Parto de las dos tablas de facturas en access: FACTURAS y FACTURAS LINEAS (cabecera y lineas respectivamente)
Creo en access una consulta que relaciona ambas con todos los campos necesarios (si, la podría haber creado directamente en crystal).
Creo otra tabla denominada FACTURAS A IMPRIMIR, con dos únicos campos: un Id y un IdFactura.
El Id es un autonumerico y el IdFactura almacena los numeros de facturas a imprimir.
En crystal agrego esta consulta al informe y se enlazan mediante el campo IdFactura. En las opciones del enlace le indico Enforced Both
De esta forma, tanto si quiero imprimir una factura como lanzar una remesa de facturas, solo tengo que vaciar la tabla FACTURAS A IMPRIMIR y llenarla con los IdFactura correspondientes. Crystal filtrará los datos para que solo se impriman las facturas cuyo IdFactura coincida con los relacionados en la tabla FACTURAS A IMPRIMIR.

Saludos
Responder Con Cita