PDA

Ver la Versión Completa : Ocultar contenido de un QRDBText en Quickreport


Oscar Guzmán
07-06-2012, 03:29:54
Hola a todos y gracias de antemano por su ayuda. También quisiera decir que he buscado bastante en internet y en todo el foro de impresión de ClubDelphi pero no encuentro como podría colocar un cero en un QRDBText cuando el valor que se va a mostrar es negativo, digamos: -3.200,00., es decir, que si tengo una columna de valores positivos y viene desde la tabla un valor negativo quisiera cambiarlo por un cero de forma que no me reste los valores positivos. He tratado de hacerlo a través de "BeforePrint" utilizando el evento "Hide" y otras cosas pero no logro que se cambie el valor que viene desde la tabla de datos. Agradecería cualquier dato que pudieran aportar para éste problemilla.

Caral
07-06-2012, 03:52:47
Hola
En ese evento tienes que crear una variable que se llene con el valor que te presentara la consulta, una vez que lo tengas simplemente creas una condición con if y se mostrara o no dependiendo de la misma.
Saludos

Oscar Guzmán
07-06-2012, 05:55:34
Hola Caral, gracias por responder...
En base a lo que me indicaste estoy trantando de guardar en una variable el contenido del query dentro de una variable pero en todo caso como le indicaría de acuerdo al if que en el qrdbtext tiene que mostrarse un cero y no el valor negativo que venía originalmente?

marcoszorrilla
07-06-2012, 06:51:17
Otra opción sería crear un campo calculado con la condición que indicas.

Un Saludo.

Oscar Guzmán
07-06-2012, 15:30:32
Gracias Marcos, pero como creo un campo calculado, disculpa

Oscar Guzmán
07-06-2012, 15:35:18
Disculpa Marcos, ya me acordé de como son los campos calculados, voy a intentar y confirmo aquí la solución, gracias de nuevo

MartinS
07-06-2012, 15:51:32
Me parece buena la opcion de Marcos.

Otra mas simple seria que en vez de usar un QrDbText uses un QrLabel y le pasas el valor en el evento que indicas antes de imprimir de modo que:

If TuConsulta.FieldByName('Saldo').AsCurrency < 0 then
Qrlabel.Caption := '$ 0,00' else
QrLabel.Caption := CurrToStr(TuConsulta.FieldByName('Saldo').ASCurrency);


Saludos.-

Perdon: Supuse que la consulta daba un solo registro. Me quedo con la opcion de Marcos

Oscar Guzmán
08-06-2012, 22:05:27
A Martins gracias, por que aunque efectivamente no es un solo valor que muestra sino una columna de valores que al final tengo que sumar igual vale tu tiempo y ayuda, gracias.

A Marcos, al final utilicé CASE para los campos ya que con los campos calculados no me estaba funcionando bien, pero gracias a todos por su tiempo y aquí coloco el CASE para un de los campos que tengo que validar y consecuencia alterar el QRDBText.

Case when Monto > 0 then Monto Else 0 end as ttotal

marcoszorrilla
09-06-2012, 13:22:51
Está mejor con Case, lo que sucede y por eso no lo cité es que por ejemplo en Paradox no existe y al no mencionar el motor opté por el campo calculado que funciona en todos los motores.

Un Saludo.