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.

Ordenar un Memdataset por campo calculado

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Ordenar un Memdataset por campo calculado

Mensaje por jose.luis »

Hola,
¿Como puedo ordenar un memdataset por un campo calculado?
En mi caso quisiera hacer lo siguiente. Supongamos la siguente matriz:
aData := { {"100",1,2},{"9023",2,3},{"63",3,2},{"1",9,9} }
Usando un memdataset sería:
oMemDataSet1:open(aData,{"CCODART","CAMPO1","CAMPO2"})
Como se puede observar, todos los campos CCODART son alfanuméricos
alineados a la izquierda. Ese campo necesito alinearlo a la derecha y
con un ancho fijo de 18.
Había pensado en crear un campo calculado tal como sigue:
oMemDataSet1:AddCalcField := {|a,b| PADL(ALLTRIM( a:oDataSet:ccodart),
18," ") }
Y luego ordenarlo con oMemDataSet:Sort( { n } ) donde n es la columna a
ordenar. Pero no se cual número de columna es.
Saludos y gracias,
José Luis Capel
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Ordenar un Memdataset por campo calculado

Mensaje por jose.luis »

Ups,
> oMemDataSet1:AddCalcField := {|a,b| PADL(ALLTRIM( a:oDataSet:ccodart),
> 18," ") }

oMemDataSet1:AddCalcField("MICAMPO", {|a,b| PADL(ALLTRIM
( ::oDataSet:ccodart), > 18," ") }
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9452
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Ordenar un Memdataset por campo calculado

Mensaje por ignacio »

José Luis,
oCol := oMemDataSet1:AddCalcField := {|a,b| PADL(ALLTRIM(
a:oDataSet:ccodart), 18," ") }
oMemDataSet:Sort( { oCol:nIndex } )
Saludos,
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97E2660C0C4CAjoseluiscapelaicom@82.144.6.50...]Xns97E2660C0C4CAjoseluiscapelaicom@82.144.6.50...[/email]
> Hola,
>
> ¿Como puedo ordenar un memdataset por un campo calculado?
>
> En mi caso quisiera hacer lo siguiente. Supongamos la siguente matriz:
>
> aData := { {"100",1,2},{"9023",2,3},{"63",3,2},{"1",9,9} }
>
> Usando un memdataset sería:
>
> oMemDataSet1:open(aData,{"CCODART","CAMPO1","CAMPO2"})
>
> Como se puede observar, todos los campos CCODART son alfanuméricos
> alineados a la izquierda. Ese campo necesito alinearlo a la derecha y
> con un ancho fijo de 18.
>
> Había pensado en crear un campo calculado tal como sigue:
>
> oMemDataSet1:AddCalcField := {|a,b| PADL(ALLTRIM( a:oDataSet:ccodart),
> 18," ") }
>
> Y luego ordenarlo con oMemDataSet:Sort( { n } ) donde n es la columna a
> ordenar. Pero no se cual número de columna es.
>
>
> 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
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Ordenar un Memdataset por campo calculado

Mensaje por jose.luis »

Ignacio,
Gracias por responder.
>
> oCol := oMemDataSet1:AddCalcField := {|a,b| PADL(ALLTRIM(
> a:oDataSet:ccodart), 18," ") }
>
> oMemDataSet:Sort( { oCol:nIndex } )
>
Estos memdataset son una maravilla!! Me están proporcionando una
flexibilidad tremenda.
Saludos,
José Luis Capel
Responder