Página 1 de 1

Uso de cSortEval

Publicado: Lun Sep 17, 2007 6:58 pm
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.

Uso de cSortEval

Publicado: Jue Sep 20, 2007 9:36 am
por Bingen Ugaldebere
Siento insistir pero no lo consigo entender.
Alguien puede darme luz sobre cSortEval? (ver mensaje anterior)
Salu2 y gracias.

Uso de cSortEval

Publicado: Jue Sep 20, 2007 10:33 am
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.

Uso de cSortEval

Publicado: Vie Sep 21, 2007 8:28 am
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
>

Uso de cSortEval

Publicado: Vie Sep 21, 2007 9:21 am
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
>>

Uso de cSortEval

Publicado: Vie Sep 21, 2007 10:51 am
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.

Uso de cSortEval

Publicado: Lun Sep 24, 2007 10:33 am
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.

Uso de cSortEval

Publicado: Vie Oct 05, 2007 5:08 pm
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.
--