FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
QuickReport me recalcula campos al imprimir
Buenas a tod@s los forer@s
Tengo un problema que me ha dejado pillado. Tengo un Informe con QuickReport y Delphi7 donde varios de los datos los saco de querys y donde tengo etiquetas que se calculan en el evento onPrint. Cuando previsualizo el informe todos los datos me cuadran pero sin embargo, cuando lo imprimo hay ciertos datos que se "multiplican por 2" (se suman consigo mismo) y me imprime el resultado de esta operación. Por ejemplo, en la etiqueta donde pongo el subtotal: Código:
procedure TForm3.QRTotPrint(sender: TObject; var Value: String); var totalAux: double; begin totalAux := subtotal + incrementoTotal - descuentoTotal + ivaTotal; Value := Format('%0.2f',[totalAux]); end; ¿Alguien me puede decir por qué? Gracias de antemano |
#2
|
||||
|
||||
Porque, al hacer el Preview calcula el valor que necesitas, pero al mandarlo a imprimir no inicializas las variables globales y ellas siguen con valores, los cuales toma en cuenta para seguir calculando, te sugiero que inicialices todas esas variables globales en el BeforePrint del TQuckReport, por ejemplo:
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
|||
|
|||
Sigue sin funcionar correctamente
en el beforePrint del TQuickReport ya lo hice, algo del estilo:
Código:
procedure TForm3.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin subtotal := 0; ivaAux := 0; validezAux := 0; descuentoAux := 0; incrementoAux := 0; descuentoTotal := 0; incrementoTotal := 0; ivaTotal := 0; end; Todas esas variables las tengo definidas en la parte pública del formulario y las calculo en el onPrint de las etiquetas que toca, supongo que esto no tendrá nada que ver. Sigo pillado en una estupidez. Si necesitáis que ponga el fuente completo, os lo paso. Salu2 y gracias |
#4
|
||||
|
||||
Cita:
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#5
|
|||
|
|||
voy a probar y te cuento
|
#6
|
|||
|
|||
buenas de nuevo.
Supongo que será porque estoy colapsado pero no puedo hacerlo en el BeforePrint de la banda a menos que haya ido haciendo lo propio en las bandas anteriores y no lo puedo hacer así porque las bandas anteriores tienen TQRDBText de los que no se obtener el valor. Te pongo el código fuente a ver si se te ocurre qué le está pasando o si tengo que rehacerlo y por qué Código:
unit impresion; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, jpeg, ExtCtrls, DB, DBTables, QuickRpt, QRCtrls; type TForm3 = class(TForm) PrintDialog1: TPrintDialog; QUtil: TQuery; qClientes: TQuery; QuickRep1: TQuickRep; qDecoracion: TQuery; QRBand1: TQRBand; QRSubDetail1: TQRSubDetail; QRDBText1: TQRDBText; QRDireccion1: TQRLabel; QRNombre: TQRLabel; QRDireccion2: TQRLabel; QRImage2: TQRImage; QRDBText2: TQRDBText; QRDBText3: TQRDBText; QRDBText4: TQRDBText; QRLabel7: TQRLabel; QRGroup1: TQRGroup; QRLabel1: TQRLabel; QRLabel3: TQRLabel; QRLabel4: TQRLabel; QRLabel5: TQRLabel; QRLabel6: TQRLabel; QRTitle1: TQRLabel; QRRef: TQRLabel; QRArticulo: TQRLabel; QRPrecio1: TQRLabel; QRLabel2: TQRLabel; qAccesorios: TQuery; QRGroup2: TQRGroup; QRLabel8: TQRLabel; QRSubDetail2: TQRSubDetail; QRDBText5: TQRDBText; QRDBText6: TQRDBText; QRLabel9: TQRLabel; QRLabel10: TQRLabel; QRLabel11: TQRLabel; QRLabel12: TQRLabel; QRDBText7: TQRDBText; QRBand3: TQRBand; QRLabel23: TQRLabel; QRLabel28: TQRLabel; QRVal: TQRLabel; QRLabel29: TQRLabel; QRFecha: TQRLabel; QRShape3: TQRShape; QRShape4: TQRShape; QRShape5: TQRShape; QRLabel30: TQRLabel; QRLabel31: TQRLabel; QRLabel32: TQRLabel; QRLabel34: TQRLabel; QRLabel35: TQRLabel; QRNumero: TQRLabel; QRBand2: TQRBand; QRShape1: TQRShape; QRSub: TQRLabel; QRLabel13: TQRLabel; QRLabel14: TQRLabel; QRPrecioMonjate: TQRLabel; QRLabel16: TQRLabel; QRMontaje: TQRLabel; QRDesp: TQRLabel; QRLabel17: TQRLabel; QRLabel15: TQRLabel; QRPrecioD: TQRLabel; QRLabel19: TQRLabel; QRLabelIva: TQRLabel; QRLabel21: TQRLabel; QRIncrem: TQRLabel; QRLabel22: TQRLabel; QRLabel18: TQRLabel; QRInc: TQRLabel; QRLabel24: TQRLabel; Descuento: TQRLabel; QRDesc: TQRLabel; QRLabel25: TQRLabel; QRDescuento: TQRLabel; QRLabel27: TQRLabel; QRShape2: TQRShape; QRLabel20: TQRLabel; QRLabel26: TQRLabel; QRShape6: TQRShape; QRSubto: TQRLabel; QRIva: TQRLabel; QRTot: TQRLabel; procedure FormShow(Sender: TObject); procedure rellenarDatosCliente(); procedure rellenarDatosPresupuesto(refArticulo, desArticulo, tipoAcc, decoracion, trabajos, articulo, desplazamiento: string; precio1, precio2, precio3, precio4, precio5: double; iva: integer; descuento, incremento: double; validez: integer; fecha: string; numPres: integer); procedure QRDBText7Print(sender: TObject; var Value: String); procedure QRDBText4Print(sender: TObject; var Value: String); procedure QRDBText6Print(sender: TObject; var Value: String); procedure QRPrecio1Print(sender: TObject; var Value: String); procedure QRPrecioMonjatePrint(sender: TObject; var Value: String); procedure QRPrecioDPrint(sender: TObject; var Value: String); procedure QRIncremPrint(sender: TObject; var Value: String); procedure QRDescuentoPrint(sender: TObject; var Value: String); procedure QRSubtoPrint(sender: TObject; var Value: String); procedure QRIvaPrint(sender: TObject; var Value: String); procedure QRTotPrint(sender: TObject; var Value: String); procedure QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } subtotal: double; ivaAux, validezAux: integer; descuentoAux, incrementoAux: double; descuentoTotal, incrementoTotal, ivaTotal: double; end; var Form3: TForm3; subtotal: double; ivaAux, validezAux: integer; descuentoAux, incrementoAux: double; descuentoTotal, incrementoTotal, ivaTotal: double; implementation {$R *.dfm} procedure TForm3.FormShow(Sender: TObject); begin subtotal := 0; ivaAux := 0; validezAux := 0; descuentoAux := 0; incrementoAux := 0; descuentoTotal := 0; incrementoTotal := 0; ivaTotal := 0; QuickRep1.Refresh; rellenarDatosCliente(); end; procedure TForm3.rellenarDatosCliente(); var nombre, apellido1, apellido2, direccion, codpostal, provincia, localidad, telefono1, telefono2, observaciones: string; begin nombre := qClientes.fieldbyname('nombre').asstring; apellido1 := qClientes.fieldbyname('apellido1').asstring; apellido2 := qClientes.fieldbyname('apellido2').asstring; direccion := qClientes.fieldbyname('direccion').asstring; codpostal := qClientes.fieldbyname('cp').asstring; provincia := qClientes.fieldbyname('provincia').asstring; localidad := qClientes.fieldbyname('localidad').asstring; telefono1 := qClientes.fieldbyname('telefono1').asstring; telefono2 := qClientes.fieldbyname('telefono2').asstring; observaciones := qClientes.fieldbyname('observaciones').asstring; QRNombre.Caption := nombre+' '+apellido1+' '+apellido2; QRDireccion1.Caption := direccion; QRDireccion2.Caption := codpostal+', '+localidad+' ('+provincia+')'; end; procedure TForm3.rellenarDatosPresupuesto(refArticulo, desArticulo, tipoAcc, decoracion, trabajos, articulo, desplazamiento: string; precio1, precio2, precio3, precio4, precio5: double; iva: integer; descuento, incremento: double; validez: integer; fecha: string; numPres: integer); var iva2, total : double; temp:Real; begin QRRef.Caption := refArticulo; QRArticulo.Caption := desArticulo; QRPrecio1.Caption := Format('%0.2f',[precio1]); QRMontaje.Caption := trabajos; QRPrecioMonjate.Caption := Format('%0.2f',[precio4]); QRDesp.Caption := desplazamiento; QRPrecioD.Caption := Format('%0.2f',[precio5]); QRLabelIva.Caption := 'IVA ('+intToStr(iva)+' %)'; ivaAux := iva; descuentoAux := descuento; incrementoAux := incremento; validezAux := validez; QRInc.Caption := floatToStr(incremento); QRDesc.Caption := floatToStr(descuento); QRVal.Caption := intToStr(validez); QRFecha.Caption := fecha; QRNumero.Caption := intToStr(numPres); end; procedure TForm3.QRDBText7Print(sender: TObject; var Value: String); begin if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc1') then begin Value := 'Solera Suelo'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc2') then begin Value := 'Rodapies'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc3') then begin Value := 'Zócalo'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc4') then begin Value := 'Solera'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc5') then begin Value := 'Supl. Macizos'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc6') then begin Value := 'Cajón'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc7') then begin Value := 'Tapas Cajón'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc8') then begin Value := 'Tabicas'; end; if (QAccesorios.FieldByName('accesorio').AsString = 'rbAcc9') then begin Value := 'Lápidas'; end; end; procedure TForm3.QRDBText4Print(sender: TObject; var Value: String); begin subtotal := subtotal + strToFloat(Value); Value := Format('%0.2f',[strToFloat(Value)]); end; procedure TForm3.QRDBText6Print(sender: TObject; var Value: String); begin subtotal := subtotal + strToFloat(Value); Value := Format('%0.2f',[strToFloat(Value)]); end; procedure TForm3.QRPrecio1Print(sender: TObject; var Value: String); begin subtotal := subtotal + strToFloat(Value); Value := Format('%0.2f',[strToFloat(Value)]); end; procedure TForm3.QRPrecioMonjatePrint(sender: TObject; var Value: String); begin subtotal := subtotal + strToFloat(Value); Value := Format('%0.2f',[strToFloat(Value)]); end; procedure TForm3.QRPrecioDPrint(sender: TObject; var Value: String); begin subtotal := subtotal + strToFloat(Value); end; procedure TForm3.QRIncremPrint(sender: TObject; var Value: String); var incremento2 : double; begin incremento2 := (subtotal * incrementoAux) / 100; incrementoTotal := incremento2; Value := Format('%0.2f',[incremento2]); end; procedure TForm3.QRDescuentoPrint(sender: TObject; var Value: String); var descuento2 : double; begin descuento2 := (subtotal * descuentoAux) / 100; descuentoTotal := descuento2; Value := Format('%0.2f',[descuento2]); end; procedure TForm3.QRSubtoPrint(sender: TObject; var Value: String); begin Value := Format('%0.2f',[subtotal]); end; procedure TForm3.QRIvaPrint(sender: TObject; var Value: String); var iva2 : double; begin iva2 := ((subtotal + incrementoTotal - descuentoTotal) * ivaAux) / 100; ivaTotal := iva2; Value := Format('%0.2f',[iva2]); end; procedure TForm3.QRTotPrint(sender: TObject; var Value: String); var totalAux: double; begin totalAux := subtotal + incrementoTotal - descuentoTotal + ivaTotal; Value := Format('%0.2f',[totalAux]); end; procedure TForm3.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin { subtotal := 0; ivaAux := 0; validezAux := 0; descuentoAux := 0; incrementoAux := 0; descuentoTotal := 0; incrementoTotal := 0; ivaTotal := 0; } end; procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction); begin Form3.Destroy; end; end. |
#7
|
|||
|
|||
Además, si te fijas, el subtotal se va calculando a medida que se va haciendo el onPrint de todos los valores que sumados darán el subtotal y además, así de paso hago el formateo del valor asignándoselo al Value del QRDBText
Estoy pilladísimo y seguro que es una estupidez. |
#8
|
|||
|
|||
Solucionado !!!!
Ya lo he solucionado, o eso creo. (la prueba de impresión funcionó correctamente, ahora haré más)
el subtotal lo calculo en una de las bandas subdetail de la siguiente forma: Código:
procedure TForm3.QRSubDetail2BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin subtotal := subtotal + (QAccesorios.fieldbyname('precio').asFloat); end; Vamos, que me estaba haciendo un lío de tres pares de narices en una tontería. Gracias por tu tiempo y perdona mi "estupidez" Salu2 |
#9
|
||||
|
||||
Hombre¡¡¡, que bueno que se ha encontrado el problema y que además lo se ha sabido solucionar.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
imprimir pie de página, quickreport | manolop | Impresión | 2 | 07-05-2013 19:43:02 |
Imprimir un Query en QuickReport | luxus | Impresión | 6 | 14-10-2010 21:56:19 |
Imprimir en el Quickreport los campos del checkbox | David | Impresión | 2 | 17-06-2006 10:41:03 |
Problemas al imprimir con QuickReport | DarkSide | Impresión | 9 | 25-09-2003 21:24:34 |
Problema con el Quickreport al imprimir | ALMERA | Impresión | 0 | 25-06-2003 13:29:59 |
|