PDA

Ver la Versión Completa : QuickReport, Guardar resultado de un QRExpr


Lenny
15-09-2010, 19:32:56
Nuevamente acudo a ustedes por una pequeña duda:

Tengo un informe en QuickReport, el cual hace todo perfecto, suma, multiplica, etc, en resumen con eso todo bien.
La pregunta, ¿Como puedo guardar/copiar el resultado de un QRExpr? ya sea directamente en la base de datos o en un label, lo que pasa tengo esta "Expression": Código Delphi SUM(TOTFACTURACION.MAYOR * TOTFACTURACION.Cantidad * 1.19)

He provado de todo, pero lo unico que puedo guardar es la "Expression" en si nada mas y lo que necesito es el resultado de esa "Expression", espero puedan ayudarme y gracias de antemano.

Utilizo Delphi 2010, Zeos y MySQL.

ContraVeneno
15-09-2010, 19:40:24
¿y porque no haces las operaciones directo en el dataset asociado al reporte?

Lenny
15-09-2010, 20:01:40
Bueno si, pero se puede obtener el resultado del QRExpr para poder guardarlo??? tengo todas las formulas en el reporte y la idea es reutilizarlo, sin tener que volver a crear una rutina fuera de este para guardar los resultados.

Caral
15-09-2010, 21:30:04
Hola
Si puedes usar el caption del QRExpr por que no lo puedes guardar en una variable el dato?.
Saludos

Lenny
15-09-2010, 22:00:49
Por ejemplo, si coloco:
procedure TFCLIENTE.QRExpr7Print(sender: TObject; var Value: string);
begin
QRLabel13.Caption:= QRExpr7.Value.strResult;
end;

Me deja el resultado en Blanco, si coloco:
procedure TFCLIENTE.QRExpr7Print(sender: TObject; var Value: string);
begin
QRLabel13.Caption:= QRExpr7.Caption;
end; ó procedure TFCLIENTE.QRExpr7Print(sender: TObject; var Value: string);
begin
QRLabel13.Caption:= QRExpr7.Expression;
end;

Me devuelve la formula:

SUM(TOTFACTURACION.MAYOR * TOTFACTURACION.Cantidad * 1.19)

Necesito poder guardar el resultado de la formula, o colocarla en un QRLabel para guardarla... no se si me explico, cualquier duda, estare cabezeandome con la solucion, de antemano gracias por la ayuda...

Lenny
15-09-2010, 22:52:19
Bueno, de tanto darle vuelta encontre la solucion:

QRLabel13.Caption:= FormatCurr ('########0',QRExpr7.Value.dblResult);

Hace Extactamente lo que necesito, gracias a ContraVeneno y a Caral por los comentarios, que al igual que las soluciones nos iluminan y ayudan en resolver nuetras dudas, Gracias chicos!!!

PD: Ahora para guardarlo a la base de datos deve ser otra cosa, pero creo que estoy mas que encaminado, Byes!!!

Caral
15-09-2010, 23:06:46
Hola
Me alegra que lo solucionaras.
Si llegaste hasta aqui, guardarlo en la BD sera muy sencillo.
Saludos

Lenny
15-09-2010, 23:32:04
Gracias Caral, aunque tuve que acudir a una solucion algo "CANIBAL" :o

Necesitaba guardar este valor una ves fuera impreso el informe, en este caso en el "AfterPrint" del QuickRep, pero al intentar hacer esto:

BDatos.TFACTURADO.FieldbyName('TOTAL').AsString := FormatCurr ('########0',QRExpr7.Value.dblResult);

Me guardaba Valor "0", asi que como mencionaba antes, en el evento OnPrint del QRExpr:

QRLabel13.Caption:= FormatCurr ('########0',QRExpr7.Value.dblResult);

Deje este Label oculto, tonces en el evento "AfterPrint" del QuickRep:

BDatos.TFACTURADO.FieldbyName('TOTAL').AsString := QRLabel13.Caption;

Por que de esta forma???, Estos tipos hay veces que rebajan valores a sus productos segun el cliente, asi pueden ver la factura y cambiar los valores cuantas veces sea necesario antes de "Imprimir", se que es un kilombo, pero bueno, alla ellos...
Se que no es muy "limpia" ni depurada la solucion, pero al menos hace lo que necesito, aunque este reinventando la rueda nuevamente, Jejejejeje, Un abrazo!!!