Computers">
Nothing Special   »   [go: up one dir, main page]

Tiene Tabla Base? ¿Qué Diferencia Hay Entre Tabla Base de Un Web Panel y Tabla Base de Un

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

Web panel y tabla base

En este video analizaremos en detalle algunas ideas que en videos anteriores apenas hemos
sobrevolado. Por ejemplo, ¿a qué se le llama tabla base de un web panel? ¿Todo web panel
tiene tabla base? ¿Qué diferencia hay entre tabla base de un web panel y tabla base de un
grid? ¿Para qué nos importa todo esto?

Comencemos por el principio. Este web panel:

no necesita acceder en absoluto a la base de datos, porque lo único que hace es solicitar un
dato al usuario a través de esta variable aquí declarada
1
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


y con ese dato llamar a otro objeto:

2
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Este web panel, entonces, no tendrá tabla base.

En cambio este otro web panel , llamado por el anterior:

está mostrando datos del cliente 2 de la base de datos. En el form vemos que aparecen
atributos, lo que GeneXus interpreta como un pedido implícito de ir a la base de datos a
recuperar la información correspondiente.
3
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


En ejecución está mostrando el cliente 2 porque si observamos las reglas de este web panel
vemos que está recibiéndolo como parámetro en el atributo identificador, CustomerId, por lo
que automáticamente filtra por él:

De esta forma, este web panel ViewCustomerInfo sí tiene tabla base: o sea, una tabla de la
base de datos que está implícita en la forma en que diseñamos (o programamos) este web
panel.

Podemos ver rápidamente la diferencia entre un web panel y otro observando los listados de
navegación y qué pasa con el acceso a la base de datos:

4
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Así, mientras que en el primer web panel nose produce ningún tipo de acceso a la base de
datos…

5
Page

en el segundo sí,

Video filmado con GeneXus X Evolution 2 – upgrade3


y aparece la navegación para realizar la carga en el form. Se puede ver que la tabla base es
Customer y que se filtrará por el parámetro recibido Customer Id.

Hemos establecido entonces la diferencia en el acceso a la base de datos. Sin embargo no es


este acceso lo que hace que un web panel tenga o no tabla base. Es que este acceso sea
implícito.
6
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Aclaremos esto que acabamos de mencionar : En el último web panel podríamos haber
programado la carga del cliente a mano, utilizando variables en el form:

Recibiendo además el parámetro en variable:

Y cargando las variables del form:

7
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


a partir de una variable de tipo el business component Customer:

Esta variable es cargada con el cliente recibido en el parámetro:


8
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Finalmente invocamos desde el web panel SelectCustomer a este nuevo web panel:

Presionemos F5

Seleccionamos el web panel SelectCustomer, ingresamos el valor 2

Y vemos que muestra la misma información que el web panel anterior programado con
atributos.
9
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Sin embargo, si observamos su listado de navegación

Vemos que no se está indicando acceso a la base de datos, aunque se esté produciendo en la
carga del business component. Dicho de otro modo: este web panel no tiene tabla base,
aunque sí se accede a una tabla. Este acceso fue programado explícitamente, y no mediante la
forma implícita, con atributos, que ofrece el web panel para ahorrarnos trabajo.

Vamos a plantearnos ahora la siguiente pregunta:

¿En qué lugares del web panel pueden encontrarse atributos que implícitamente determinen
una tabla base del web panel? En primer lugar, en el form. Tanto fuera como dentro de un
grid .
10
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


En este último caso, en un grid está apareciendo el atributo .

Tener un grid con atributos es tener un for each implícito, al que se aplica el Order, las
Conditions, y el código declarado en el evento Load, para mostrar finalmente la información
en pantalla.
11
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Así, el listado de navegación nos informa:

…que este web panel tiene una tabla base: Customer. De este modo, se ejecutará el evento
12

Load por cada cliente de esa tabla .


Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Como el Load tiene un for each, se deberá navegar su tabla base, que nos está indicando será
la de asientos de vuelos, recuperando entonces los registros que corresponden a ese cliente ,
al que se va a cargar en el grid en ese preciso momento.

En otras palabras, el for each del evento Load se anida al implícito.

En ejecución lo vemos así

Ahora bien…

¿Qué atributos consideró GeneXus para determinar que la tabla base del web panel, es decir,
del for each implícito, es Customer?

Los de la parte fija del form, es decir, fuera del grid, que en este caso no hay ninguno.

Los propios del grid, incluyendo los que estuvieran ocultos,

Los de las propiedades Order y Conditions (también Data Selector),

los que estén dentro del evento Load, fuera de un bloque for each (en nuestro caso tampoco
hay ninguno), pues los del for each definirán la tabla base del propio for each, no la del padre
al que se anida…
13
Page

Y los que estén en cualquier otro evento, también fuera de un for each.

Video filmado con GeneXus X Evolution 2 – upgrade3


Resumiendo entonces: Los atributos que considera GeneXus para determinar la tabla base del
web panel, son los que se encuentran en el form, tanto en parte fija como en el grid

Los de las propiedades Order, conditions y DataSelector del grid

Los que se encuentran en los eventos, fuera de bloques for eachs.

Con todos estos atributos se determina la tabla base, igual que como se hace para determinar
la tabla base de un for each.

Es por eso entonces, que GeneXus determinó para nuestro web panel ViewCustomer, la tabla
base Customer.

Ahora, ¿qué sucede cuando hay más de un grid en el form? Ya hemos visto un ejemplo en otro
video:

14
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Aquí dejamos de hablar de tabla base del web panel y pasamos a hablar de tabla base de cada
grid.

15
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


En el ejemplo, en los dos grids tenemos atributos (tanto en sus columnas,–visibles u ocultos
en alguna de sus propiedades Order, Conditions, y DataSelector,

Como también en sus eventos Load (fuera de todo bloque for each): aquí solamente se
programó el load del primer grid y no hay atributos fuera del for each . Recordemos que al
agregarse un segundo grid, ya no se puede usar el evento Load genérico, puesto que no se
podría determinar a qué grid corresponde.

16
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


La tabla base entonces de cada grid se determina atendiendo exclusivamente a estos
atributos.

17
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Así, para el primer grid, dado que utiliza como columna oculta Customer Id y el atributo
fórmula CustomerFullName, resultará la tabla CUSTOMER, como su tabla base

18
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Para el segundo grid , con estos atributos ,

Siendo el atributo FlightArrivalCountryName subtipo inferido

19
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


Y FlightFinalPrice una fórmula a nivel de la tabla Flight

20
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


su tabla base será FlightSeat

21
Page

Video filmado con GeneXus X Evolution 2 – upgrade3


A diferencia del caso de un web panel con un único grid…

… los atributos que estén fuera de bloques for each en cualquier evento que no sea Load , no
participarán de la determinación de las tablas base.

Pero deberán cumplir que pertenezcan a la tabla extendida de alguno de los grids. De no ser
así, GeneXus lo advertirá en el listado de navegación.

En caso de existir atributos en la parte fija, la tabla base del primer grid en el form se
determina tomando en cuenta los atributos sueltos, y los demás grids sin tomarlos en cuenta.
22

Si desea saber más sobre este caso especial acceda a nuestro wiki :
Page

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?6105

Video filmado con GeneXus X Evolution 2 – upgrade3


23
Page

Video filmado con GeneXus X Evolution 2 – upgrade3

También podría gustarte