PDA

Ver la Versión Completa : Validacion FastReport. Urgente, plz...


mtirado
25-04-2008, 20:03:41
Hola a todos. tenog una duda sobre como validar en FastReport.
El caso es que necesito hallar el porciento de cumplimiento de dos planes de producciones, Plan1 y Plan2, la formula es %=Plan2*100/Plan1 El plan1 es el planidicado y el plan2 es el real realizado. Como puedo validar para el caso en el que el Plan1 o Plan2 sea igual a cero, y no me de error de division por cero???? Por otra parte como puedo cambiar el color del valor del %, es decir si el % me da por debajo de 95 poner la letra en rojo, sino en azul. Como hago eso? Espeor puedan ayudarme.
Saludos.

maeyanes
25-04-2008, 20:52:41
Hola...

Primero que nada, te recomiendo que repases de nuevo la Guía de Estilo de estos foros (enlace en el menú superior del foro). Esto es por que en estos foros no existe el concepto de Urgencia... :)

Sobre tu problema, solo te puedo dar pistas, ya que no uso FastReport...

Checa que el componente Label que usas para mostrar el resultado de la operación tenga un evento OnBeforePrint o un OnGetText...

Para verificar que tu operación no te produzca un error de División por Cero puedes validar mediante un if..then:


if (Plan1 = 0) then
Porcentaje := x
else
Porcentaje := (Plan2 * 100) / Plan1;

// Cambiar el color dependiendo del resultado:

if Porcentaje < 95 then
LabelFastReport.Font.Color := clRed
else
LabelFastReport.Font.Color := clBlue;
Text := Format(%d%%', [Porcentaje])



Saludos...

mtirado
25-04-2008, 21:02:29
No sabia que no se podia poner lo de urgencia, solo era una forma de poner un titulo al hilo...
A ver yo se como hacer ese codigo que me dices, pero como nunca he trabajado en el fastreport no se como decirle por codigo que me haga una u otra cosa, esa era mi dudo. Por lo que necesito es ver a alguien que si haya trabajado con el FASTREPORT y haya pasado por esa o similar situacion a la mia. NO se si me entiendes?
Saludos a todos.

maeyanes
25-04-2008, 21:12:54
Hola...

Pues con lo que te puse te estoy dando respuesta...

Casi todos, si no es que todos, los componentes de reportes de los reporteadores tienen eventos OnBeforePrint, OnAfterPrint...

Entonces solo tienes que usar ese evento para realizar lo que necesitas:


procedure TForm1.frLabelBeforePrint(Sender: TObject);
begin
// Calculamos el porcentaje
// Cambiamos el color de acuerdo al resultado
// Asiganmos el resultado a la propiedad Text o Caption del Label
end;



Saludos...

mtirado
25-04-2008, 21:17:40
Crees que eso sea asi? Es que cuanod pongo un label en el reporte, no veo ninguna propiedad del mismo o evento, ni tansiquiera el nmbre del mismo, eso es lo raro.

maeyanes
25-04-2008, 21:24:21
Hola...

Leyendo en la página de FastReport, parece ser que este usa Scripts (http://www.fast-report.com/en/faq/faq.php?ID=233#2796)...

Puede que ahí esté la solución a tus problemas...



Saludos...

cloayza
25-04-2008, 22:13:47
Edita el objeto TfrMemoView, que usaras para desplegar tu calculo,

Y coloca el siguiente codigo.


[IF(Table1."PLAN1">0,Table1."PLAn2"*100/Table1."PLAN1",0)]


Luego en las propiedades del TfrMemoView, busca la que dice "Highlight", presiona sobre los "...", se mostrara un Dialogo, en "Condition" coloca lo siguiente:

VALUE<95

En Font presiona el boton "A Color", y le das el color que desees.

Espero que te sirva.
Saludos desde

Concepcion-Chile