Computers">
Tiene Tabla Base? ¿Qué Diferencia Hay Entre Tabla Base de Un Web Panel y Tabla Base de Un
Tiene Tabla Base? ¿Qué Diferencia Hay Entre Tabla Base de Un Web Panel y Tabla Base de Un
Tiene Tabla Base? ¿Qué Diferencia Hay Entre Tabla Base de Un Web Panel y Tabla Base de Un
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?
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
2
Page
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
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
5
Page
en el segundo sí,
7
Page
Presionemos F5
Y vemos que muestra la misma información que el web panel anterior programado con
atributos.
9
Page
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.
¿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
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
…que este web panel tiene una tabla base: Customer. De este modo, se ejecutará el evento
12
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 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.
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
15
Page
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
17
Page
18
Page
19
Page
20
Page
21
Page
… 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