Usabilizando Genexus: Order en grillas.

Muchas veces por problemas de performance, es conveniente evitar que los registros vengan ordenados por algún criterio. La diferencia de performance en la base de datos, puede ser muy grande si se elimina la clausula ORDER BY de la sentencia SQL, sobre todo si la misma contiene joins.

Hoy en GeneXus se puede programar en los for each, poniéndole order none, con lo cual se puede lograr que la sentencia no incluya la parte del ORDER BY en SQL.

Sin embargo, si se tiene una grilla con atributos, si bien se puede poner reglas para ordenar, tanto en las rules, como en la propiedad order de la grilla, en estas solo se admiten atributos y no se puede poner none, por lo que las sentencias generadas siempre quedan con un order, lo cual es poco practico.

Cuando hay una grilla con atributos y hay que quitarle el order, la única solución que existe (o la única que encontré yo) es cambiar todos los atributos por variables y programar el evento load en forma manual, para poder hacer el for each.

Desde el punto de vista de quien programa, es algo muy incómodo y no parece ser una cosa demasiado complicado de implementar.

** El Order None tambien puede usarse con los data providers y data selectors, lo cual es muy bueno.

Ver:

UPDATE: Martín me hace ver en los comentarios que lo que pido, está implementado desde hace 4 años. Yo probaba con None (da el error que no existe el atribute None) y nunca habia probado poner ORDER NONE.
La documentacion lo dice, pero yo no lo habia entendido.
Dos conclusiones:
1) Soy un banana
2) Tener blog sirve para aprender.

Comentarios

  1. Aprovechando que hablas de los Order, te pregunto por ahi sale... en una TRN que tiene 2 niveles, puedo mostrar esa grid ordenada de alguna forma? o el subfile lo muestra de acuerdo a como lo voy llenando.
    pregunto ya que no pude poner el order en las rules ni en la grid de carga del subfile. espero haber sido claro Saludos Leonardo

    ResponderBorrar
  2. Leonardo:
    El orden que se muestran los registros en las grillas de las transacciones no es manejable.
    Para hacer un manejo de eso deberias programarlo en un webpanel.

    La otra opcion es poner un boton que "ordene" los renglones, y que vuelva a llamar a la transaccion en la que estas trabajando y ahi te va a quedar ordenado.
    No es muy prolijo, pero a lo mejor te sirve.

    ResponderBorrar
  3. El orden en las grillas de las transacciones es por clave primaria... por lo tanto para que "ordene" los registros la clave debería ser un id (+ la PK del cabezal...), y hay que borrar las líneas y crearlas otra vez pero con los ids modificados para que repeten el orden.

    No parece ser una buena opción, mejor sería que agregaran la regla order :)

    ResponderBorrar
  4. Enrique,
    Lo que estas pidiendo creo que es el SAC (sugerencia)19974 "Order None para grillas" (30/03/06)
    Esto fue implementado para el upgrade 2 de GeneXus 9.0
    Lo que tienes que hacer es poner "order none" en la propiedad "Order"

    Saludos,
    Martín Oliveri.

    ResponderBorrar
  5. Martin:
    Muchas gracias por la respuesta.
    Realmente no lo conocia y habia probado varias veces poniendole solamente NONE, a lo que recibia el mensaje Invalid Attribute.

    Nunca se me habia ocurrido ponerle ORDER NONE.

    Nuevamente gracias, por desaznarme.

    ResponderBorrar
  6. Gracias por los comentarios! realmente util!
    saludos
    Leonardo

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.