Page 1 of 1

Problemas con xBrowse/Array/ordenacion

Posted: Thu Oct 21, 2010 2:58 am
by jll-fwh
Hola a todos:

A ver si me podeis ayudar porque llevo 3 horas con el mismo problema y no logro dar con ello, supongo es porque ya estoy encecado y no veo nada, pero me hace cosas muy raras.

Comento:

Tengo un xBrowse mediante un array que lo ordeno por el 1 campo ( fecha ), al introducir nuevos detalles reordeno la tabla para que siempre este ordenada, hasta aqui bien, el tema es, cuando edito cualquiera de los 8 primeros registro que aparecen en el xBrowse( que son los que se ven en pantalla ), me edita _ correctos, pero cuando bajo uno o mas registro ya sea con el teclado o con el raton, y selecciono un registro apartir del 8, me edita el registro anterior al que he seleccionado en el xBrowse.

Espero haberme explicado bien, alguna sujerencia porque me pasa esto? ( por cada alteracion del xBrowse siempre refresco el objeto xBrowse )

Otras Preguntas:

Supuestamente al declarar un xBrowse con array asi:

oGrid:SetArray( aDetalles, .T., 1, )

1.- No deberia de ordenar el array automaticamente?, si es asi a mi no me funciona, para tenerlo ordenado por fechas como quiero yo, por cada detalle nuevo tengo que reordenar con:

oGrid:aCols[1]:cOrder := "D" // orden descendente
oGrid:aCols[1]:cSortOrder := 1 // Por en campo 1 ( fecha )
oGrid:aCols[1]:SortArrayData() // Ordena el array

2.- Esto es correcto? se debe de hacer asi?

Muchas gracias de antemano por la ayuda.
JLL

Re: Problemas con xBrowse/Array/ordenacion

Posted: Thu Oct 21, 2010 6:09 am
by jll-fwh
Despues de descansar un par de horas y estar un poco despejado ya he encontrado el problema que me ha traido de cabeza 3 horas, diossssss que burro soy, y simpre son tonterias al final.

Para extraer y reemplazar la informacion del array estaba usando oGrid:nRowSel en vez de oGrid:nArrayAt, habia copia un trozo de codigo de otro programa y ni se me ha ocurrido mirar esto.

Bueno, solucionado mi chorrada, pero alguien sabria decirme como se puede ordenar xBrowse con array's mediante 2 columnas?

Ahora lo tengo asi: solo por fecha y me hace falta ordenarlo tambien por hora, es decir, Fecha + Hora

/* Cada vez que se introduce o se modifica un registro del xBrowse ( adetalles ) se */
/* reordena la el Array por "Fecha Toma" */
oGrid:aCols[1]:cOrder := "D"
oGrid:aCols[1]:cSortOrder := 1
oGrid:aCols[1]:SortArrayData()

Muchas gracias de antemano;
JLL

Re: Problemas con xBrowse/Array/ordenacion

Posted: Fri May 04, 2012 11:17 pm
by elmoiquique
Hola

Una consulta como pudiste solucionar el tema de orden por array, ya que me pasa lo mismo, solo se ordena cuando presiono el header,..

Gracias

Re: Problemas con xBrowse/Array/ordenacion

Posted: Sat May 05, 2012 12:40 am
by jll-fwh
Hola elmoiquique:

Te copio el código del programa que ordenaba el array del xbrowse:

Code: Select all

   /* Para evitar un error de ejecucion hay que comprobar que el Array sea >= 2        */
   If oGrid:nLen >= 2
       ASort( oGrid:aArrayData,,, { |x, y| if( x[1]==y[1], x[2]<y[2], x[1]<y[1] ) })
   End
 
Espero que te sirva;
Un saludo
JLL

Re: Problemas con xBrowse/Array/ordenacion

Posted: Sun May 06, 2012 7:09 pm
by elmoiquique
Gracias JLL

Me sirvio tu ejemplo y lo solucione de esta forma y funciono a la perfeccion

if olbx:nlen>=2
Asort( acFirmar2,,, { |x, y| x[1] < y[1] })
endif

Gracias Nuevamente