PDA

Ver la Versión Completa : Como leer un TfrxMemoView?


Mefisto_Velikij
18-12-2007, 19:29:33
Tengo un TfrxMemoView en un reporte de FastReport cuya fórmula dice:
[IIF(<LB_Privado_Usu> > <Llamadas."bono_cent">, <LB_Privado_Usu>-<Llamadas."bono_cent">,0)+IIF(<Llamadas."bono_movi"> > <Cel_Privado_Usu>, <Llamadas."bono_movi">, <Cel_Privado_Usu>)]

sé que retorna el valor 112074.
Cómo puedo leer ese valor 112074 desde un beforeprint o afterprint?
Si pruebo leer memo28.text me devuelve el texto expuesto recién.
Si leo memo28.memo.text también
Si leo Value me devuelve el valor del último memo que no es el que quiero leer (ej. Memo27).
Heeelp

Tal
19-12-2007, 09:38:51
Yo lo que haría sería crear un variable y darle tu valor

variable := <IIF(<LB_Privado_Usu> > <Llamadas."bono_cent">, <LB_Privado_Usu>-<Llamadas."bono_cent">,0)+IIF(<Llamadas."bono_movi"> > <Cel_Privado_Usu>, <Llamadas."bono_movi">, <Cel_Privado_Usu>)>;

Así esa variable la puedes poner en el memo que quieras o en los que quieras y ya la tienes devuelta.
De todas formas creo que no acabo de entender tu problema...

Mefisto_Velikij
19-12-2007, 13:56:30
Yo lo que haría sería crear un variable y darle tu valor

variable := <IIF(<LB_Privado_Usu> > <Llamadas."bono_cent">, <LB_Privado_Usu>-<Llamadas."bono_cent">,0)+IIF(<Llamadas."bono_movi"> > <Cel_Privado_Usu>, <Llamadas."bono_movi">, <Cel_Privado_Usu>)>;

Así esa variable la puedes poner en el memo que quieras o en los que quieras y ya la tienes devuelta.
De todas formas creo que no acabo de entender tu problema...

Mi problema es que necesito hacer algo rápido y no andar con variables, ya que es un reporte grande.
Necesito conocer el valor que arroja el memo para hacer ciertas cosas, si es menor a cero ciertas cosas, si es mayor a cero y menor a 100000 otras cosas, si es mayor a cien mil otras cosas más.
Cómo leo dentro del FastReport el valor que devuelve un memo?. Demasiado simple es mi pregunta, no puede ser que no se pueda.
En el QuickReport existe el QRExpr.Result.dblResult o intResult o StrResult, entendea?

Tal
19-12-2007, 14:13:16
Mi problema es que necesito hacer algo rápido y no andar con variables, ya que es un reporte grande.
Necesito conocer el valor que arroja el memo para hacer ciertas cosas, si es menor a cero ciertas cosas, si es mayor a cero y menor a 100000 otras cosas, si es mayor a cien mil otras cosas más.
Cómo leo dentro del FastReport el valor que devuelve un memo?. Demasiado simple es mi pregunta, no puede ser que no se pueda.
En el QuickReport existe el QRExpr.Result.dblResult o intResult o StrResult, entendea?
No entiendo el porque de no usar una variable...seria tan sencillo como
En el onbeforeprint pones

variable := (IIF(<LB_Privado_Usu> > <Llamadas."bono_cent">, <LB_Privado_Usu>-<Llamadas."bono_cent">,0)+IIF(<Llamadas."bono_movi"> > <Cel_Privado_Usu>, <Llamadas."bono_movi">, <Cel_Privado_Usu>));

if variable < 0 then
//hacer cosa 1
else
if variable < 10000 then
//hacer cosa 2
else
//hacer cosa 3
Queda limpio, eficaz,estrucutrado e igual de rápido, ya que asignar valor a una variable en costos de tiempo es "inapreciable"
Y luego ya de la variable te olvidas si quieres. Sigues dejandole al memo la formula como la tienes.

¿Si pones memo28.value te devuelve memo27.value?
Eso si que es raro...
Yo creo que muy pocas veces he llegado a usar el .value de un memo porque suelo gastar más las variables.
Arrays y de todo, así que yo sólo te puedo ayudar hasta aquí, lo siento.

Mefisto_Velikij
19-12-2007, 14:35:30
Como no encuentro la solución en ningún lado, ya estoy modificando mi reporte para usar un toco de variables como se hacía en basic o foxpro, no me queda otra, gracias de todas formas y felices fiestas!;)

Mefisto_Velikij
19-12-2007, 14:48:35
No entiendo el porque de no usar una variable...seria tan sencillo.....
¿Si pones memo28.value te devuelve memo27.value?
Eso si que es raro...
Yo creo que muy pocas veces he llegado a usar el .value de un memo porque suelo gastar más las variables.
Arrays y de todo, así que yo sólo te puedo ayudar hasta aquí, lo siento.

No es que memo28.value me devuelva memo27.value sino que value me devuelve el valor del memo anterior al que me interesa. Ej.:

procedure Memo28OnBeforePrint(Sender: TfrxComponent);
begin
if Value < 0 then // Value que me trae de otro componente (el anterior)
--Crear link a SubReporte con las facturas impagas
else if Value < <Limite_Credito> then
-- Crear link a SubReporte con Estado de Cuenta
else
-- Crear link a SubReporte con Estado de Cuenta de los últimos 15 días
end;