Hola,
No consigo ordenar un memdataset por un campo calculado.
Sea:
a := { {1,2,3},{4,5,6} }
::oMemDataSet:Open(a, {uno,dos})
::oMemDataSet:AddCalcField("tres", {|a| STR(a:dataset:uno,4)+" " +
STR(a:dataset:dos,4) } )
Entonces si:
::oMemDataSet1:Sort( { 3}) // ---> error de rango
::oMemDataSet1:Sort( "tres") // --> invalid expression
::oMemDataSet1:Sort( "STR(a:dataset:uno,4)+[ ] + STR(a:dataset:dos,4)")
// ---> invalid expression
Entonces.. ¿que me he dejado por hacer?
Saludos y gracias,
José Luis Capel
Attached files pruebas.zip (1.9 KB)Â
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.
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.
Memdataset y ordenaci
- ignacio
- Site Admin
- Mensajes: 9457
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Memdataset y ordenaci
José Luis,
No se puede ordenar por campos calculados, salvo que tu le digas exactamente
el criterio de ordenación que llevan, por ejemplo, en tu caso se podría
hacer oDataSet::Sort( "uno, dos" ), piensa que realmente "cuatro" no es
ninguna columna real de la matriz.
Para campos calculados más complejos obviamente se complica y en dicho caso
puede tener sentido el crear una columna adicional en el dataset. En mi
opinión, esta es la solución más acertada, al fin y al cabo son datasets en
memoria.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:455cb26c$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Hola,
>
> No consigo ordenar un memdataset por un campo calculado.
>
> Sea:
>
> a := { {1,2,3},{4,5,6} }
>
> ::oMemDataSet:Open(a, {uno,dos})
> ::oMemDataSet:AddCalcField("tres", {|a| STR(a:dataset:uno,4)+" " +
> STR(a:dataset:dos,4) } )
>
> Entonces si:
>
> ::oMemDataSet1:Sort( { 3}) // ---> error de rango
>
> ::oMemDataSet1:Sort( "tres") // --> invalid expression
>
> ::oMemDataSet1:Sort( "STR(a:dataset:uno,4)+[ ] + STR(a:dataset:dos,4)")
> // ---> invalid expression
>
> Entonces.. ¿que me he dejado por hacer?
>
> Saludos y gracias,
> José Luis Capel
>
>
>
>
No se puede ordenar por campos calculados, salvo que tu le digas exactamente
el criterio de ordenación que llevan, por ejemplo, en tu caso se podría
hacer oDataSet::Sort( "uno, dos" ), piensa que realmente "cuatro" no es
ninguna columna real de la matriz.
Para campos calculados más complejos obviamente se complica y en dicho caso
puede tener sentido el crear una columna adicional en el dataset. En mi
opinión, esta es la solución más acertada, al fin y al cabo son datasets en
memoria.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:455cb26c$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Hola,
>
> No consigo ordenar un memdataset por un campo calculado.
>
> Sea:
>
> a := { {1,2,3},{4,5,6} }
>
> ::oMemDataSet:Open(a, {uno,dos})
> ::oMemDataSet:AddCalcField("tres", {|a| STR(a:dataset:uno,4)+" " +
> STR(a:dataset:dos,4) } )
>
> Entonces si:
>
> ::oMemDataSet1:Sort( { 3}) // ---> error de rango
>
> ::oMemDataSet1:Sort( "tres") // --> invalid expression
>
> ::oMemDataSet1:Sort( "STR(a:dataset:uno,4)+[ ] + STR(a:dataset:dos,4)")
> // ---> invalid expression
>
> Entonces.. ¿que me he dejado por hacer?
>
> Saludos y gracias,
> José Luis Capel
>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Memdataset y ordenaci
Ignacio,
>
> No se puede ordenar por campos calculados, salvo que tu le digas
> exactamente el criterio de ordenación que llevan, por ejemplo, en tu caso
> se podría hacer oDataSet::Sort( "uno, dos" ), piensa que realmente
> "cuatro" no es ninguna columna real de la matriz.
>
> Para campos calculados más complejos obviamente se complica y en dicho
> caso puede tener sentido el crear una columna adicional en el dataset. En
> mi opinión, esta es la solución más acertada, al fin y al cabo son
> datasets en memoria.
>
He seguido tus consejos y toooooodo va bien.
Saludos y gracias!
José Luis Capel
>
> No se puede ordenar por campos calculados, salvo que tu le digas
> exactamente el criterio de ordenación que llevan, por ejemplo, en tu caso
> se podría hacer oDataSet::Sort( "uno, dos" ), piensa que realmente
> "cuatro" no es ninguna columna real de la matriz.
>
> Para campos calculados más complejos obviamente se complica y en dicho
> caso puede tener sentido el crear una columna adicional en el dataset. En
> mi opinión, esta es la solución más acertada, al fin y al cabo son
> datasets en memoria.
>
He seguido tus consejos y toooooodo va bien.
Saludos y gracias!
José Luis Capel