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.

Uso de cSortEval

Foro de Xailer profesional en español
Responder
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Uso de cSortEval

Mensaje por Bingen Ugaldebere »

Buenas compañeros.
Si tengo un browse de un MemDataset con una columna de tipo texto que es
la fecha en formato mm-aaaa y uso lAutoOrder lógicamente esta columna no
me la ordena debidamente y entonces entra la propiedad cSortEval de la
columna.
Pero no doy con la solución correcta que deberí­a de ser algo asi como
Right(Fecha,4)+Left(Fecha,2)
lo cual me da un error en un logdebug que dice
#1: XAILER TMemDataSet:Sort() Error (invalid expression)
No veo de que otra manera hacerlo.
Muchas gracias por vuestra atención.
Salu2.
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Uso de cSortEval

Mensaje por Bingen Ugaldebere »

Siento insistir pero no lo consigo entender.
Alguien puede darme luz sobre cSortEval? (ver mensaje anterior)
Salu2 y gracias.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Uso de cSortEval

Mensaje por ignacio »

Bingen,
En cSortEval tienes que poner una expresión que el propio gestor de bases de
datos sea capaz de entender. En el ejemplo DbfData1 el primer campos es un
campo calculado que llama a una función de nombre FirstLast(). Logicamente
el gestor de BD no entiende esa función y es a través de la propiedad
cSortEval que puedes indicarle un criterio de ordenación válido. En este
caso, la función es:
STATIC FUNCTION FirstLast( oDataField )
LOCAL cText
WITH OBJECT oDataField:oDataSet
cText := Trim( :First( dsFIELD ) ) + " " + Trim( :Last( dsFIELD ) )
END WITH
RETURN cText
Y 'cSortEval' es:
FIRST+LAST
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:46eeb23c$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Buenas compañeros.
>
> Si tengo un browse de un MemDataset con una columna de tipo texto que es
> la fecha en formato mm-aaaa y uso lAutoOrder lógicamente esta columna no
> me la ordena debidamente y entonces entra la propiedad cSortEval de la
> columna.
>
> Pero no doy con la solución correcta que debería de ser algo asi como
>
> Right(Fecha,4)+Left(Fecha,2)
>
> lo cual me da un error en un logdebug que dice
> #1: XAILER TMemDataSet:Sort() Error (invalid expression)
>
> No veo de que otra manera hacerlo.
>
> Muchas gracias por vuestra atención.
>
> Salu2.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Uso de cSortEval

Mensaje por Bingen Ugaldebere »

Gracias Ignacio pero en mi caso el campo no es un campo calculado
simplemente es uno del dataset que es de tipo carácter llamado FechaIni
con la particularidad de que muestra una fecha en formato "mm-aaaa" y
cSortevalfunciona correctamente si le digo que lo ordene por cualquier
campo o combinación de estos como first+last.
Pero en cuanto intento aplicar una función como
Right(FechaIni,4)+Left(FechaIni,2) simplemente no ordena por nada, no
hace ni caso.
Es esto imposible de hacer?
Salu2.
Ignacio Ortiz de Zúñiga escribió:
> Bingen,
>
> En cSortEval tienes que poner una expresión que el propio gestor de bases de
> datos sea capaz de entender. En el ejemplo DbfData1 el primer campos es un
> campo calculado que llama a una función de nombre FirstLast(). Logicamente
> el gestor de BD no entiende esa función y es a través de la propiedad
> cSortEval que puedes indicarle un criterio de ordenación válido. En este
> caso, la función es:
>
> STATIC FUNCTION FirstLast( oDataField )
>
> LOCAL cText
>
> WITH OBJECT oDataField:oDataSet
> cText := Trim( :First( dsFIELD ) ) + " " + Trim( :Last( dsFIELD ) )
> END WITH
>
> RETURN cText
>
> Y 'cSortEval' es:
>
> FIRST+LAST
>
> Un saludo
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Uso de cSortEval

Mensaje por ignacio »

