domingo, 18 de abril de 2010

DataSelector en genexus 10

Muchas veces tenemos aplicaciones que repetimos una y otra vez las mismas consultas, un ejemplo de esto es el clásico usuarios habilitados, cuando el usuario se va a loguear al sistema al validarlo si el usuario esta activo, cuando vamos a hacer algo con los usuarios mostramos los que están activos. Entonces el código sería algo así:

For each

Where UsuarioEstado = “A”

……

Y esto se repite por todo el sistema, pero que pasa si ahora hacemos la aplicación que sea paga, entonces tenemos algo asi

For each

Where UsuarioEstado = “A”

Where UsuarioPago = “S”

…..

Y esto debemos de cambiarlo en todos lados.

Entonces Genexus 10 (X, evolutio1, etc., como quieran nombrarla) tiene un nuevo objeto que se llama DataSelector, y sirve para ayudarnos en estos casos. El data selector lo que hace es decir cuales son las condiciones que debe de cumplir una consulta, también puede recibir parámetros, decirle el orden, y por ultimo un defined by para recorrer la tabla correcta.

Lo que debemos hacer es primero definir el data selector, que seria asi

Parametros: no recibr

Condition: UsuarioEstado = “A”

Order: aca pude ser el nombre por ejemplo

Defined by: supongo que con los 2 campos recorre bien la tabla entonces no le indico nada

Al desarrollar la aplicación ponernos en todo los for each que tengan que ver con los usuarios activos

For each USING nombre del datastore

……

Entonces como dije si ahora tenemos que tener solo los usuarios actives y que pagaron, debemos de cambiar el DataStore agregándole una condition, y no tocar nada mas de la aplicación.

No hay comentarios: