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.

Calculated fields

Foro público de Xailer en español
User avatar
Marcelo Coelho Silva
Posts: 267
Joined: Sat May 31, 2008 4:49 pm

Calculated fields

Postby Marcelo Coelho Silva » Tue Jan 26, 2016 6:19 pm

Senhores,

Estou tendo problemas ao utilizar os "Calculated fields" do TDBFDATASET do Xaliler (4.0.2).

Sendo:

oDbf1 e oDbf2 // TDBFDATASET
oDbf1:AddCalcField( "CAL_FIELD", {|oField| ................... } ) // CAL_FIELD é um "Calculated fields"
oBrw // TDBBROWSE
oColumn1 // TBrwColumn de oBrw

Não Funciona:

oColumn1:FilterEval := "UPPER('%') $ UPPER( CAL_FIELD )"
oDbf:SetRelation( "CAL_FIELD", oDbf2 )

Como faço para utilizar um "Calculated fields" como um FIELD normal ?

Obrigado,

Marcelo Coelho Silva
Brasil.
Att.

Marcelo Coelho Silva
Brasil.
Rich
Posts: 75
Joined: Tue Mar 12, 2013 1:50 am
Contact:

Re: Calculated fields

Postby Rich » Wed Jan 27, 2016 3:25 am

Anigo Marcelo, cuando creas un campo calculado, este se agrega en forma automatica a la matriz de campo cálculados aUserFields, la cual es el almacen de objetos TDataField con todos los campos calculados o nuevos campos virtuales creados por ti para ese DataSet. Despues tu lo usas como requieras.

Mi nombre es Raúl Olivares G., desde 2007 poseo una licencia de Xailer Enterprise, la cual he mantenido actualizada hasta el día de hoy, y desde hace años me dedico a impartir cursos en línea de Xailer x.0 y de MariaDb x.0 a la comunidad de usuarios de Xailer.

Ing. Raúl Olivares G.
http://www.informaticaoverlisa.mx
info@informaticaoverlisa.mx
meridiano74@prodigy.net.mx
52(33)3366-7516
Saludos amigos.
User avatar
Marcelo Coelho Silva
Posts: 267
Joined: Sat May 31, 2008 4:49 pm

Re: Calculated fields

Postby Marcelo Coelho Silva » Wed Jan 27, 2016 4:15 am

Amigo Raúl ,

Rich wrote:Anigo Marcelo, cuando creas un campo calculado, este se agrega en forma automatica a la matriz de campo cálculados aUserFields, la cual es el almacen de objetos TDataField con todos los campos calculados o nuevos campos virtuales creados por ti para ese DataSet. Despues tu lo usas como requieras.


Obrigado pela atenção. Conforme explicado na minha mensagem anterior, em algumas situações eles não funcionam. Por exemplo como parte de um relacionamento (SetRelation), exemplo oDbf:SetRelation( "CAL_FIELD", oDbf2 ) ou como parte da expreção dos filtro de um TDBBROWSE, exemplo oColumn1:FilterEval := "UPPER('%') $ UPPER( CAL_FIELD )"

Gostria de saber como utiliza-los nestes casos.

Obrigado,
Att.

Marcelo Coelho Silva
Brasil.
Rich
Posts: 75
Joined: Tue Mar 12, 2013 1:50 am
Contact:

Re: Calculated fields

Postby Rich » Fri Jan 29, 2016 5:44 am

Amigo Marcelo, me parece que he visto algunos comentarios tuyos en estos foros sobre MariaDB. Quizas puedas enfocar la solución de esta necesidad reemplazando los dbf's de la aplicación que mencionas, por tablas de MariaDB, ya que este RDBMS ademas de manejar campos calculados de manera mas eficiente que Xailer, tambien te permitiría llevar a cabo una query, subquery o join con nas eficiencia y rapidez. Hace más de ocho años que deje de usar dbf's como medio de almacenamiento principal de los datos de mis aplicaciones, y si bien es cierto que aun uso dbf's, lo hago en forma esporádica y muy simple. Espero haberte ayudado.

Mi nombre es Raúl Olivares G., desde 2007 poseo una licencia de Xailer Enterprise, la cual he mantenido actualizada hasta el día de hoy, y desde hace años me dedico a impartir cursos en línea de Xailer x.0 y de MariaDb x.0 a la comunidad de usuarios de Xailer.

Ing. Raúl Olivares G.
http://www.informaticaoverlisa.mx
info@informaticaoverlisa.mx
meridiano74@prodigy.net.mx
52(33)3366-7516
Saludos amigos.
User avatar
ignacio
Site Admin
Posts: 8579
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Calculated fields

Postby ignacio » Fri Jan 29, 2016 9:56 am

xailer\samples\datacontrols\DbfData1

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
User avatar
Marcelo Coelho Silva
Posts: 267
Joined: Sat May 31, 2008 4:49 pm

Re: Calculated fields

Postby Marcelo Coelho Silva » Fri Jan 29, 2016 2:52 pm

Prezado Ignacio,

ignacio wrote:xailer\samples\datacontrols\DbfData1

Saludos


O exemplo acima possui o mesmo proplema citado acima, ou seja, o "Calculated fields" não pode ser utilizado como um campo normal na expressão que avalia o Filtro.

Uma solução, pelo menos para os filtros do TDBBROWSE, seria a existencia de uma macro que contivesse o valor do "Buffer" da Coluna do Browse.

exemplo:
oColumn1:FilterEval := "UPPER('%') $ UPPER( ´@´ )"

sendo '@' (um exemplo) uma macro que contenha o valor do "Buffer" da coluna do TDBBROWSE, da mesma forma que '%' , contem o valor do buffer de edição do filtro.
Att.

Marcelo Coelho Silva
Brasil.
User avatar
ignacio
Site Admin
Posts: 8579
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Calculated fields

Postby ignacio » Fri Jan 29, 2016 5:22 pm

Buenos días,

El comando SET FILTER no entiende de campos calculados que se realicen por fuera. El día en que Harbour cree campos calculados sobre tablas DBF a lo mejor podremos adaptarlo. Mientras tanto la solución la tiene en el ejemplo que le comento.

En vez de:

oDbf1:AddCalcField( "CALCFIELD", {|o| o:oDataField:FIRST+o:oDataField:LAST } )
oColumn1:FilterEval := "UPPER('%') $ UPPER( ´CALCFIELD´ )"

Realice lo siguiente:

oDbf1:AddCalcField( "CALCFIELD", {|o| o:oDataField:FIRST+o:oDataField:LAST } )
oColumn1:FilterEval := "UPPER('%') $ UPPER( FIRST+LAST )"

O mejor aún, olvídese de los DBF

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
User avatar
Marcelo Coelho Silva
Posts: 267
Joined: Sat May 31, 2008 4:49 pm

Re: Calculated fields

Postby Marcelo Coelho Silva » Sun Feb 07, 2016 8:28 pm

Prezado Ignacio,

Quando o Calculated Field é uma função Complexa, fica dificil coloca-la dentro do SET FILTER. Uma solução seria a criação dentro do Componete TDBBROWSE de uma macro (da mesma forma que a macro '%') que possuisse o valor do Buffer a ser comparado.

Seria muito complicado a implementação desta macro ?
Att.

Marcelo Coelho Silva
Brasil.

Return to “Spanish”

cron