In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

TBrowse y campos calculados

Foro de Xailer profesional en español
Responder
Paco Gomis
Mensajes: 70
Registrado: Mar Oct 27, 2009 2:59 pm

TBrowse y campos calculados

Mensaje por Paco Gomis »

Hola
Hay alguna forma de presentar el arrastre de una o varias columnas en un
Tbrowse, me explico:
Columna1 Columna2 ColumnaCalculada
20 10 30
10 15 55
20 20 95
Con Clipper y FWC3 si que podia forzar una columna, rehaciendo la clase. He
intentado hace algo con campos calculados, me da GPF, tal vez si tubiera el
fuente de la clase TBrowse, podria ver que metodo debo sobrecargar para
tener el resultado esperado.
Un Saludo
Paco Gomis
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

TBrowse y campos calculados

Mensaje por ignacio »

Paco,
La solución más sencilla es crear una matriz con el mismo número de
elementos que la tabla y en ella hacer al principio y de una vez el cálculo
de la columna calculada. A continuación crea un campo calculado EN EL
DATASET que sencillamente apunte a la matriz en base a la propiedad
TBrowse:KeyNo().
Un campo calculado directo no es posible ya que le obligaría por cada
visualización del mismo a recalcular su saldo hasta él, lo cual es inviable.
No se lo que hacia con Clipper para 'forzar una columna' pero dudo muy mucho
que consiguiera un campo de saldo arrastrado sin apoyarse en una matriz como
le digo. Modificar una clase personalizandola para que funciones con un
único tipo de Browse no me parece muy acertado. En cualquier caso me tiene
intrigado, y me considero un ex-experto en Fivewin, y estaría encantado de
ver un ejemplo de como 'fuerza una columna' con Fivewin sobre todo teniendo
en cuenta que Fivewin utilizaba una propiedad bLine que era un codeblock que
englobaba un array de codeblocks que se evaluaban a bajo nivel para se
supone ir más rápido, y por lo tanto es una clase dificilmente modicable sin
alterar completamente su rutina de pintado.
El 95% de los fuentes de Xailer estarán disponibles cuando se publique la
versión definitiva de Xailer Pro que será en la primera semana de mayo.
Por último, le recomiendo que intente lo que le comento en el primer
párrafo, y si tiene algún problema en implementarlo envienos un pequeño
ejemplo que muestre sus problemas.
Un saludo
"Paco Gomis" <paco_casa@hotmail.com> wrote in message
news:46200711$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola
> Hay alguna forma de presentar el arrastre de una o varias columnas en un
> Tbrowse, me explico:
>
> Columna1 Columna2 ColumnaCalculada
> 20 10 30
> 10 15 55
> 20 20 95
>
> Con Clipper y FWC3 si que podia forzar una columna, rehaciendo la clase.
> He intentado hace algo con campos calculados, me da GPF, tal vez si
> tubiera el fuente de la clase TBrowse, podria ver que metodo debo
> sobrecargar para tener el resultado esperado.
>
> Un Saludo
> Paco Gomis
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Paco Gomis
Mensajes: 70
Registrado: Mar Oct 27, 2009 2:59 pm

TBrowse y campos calculados

Mensaje por Paco Gomis »

