PiensoPienso: Cual es la salida de este programa?

Tengo una tabla Jugadores con los datos:






Tengo un procedimiento GeneXus con el código:




Cual es la salida de este programita:

1)
Biscayzacú
--->OK
Bueno
--->Expulsado
Sosa
--->Lesionado
----------------
Biscayzacú
--->Lesionado
Bueno
--->Lesionado
Sosa
--->Lesionado

2)
Biscayzacú
--->OK
Bueno
--->Expulsado
Sosa
--->Lesionado
----------------
Biscayzacú
--->
Bueno
--->
Sosa
--->

3)
Biscayzacú
--->OK
Bueno
--->Expulsado
Sosa
--->Lesionado
----------------
Biscayzacú
--->OK
Bueno
--->Expulsado
Sosa
--->Lesionado




Y si no estuviera el primer For each, cual seria el resultado?

Comentarios

  1. ¿Puedo ver la navegación?

    ¿No debería dar un warning por el atributo fuera de for each?

    ResponderBorrar
  2. Así como está, la 1).

    Si la clave de la tabla fuera [Jugador, Estado], entonces la 3)

    Si le sacás el primer for each, entonces es la 2).

    ResponderBorrar
  3. Acosta:

    No daría ningún warning, ya que la navegación la hace simplemente sobre la tabla de Jugadores.

    La respuesta es la 1 dado que el mensaje que se construye en la subrutina mantiene el Ultimo valor del atributo usado en el primer for each, y por consiguiente si no estuviera el primer for each la salida sería la segunda parte de la respuesta 2.

    Espero se entienda.

    Saludos.

    ResponderBorrar
  4. La gracia de este programa, es que su resultado varia por su entorno.
    Tal como dice Marcos y dadas las implementaciones actuales de Genexus (9.0 y X), depende de la clave de la tabla el resultado del programa.

    Si la clave es Jugador, el resultado es 1), si la clave es Jugador,Estado, la salida es 3) .

    Si no se hace el primer for each, el resultado es

    Biscayzacú
    --->
    Bueno
    --->
    Sosa
    --->

    o sea que no da ningun aviso, pero no trae nada en el atributo Estado.

    Esto es bastante peligroso, porque cuando se hace refactoring se mueve parte del codigo desde dentro de un for each a una subrutina, algunos de los atributos pueden quedar no inicializado, si dicho atributo no esta referenciado dentro del for each. De ser necesario se puede agregar un

    defined by Estado

    y de esta forma el resultado seria similar al 3).

    Gracias a todos por los comentarios!!.

    ResponderBorrar
  5. Recién leo el post... llegué tarde... el resultado de cualquier forma y sin importar el for each, las conditions o lo que le pongas es favorable a Nacional... no le des mas vueltas, es un programa de esos "intratables". :P

    Saludos

    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

Aplicación monolítica o distribuida?

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

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