PDA

Ver la Versión Completa : qreport no imprime registros por 2da vez


Oscar Guzmán
27-08-2013, 01:02:34
Saludos a Todos los del foro, acudiendo de nuevo a Uds. para ver si me pueden dar una luz respecto a mi problema actual.

Tengo un formulario con un qreport, que imprime un nota de crédito (encabezado de factura y registros). Para hacerlo abro el formulario, realizo la nota de crédito, la guardo y mando a imprimir, para lo cual salen todos los datos que necesito (encabezado de factura y registros relacionados) y así puedo seguir haciendo las notas de crédito que necesite y siempre salen impresas perfectamente con el qreport, pero, si cierro el formulario de notas de crédito y vuelvo a entrar para hacer otra nc, me guarda todo en la base de datos pero solo sale impreso en el qreport el encabezado de factura pero no los registros y lo mismo sucede si quiero reimprimir una nc de crédito previamente realizada.
He tratado por todos los medios(que yo conozco) de solucionarlo pero ha sido imposible y me pregunto si alguno de Uds. le habrá sucedido algo similar con qreport. Ya he comprobado que los parámetros que mando al procedimiento almacenado en sql server 2005 express llegan de bien, ya que puse un dbgrid temporal en el form y se ve que la info viene de regreso sin problemas, pero por alguna razón, los registros no se imprimen en el qreport, ojo, sucede solo si salgo del formulario y vuelvo a entrar al mismo. Para solucionarlo tengo que salir del sistema y volver a entrar desde cero.
En el Qreport, tengo el nombre del procedimiento en el dataset, todos los campos de los registros en la banda detail, todos los campos están asociados a su campo correspondiente del procedimiento que tengo en el dataset.
Agradezco cualquier ayuda de parte de Uds.

oscarac
27-08-2013, 07:09:15
Chequea bien los origenes de los datos
lo que explicas en lo referente a la forma como generas las NC parece un poco enredado
has una depuracion, paso a paso para determinar en que momento abres y cierras las tablas y/o querys con los cuales generas las NC
trata de colocar el codigo en la parte donde llamas al reporte y el lugar donde abres las tablas y/o querys

Oscar Guzmán
27-08-2013, 17:02:02
Chequea bien los origenes de los datos
lo que explicas en lo referente a la forma como generas las NC parece un poco enredado
has una depuracion, paso a paso para determinar en que momento abres y cierras las tablas y/o querys con los cuales generas las NC
trata de colocar el codigo en la parte donde llamas al reporte y el lugar donde abres las tablas y/o querys

oscarac, gracias por responder, pero si me mantengo dentro del formulario y puedo realizar varias nc y varias reimpresiones, no debería suponer que el código está ubicado correctamente, es decir, no estaría el problema principalmente en el formulario del qreport?, tengo como 15 reportes en el sistema y esto nunca había sucedido. Si salgo del formulario donde genero las nc y vuelvo a entrar hago la nc y se guarda perfectamente en la base de datos, pero si quiero realizar una nueva no salen impresos los registros, solo los datos de encabezado, pero esos registros si se ven en el formulario, porque los veo en un dbgrid que tengo allí, el problema es que no pasan al qreport si previamente he salido del formulario y vuelvo a entrar y tienes razón, es un poco confuso. Gracias por responder

oscarac
27-08-2013, 19:47:30
puede ser un tema de identificacion del dataset
coloca el codigo a ver q podemos averiguar

Oscar Guzmán
27-08-2013, 21:31:18
Dm.NotasCredito.Close;
DM.NotasCredito.SQL.Clear;
Dm.NotasCredito.SQL.Add('SELECT * FROM Ventas');
Dm.NotasCredito.SQL.Add('WHERE Documento=:Documento AND Tipo=:Tipo');
Dm.NotasCredito.Parameters.ParamByName('Documento').Value:=Edit13.Text;
Dm.NotasCredito.Parameters.ParamByName('Tipo').Value:='DE';
Dm.NotasCredito.Open;
Dm.facturas.Close;
Dm.facturas.SQL.Clear;
Dm.facturas.SQL.Add('SELECT * FROM Ventas');
Dm.facturas.SQL.Add('WHERE Factura=:Documento AND Tipo=:Tipo');
Dm.facturas.Parameters.ParamByName('Documento').Value:=Dm.NotasCreditofactura.Value;
Dm.facturas.Parameters.ParamByName('Tipo').Value:='FA';
Dm.facturas.Open;

LeeDevolucion.Close;
LeeDevolucion.Parameters.ParamByName('@Factura').Value:=Dm.facturasfactura.Value;
LeeDevolucion.Parameters.ParamByName('@NroNota').Value:=Edit13.Text;
LeeDevolucion.Open;
FormaDevQR.QuickRep1.Preview;
BitBtn4.Enabled:=False;
Edit13.SetFocus;



Con lo anterior reimprimo un nc que ya se realizó y que quedó almacenada, con los dos primeros queries llamo a los datos de la factura a la que se le agregó la nc (edit13.text) y con leedevolución traigo los registros de la nc, buscándolos en la tabla con el nro de factura dm.facturasfactura.value y con el nro de documento de la nc edit13.text. cuando mando a reimprimir los datos de encabezado pasan perfectamente pero los datos de "leedevolucion" no.


select f.documento,r.documento as documentor,r.tipofact,f.dividoiva,f.iva,f.porciva,f.codvende,f.nombrevendedor,f.fecha,f.factura,
f.codclie,f.nombre,f.status,f.tipo,r.cb,r.descripcion,r.cantidad,r.pvp,r.total,r.talla,r.costo,r.mod elo,f.TotalBaseImp,f.precionc,f.totalnc
/*from ventas f inner join renglon r on (f.factura=r.factura)*/
from ventas f inner join renglon r on f.factura=r.factura and r.documento=f.documento
where (f.tipo='DE') and (r.tipofact='DE') and (f.factura=@factura) and (r.documento=@NroNota)
order by r.modelo


Lo anterior, es el sp que me da los registros.

oscarac
27-08-2013, 23:45:21
y que datos hay en renglon?

otra sugerencia
cuando uses datos los cuales ya sabes su tipo es mejor utilizarlos de otra manera, es decir si sabes que numero de factura es de tipo caracter

cambias esto
Dm.facturasfactura.Value;
por esto
Dm.facturasfactura.AsString;

Oscar Guzmán
28-08-2013, 02:20:18
es verdad, tienes razón con lo del value por AsString

Los datos que deben verse en el qreport y que se encuentran en la tabla renglones son:
modelo, cantidad, descripcion,pvp y total

aunque el procedimiento LeeDevoluciones también me da, el número de documento de nc, la fecha en la que fue realizada, el total general, de acuerdo a la sumantoria del total en dinero de los registros que sería igual a TotalBaseImp, el iva y total de la nota de crédito (Totalnc) y todos los datos llegan al qreport a QRDBText, es decir, que no hago ningún cálculo adicional, ya que esa información está guardada y la muestro tal como es, ya que es una reimpresión, la cual funciona perfectamente cuando entro por primera vez al formulario donde se gestiona la realización de nc y la posterior reimpresión, hasta que me salgo del mismo

oscarac
28-08-2013, 16:21:43
pues si que esta raro
trata de aislar esa parte y adjuntala para poder revisarla

Oscar Guzmán
28-08-2013, 21:40:35
ya la coloqué. Es el procedimiento almacenado que adjunté antes.