Ignacio
Efectivamente, me apoyo en un campo auxiliar (SALDO), y recupero el valor de
este, no obstante lo mismo que funciona con FWC3, en Xailer se vuelve
inestable.
Lo que me propones funciona perfectamente, solo hay que mantener los cambios
en la matriz creada
Con FWC3
ADD COLUMN TO oBr ;
DATA TRANSFORM(fSaldo(oBr,nSalInicio),"@EZ ,999,999.99" ) ;
HEADER "SALDO"+CRLF+TRANSFORM(nSalInicio,"@EZ 999,999,999.99");
ALIGN DT_RIGHT,DT_RIGHT;
SIZE 93
//********************************************************** */
STATIC FUNCTION fSaldo(oBr,nSalInicio)
LOCAL nSumSaldo
(oBr:cAlias)->(DBSKIP(-1))
IF (oBr:cAlias)->(BOF())
nSumSaldo:=nSalInicio
ELSE
nSumSaldo:=(oBr:cAlias)->SALDO
(oBr:cAlias)->(DBSKIP(1))
ENDIF
IF (oBr:cAlias)->ENTRADA # 0
nSumSaldo+=(oBr:cAlias)->ENTRADA
ELSE
nSumSaldo-=(oBr:cAlias)->SALIDA
ENDIF
IF LNETRECLOC(oBr:cAlias)
(oBr:cAlias)->SALDO:=nSumSaldo
(oBr:cAlias)->( DBUnLock() )
ENDIF
RETURN (nSumSaldo)
Gracias
Un Saludo
Paco Gomis
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:4620a8da$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Paco,
>
> La solución más sencilla es crear una matriz con el mismo número de
> elementos que la tabla y en ella hacer al principio y de una vez el
> cálculo de la columna calculada. A continuación crea un campo calculado EN
> EL DATASET que sencillamente apunte a la matriz en base a la propiedad
> TBrowse:KeyNo().
>
> Un campo calculado directo no es posible ya que le obligaría por cada
> visualización del mismo a recalcular su saldo hasta él, lo cual es
> inviable.
>
> No se lo que hacia con Clipper para 'forzar una columna' pero dudo muy
> mucho que consiguiera un campo de saldo arrastrado sin apoyarse en una
> matriz como le digo. Modificar una clase personalizandola para que
> funciones con un único tipo de Browse no me parece muy acertado. En
> cualquier caso me tiene intrigado, y me considero un ex-experto en
> Fivewin, y estaría encantado de ver un ejemplo de como 'fuerza una
> columna' con Fivewin sobre todo teniendo en cuenta que Fivewin utilizaba
> una propiedad bLine que era un codeblock que englobaba un array de
> codeblocks que se evaluaban a bajo nivel para se supone ir más rápido, y
> por lo tanto es una clase dificilmente modicable sin alterar completamente
> su rutina de pintado.
>
> El 95% de los fuentes de Xailer estarán disponibles cuando se publique la
> versión definitiva de Xailer Pro que será en la primera semana de mayo.
>
> Por último, le recomiendo que intente lo que le comento en el primer
> párrafo, y si tiene algún problema en implementarlo envienos un pequeño
> ejemplo que muestre sus problemas.
>
> Un saludo
>
> "Paco Gomis" <paco_casa@hotmail.com> wrote in message
> news:46200711$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Hola
>> Hay alguna forma de presentar el arrastre de una o varias columnas en un
>> Tbrowse, me explico:
>>
>> Columna1 Columna2 ColumnaCalculada
>> 20 10 30
>> 10 15 55
>> 20 20 95
>>
>> Con Clipper y FWC3 si que podia forzar una columna, rehaciendo la clase.
>> He intentado hace algo con campos calculados, me da GPF, tal vez si
>> tubiera el fuente de la clase TBrowse, podria ver que metodo debo
>> sobrecargar para tener el resultado esperado.
>>
>> Un Saludo
>> Paco Gomis
>>
>>
>>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

TBrowse y campos calculados

Mensaje por ignacio »

