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
Responder
Avatar de Usuario
Marcelo Coelho Silva
Mensajes: 269
Registrado: Sab May 31, 2008 4:49 pm
Ubicación: Brasil
Contactar:

Calculated fields

Mensaje por Marcelo Coelho Silva »

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
Mensajes: 75
Registrado: Mar Mar 12, 2013 1:50 am
Contactar:

Re: Calculated fields

Mensaje por Rich »

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.
Avatar de Usuario
Marcelo Coelho Silva
Mensajes: 269
Registrado: Sab May 31, 2008 4:49 pm
Ubicación: Brasil
Contactar:

Re: Calculated fields

Mensaje por Marcelo Coelho Silva »

Amigo Raúl ,
Rich escribió: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
Mensajes: 75
Registrado: Mar Mar 12, 2013 1:50 am
Contactar:

Re: Calculated fields

Mensaje por Rich »

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.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9257
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Calculated fields

Mensaje por ignacio »

xailer\samples\datacontrols\DbfData1

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
Marcelo Coelho Silva
Mensajes: 269
Registrado: Sab May 31, 2008 4:49 pm
Ubicación: Brasil
Contactar:

Re: Calculated fields

Mensaje por Marcelo Coelho Silva »

Prezado Ignacio,
ignacio escribió: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.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9257
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Calculated fields

Mensaje por ignacio »

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]
https://www.xailer.com
Avatar de Usuario
Marcelo Coelho Silva
Mensajes: 269
Registrado: Sab May 31, 2008 4:49 pm
Ubicación: Brasil
Contactar:

Re: Calculated fields

Mensaje por Marcelo Coelho Silva »

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.
Responder