Bingen,
Esa expesión la debe comprender perfectamente un dataset para DBFs, pero
para SQL seguramente no.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:46f364d5$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Gracias Ignacio pero en mi caso el campo no es un campo calculado
> simplemente es uno del dataset que es de tipo carácter llamado FechaIni
> con la particularidad de que muestra una fecha en formato "mm-aaaa" y
> cSortevalfunciona correctamente si le digo que lo ordene por cualquier
> campo o combinación de estos como first+last.
>
> Pero en cuanto intento aplicar una función como
> Right(FechaIni,4)+Left(FechaIni,2) simplemente no ordena por nada, no hace
> ni caso.
>
> Es esto imposible de hacer?
>
> Salu2.
>
>
> Ignacio Ortiz de Zúñiga escribió:
>> Bingen,
>>
>> En cSortEval tienes que poner una expresión que el propio gestor de bases
>> de datos sea capaz de entender. En el ejemplo DbfData1 el primer campos
>> es un campo calculado que llama a una función de nombre FirstLast().
>> Logicamente el gestor de BD no entiende esa función y es a través de la
>> propiedad cSortEval que puedes indicarle un criterio de ordenación
>> válido. En este caso, la función es:
>>
>> STATIC FUNCTION FirstLast( oDataField )
>>
>> LOCAL cText
>>
>> WITH OBJECT oDataField:oDataSet
>> cText := Trim( :First( dsFIELD ) ) + " " + Trim( :Last( dsFIELD ) )
>> END WITH
>>
>> RETURN cText
>>
>> Y 'cSortEval' es:
>>
>> FIRST+LAST
>>
>> Un saludo
>>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Uso de cSortEval

Mensaje por Bingen Ugaldebere »

Pues es un Dataset para DBFs y no va, aun no he empezado con Sqls.
Realmente sale un Logdebug que no habí­a visto hasta ahora por que se
mete debajo de la ventana principal del programa maximizada que dice:
#1: XAILER TMemDataSet:Sort() Error (invalid expression)
Y el problema esta en que el Sort de MemDataSet separa la expresión de
orden por las comas de Right(Fechaini,4)+Left(Fechaini,2) ya que por
ellas distingue los campos a ordenar tipo SQL y claro la lí­a.
Alguna solución?
Gracias y salu2.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9459
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Uso de cSortEval

Mensaje por ignacio »

Bingen,
Acabo de probar en el ejemplo DatacontrolsDbfData1 el siguiente valor en
la primera columna que es un campo calculado:
LEFT( FIRST, 5 ) + LEFT( LAST, 5 )
Y tengo que decir que funciona correctamente.
Como siempre digo: Mandanos un ejemplo que muestre el error o indicanos como
reproducirlo con alguno de los existentes. Gracias.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:46f38628$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Pues es un Dataset para DBFs y no va, aun no he empezado con Sqls.
>
> Realmente sale un Logdebug que no había visto hasta ahora por que se mete
> debajo de la ventana principal del programa maximizada que dice:
>
> #1: XAILER TMemDataSet:Sort() Error (invalid expression)
>
> Y el problema esta en que el Sort de MemDataSet separa la expresión de
> orden por las comas de Right(Fechaini,4)+Left(Fechaini,2) ya que por ellas
> distingue los campos a ordenar tipo SQL y claro la lía.
>
> Alguna solución?
>
> Gracias y salu2.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Uso de cSortEval

Mensaje por Bingen Ugaldebere »

Hola Ignacio tienes razón, si que el ejemplo DatacontrolsDbfData1
funciona por que usa un DbBrowse con un DBFDataset pero mi problema es
si pondo un tMemDataset.
Como me pediste te he preparado un ejemplo sobre el de
DatacontrolsDbfData1 para que veas el problema, he intentado hacerlo
de varias maneras y no me sale todo el rato da
1: XAILER TMemDataSet:Sort() Error (invalid expression)
Salu2 y gracias.
--
Responder