Paco,
El código que envía no puede funcionar, Por ejemplo, cuando habiendo muchos
registros decida ir desde el primero al último, todos los registros no
mostrados no serán tomados en cuenta en el cálculo del saldo final. Observo
que la tabla tiene un campo SALDO que necesarimante tiene que estar
constantemente recalculando, y que incluso guardo su valor actualizado
mientras se pinta el propio Browse. En mi opinión no tiene mucho sentido ese
campo en la tabla, pero es tan sólo mi opinión. Tampoco soy partidario de
estar variando el Recno del propio Dataset mientras se está pintando.
No se a que se refiere cuando dice que Xailer es insestable, supongo que se
refiere al valor del saldo que le retorna. lo cual lo considero
completamente normal por lo que le cuento. Sea más explicito, o mandenos un
ejemplo que lo muestre.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Paco Gomis" <paco_casa@hotmail.com> escribió en el mensaje
news:[email=4620ade4@ozsrv2.ozlan.local...]4620ade4@ozsrv2.ozlan.local...[/email]
> Ignacio
> Efectivamente, me apoyo en un campo auxiliar (SALDO), y recupero el valor
> de este, no obstante lo mismo que funciona con FWC3, en Xailer se vuelve
> inestable.
> Lo que me propones funciona perfectamente, solo hay que mantener los
> cambios en la matriz creada
>
> Con FWC3
>
> ADD COLUMN TO oBr ;
> DATA TRANSFORM(fSaldo(oBr,nSalInicio),"@EZ ,999,999.99" ) ;
> HEADER "SALDO"+CRLF+TRANSFORM(nSalInicio,"@EZ 999,999,999.99");
> ALIGN DT_RIGHT,DT_RIGHT;
> SIZE 93
>
> //********************************************************** */
> STATIC FUNCTION fSaldo(oBr,nSalInicio)
> LOCAL nSumSaldo
> (oBr:cAlias)->(DBSKIP(-1))
> IF (oBr:cAlias)->(BOF())
> nSumSaldo:=nSalInicio
> ELSE
> nSumSaldo:=(oBr:cAlias)->SALDO
> (oBr:cAlias)->(DBSKIP(1))
> ENDIF
> IF (oBr:cAlias)->ENTRADA # 0
> nSumSaldo+=(oBr:cAlias)->ENTRADA
> ELSE
> nSumSaldo-=(oBr:cAlias)->SALIDA
> ENDIF
> IF LNETRECLOC(oBr:cAlias)
> (oBr:cAlias)->SALDO:=nSumSaldo
> (oBr:cAlias)->( DBUnLock() )
> ENDIF
> RETURN (nSumSaldo)
>
> Gracias
> Un Saludo
> Paco Gomis
>
> "Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
> news:4620a8da$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Paco,
>>
>> La solución más sencilla es crear una matriz con el mismo número de
>> elementos que la tabla y en ella hacer al principio y de una vez el
>> cálculo de la columna calculada. A continuación crea un campo calculado
>> EN EL DATASET que sencillamente apunte a la matriz en base a la propiedad
>> TBrowse:KeyNo().
>>
>> Un campo calculado directo no es posible ya que le obligaría por cada
>> visualización del mismo a recalcular su saldo hasta él, lo cual es
>> inviable.
>>
>> No se lo que hacia con Clipper para 'forzar una columna' pero dudo muy
>> mucho que consiguiera un campo de saldo arrastrado sin apoyarse en una
>> matriz como le digo. Modificar una clase personalizandola para que
>> funciones con un único tipo de Browse no me parece muy acertado. En
>> cualquier caso me tiene intrigado, y me considero un ex-experto en
>> Fivewin, y estaría encantado de ver un ejemplo de como 'fuerza una
>> columna' con Fivewin sobre todo teniendo en cuenta que Fivewin utilizaba
>> una propiedad bLine que era un codeblock que englobaba un array de
>> codeblocks que se evaluaban a bajo nivel para se supone ir más rápido, y
>> por lo tanto es una clase dificilmente modicable sin alterar
>> completamente su rutina de pintado.
>>
>> El 95% de los fuentes de Xailer estarán disponibles cuando se publique la
>> versión definitiva de Xailer Pro que será en la primera semana de mayo.
>>
>> Por último, le recomiendo que intente lo que le comento en el primer
>> párrafo, y si tiene algún problema en implementarlo envienos un pequeño
>> ejemplo que muestre sus problemas.
>>
>> Un saludo
>>
>> "Paco Gomis" <paco_casa@hotmail.com> wrote in message
>> news:46200711$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>> Hola
>>> Hay alguna forma de presentar el arrastre de una o varias columnas en un
>>> Tbrowse, me explico:
>>>
>>> Columna1 Columna2 ColumnaCalculada
>>> 20 10 30
>>> 10 15 55
>>> 20 20 95
>>>
>>> Con Clipper y FWC3 si que podia forzar una columna, rehaciendo la clase.
>>> He intentado hace algo con campos calculados, me da GPF, tal vez si
>>> tubiera el fuente de la clase TBrowse, podria ver que metodo debo
>>> sobrecargar para tener el resultado esperado.
>>>
>>> Un Saludo
>>> Paco Gomis
>>>
>>>
>>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder