Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Veamos ahora qué sucede cuando nos enfrentamos a la declaración de una transacción de dos
nieveles como Business Component.
Si bien un cliente puede contratar varias excursiones y cada excursión puede ser contrada por
varios clientes, en particular cada cliente puede participar solamente de una única excursión
obsequiada por la Agencia (al menos por ahora).
Cuando las excursiones se dan de alta, se especifica si son gratuitas o no. En tanto, en la
transacción Customer hemos definido el atributo fórmula CustomerFreeTrips y la regla:
para controlar que los clientes no puedan tener más de 1 excursión obsequiada.
Ahora pasemos a ver el web panel WPTrips que hemos definido y a través del cual
resolveremos el requerimiento solicitado:
1
Page
Hemos declarado esta condición a nivel del grid, para filtrar las excursiones gratuitas y a
ciudades del país Italia, cuyo identificador CountryId = 1:
También hemos especificado la propiedad Allow Selection del grid, con el valor True, para que
el usuario final, pueda seleccionar una línea del grid:
La idea entonces es seleccionar un cliente en el combo, una excursión del grid, y que al
presionar el botón Confirm dicha excursión se grabe como una línea del cliente, controlando
siempre que solamente se registre una excursión gratuita para ese cliente.
Definimos en este objeto una variable &Customer de tipo Customer, y una variable &oneTrip
de tipo Customer.Trip:
En el evento Enter asociado al botón Confirm, lo primero que hacemos es recuperar de la base
de datos toda la información del cliente seleccionado en el combo y la misma queda cargada
en memoria en la variable &Customer .
La variable &oneTrip es del tipo de datos de una línea de la transacción Customer, es decir que
corresponde a 1 excursión del cliente. O sea que esta variable es compuesta de varios
miembros que almacenan datos. En particular le estamos asignando al identificador de la
excursión, el identificador de la excursión seleccionada en el grid.
3
Page
Hasta ahora hemos trabajado en memoria. Solamente hemos agregado 1 excursión a 1 cliente.
Si bien este control se dispara automáticamente al aplicar el método Save a la variable del
Business Component, para que el usuario final se entere, debemos obtener y mostrar
explícitamente los mensajes que se emitieron.
A qué tipo de mensajes nos referimos? A los propios que emite GeneXus por controles de
consistencia de los datos, unicidad de valores de llaves primarias, etc. y a los mensajes
asociados a nuestras propias reglas Errror y Msg.
De modo que definimos 2 variables: &Messages (del tipo de datos Messages, colección) y
&oneMessage (del tipo de datos Messages.Message, que es 1 elemento de la colección).
4
Page
y por último, utilizando el comando “For elemento in colección”, recorremos cada mensaje de
la variable colección de mensajes y desplegamos su descripción.
Probemos..
5
Page
6
Page