Académique Documents
Professionnel Documents
Culture Documents
Pasemos a conocer los objetos de tipo Procedimiento que podemos definir en una base de conocimiento
GeneXus
Este tipo de objeto nos permite definir PROCESOS para acceder y navegar tablas de la base de datos con
distintos objetivos:
por ejemplo, podramos necesitar navegar los registros de cierta tabla, que cumplan con determinadas
condiciones y actualizar para dichos registros cierto atributo con determinado valor
1
Page
o tambin definir procesos especficos que necesitemos resolver, que contengan bsquedas, clculos,
actualizaciones a la base de datos y que vayan imprimiendo informacin.
2
Page
As que creamos un nuevo objeto, esta vez de tipo procedure, al que llamamos:
Una vez creado el objeto vemos que GeneXus nos posiciona en una seccin llamada Source:
Aqu es donde escribiremos comandos y rdenes que permitan al procedimiento cumplir con el objetivo para el
cual lo hemos creado, en nuestro caso imprimir un listado de atracciones tursticas.
El layout es el lugar destinado al diseo de la salida, es decir, donde especificaremos cmo deseamos ver nuestros
Page
datos.
Podemos querer mostrar ttulos, lneas, rectngulos, imgenes, as como tambin valores de atributos o
variables. Para ello los arrastraremos dentro del printblock.
En este printblock, podemos querer incluir un ttulo, o la fecha del da, y tambin podremos agregar ms
printblocks en esta seccin, como veremos.
Pensemos ahora cmo queremos que se vea nuestro listado, as podremos proceder a definirlo. Podra ser algo
as
Notemos que queremos mostrar 2 contenidos fijos, como es el ttulo del listado con la imagen
y los ttulos de las columnas con la lnea debajo
Podramos definir entonces tres printblocks: uno en el cual incluiramos el ttulo del listado y la imagen
otro para mostrar los ttulos de las columnas con la lnea debajo
y un tercer printblock
5
Page
Podemos usar el printblock que se cre cuando creamos el objeto procedimiento para el ttulo y la imagen.
Empecemos por el ttulo. Para esto desde la Toolbox arrastramos el control Text Block editamos sus
propiedades y en la de nombre Text escribimos AtractionsList. Modificamos tambin su color, su fuente..., y
lo ubicamos donde queremos que aparezca en relacin a los mrgenes.
Nombraremos a este printblock con un nombre claro que represente lo que est mostrando. As que
seleccionamos las propiedades del printblock y editamos su propiedad Name, asignndole como nombre Title.
6
Page
Este botn nos permite explorar nuestro sistema de archivos y elegir la imagen, que se crear como objeto
GeneXus de tipo Image con el mismo nombre del archivo imagen como nombre por defecto . De all en ms
podremos utilizar la imagen dentro de nuestra KB libremente.
7
Page
Ahora vamos a crear otro printblock para incluir en l los ttulos de las columnas, con una lnea debajo. Si
presionamos el botn derecho del mouse sobre determinado printblock y seleccionamos la opcin Insert
Printblock
y ahora vamos a insertar en este nuevo printblock un TextBlock por cada texto que queremos mostrar como
Page
ttulo de columna.
y ahora otro Textblock para mostrar el texto Country. Y por litmo un text block para el ttulo Photo.
Ubicamos los controles en la posicin que queremos Los podemos alienar seleccionndolos todos y luego:
10
Page
Si ahora en el Source escribiramos las rdenes para que se imprima el primer printblock y a continuacin el
segundo, estos espacios en blanco de aqu sern respetados:
11
Nos est faltando ahora agregar el tercer printblock que habamos dicho, para mostrar los datos de las atracciones
tursticas, as que insertamos un nuevo printblock y le ponemos como nombre: Attractions.
Page
En esta ventana que se nos abre elegimos qu variable o atributo queremos mostrar en el control. Veamos que
adems de &today, en un procedimiento existen estas otras variables del sistema.
12
Page
Lo alineamos a la derecha respecto al ttulo Id (El ltimo control seleccionado es el que sirve de referencia:
vemos que as aparece resaltado grficamente
Presionamos OK
15
Page
No nos dimos cuenta de una cosa: la foto de la atraccin no podr aparecer en ese espacio tan reducido que le
dejamos al control atributo AttractionPhoto. Tendremos que agrandarlo un poco.
16
Y lo primero que queremos que se imprima, es el ttulo del reporte, as que escribimos print Title:
Como las instrucciones que escribamos en el Source, se ejecutarn de arriba hacia abajo, sta instruccin ser la
primera que se va a ejecutar. Estamos indicando con ella que se imprima el contenido del printblock de nombre
Title, es decir el ttulo del listado.
El comando Print siempre debe tener a continuacin el nombre de un printblock definido en el Layout.
17
Page
Con estas dos instrucciones hemos indicado que se imprima la parte fija del reporte, es decir, la que no variar
de acuerdo a los datos: la que tiene el ttulo del reporte y la imagen del avin y la que tiene los ttulos de las
columnas.
Pero ahora necesitamos imprimir la informacin de las atracciones, que est almacenada en la base de datos.
Para eso, debemos acceder a la tabla fsica que tiene almacenada dicha informacin, o sea a la tabla asociada a
la transaccin Attraction
18
Page
y al lado: Attraction.
.. y ahora.. dado que queremos imprimir de cada atraccin turstica, el contenido de los atributos AttractionId,
AttractionName, CountryName, y AttractionPhoto escribimos la orden para imprimir el printblock Attractions
que los contiene. As que escribimos Print Attractions:
19
Page
Y listo!
De esta forma, le hemos indicado a GeneXus que tiene que navegar la tabla fsica ATTRACTION, correspondiente
a la transaccin Attraction:
y como dentro del For each, hemos invocado a un printblock que contiene atributos de las tablas ATTRACTION y
COUNTRY, aplicando el concepto de tabla extendida, para cada atraccin navegada, se acceder a la tabla
COUNTRYCITY, y de sta a COUNTRY, para obtener el nombre del pas donde se encuentra dicha atraccin:
20
Page
Pero primero tenemos que definir algunas propiedades necesarias para que se imprima el listado con formato
PDF. [para las props usar vista categorizada, no alfabtica que apabulla!!!]Vamos a las propiedades del reporte y
en la propiedad Main program seleccionamos True.
Luego en la propiedad Call protocol seleccionamos HTTP.
Y por ltimo tenemos que insertar la regla OutputFile en la seccin de las reglasporque como se ve, un objeto
de este tipo tambin permite definir algunas reglas aunque menos que en una transaccin, as que
seleccionamos Insert/Rule
21
Page
22
Page
y como dijimos antes, corresponde al nombre de la transaccin, cuya tabla fsica asociada queremos navegar.
En nuestro caso, la tabla Attraction, de igual nombre que la transaccin.
Y si la transaccin tuviera ms de un nivel? Como Flight por ejemplo... y quisiramos navegar la tabla fsica
asociada al 2do nivel de la transaccin? Es decir: a los asientos del vuelo.
Transaction
name
Punto
23
Transaction Transaction
name Level name
Bien. La tabla fsica que el For each navegar, as como otras decisiones que toma GeneXus, son mostradas en
el listado de navegacin del procedimiento
Este listado es creado automticamente cuando se genera el procedimiento para ser ejecutado. En nuestro caso,
fue luego del F5.
En l GeneXus nos indica cmo accede a la informacin de la base de datos. Vamos a observarlo
Podemos ver que al lado de donde dice For Each, dice tambin Attraction:
Recordemos que el For each recorre una tabla fsica, por lo que el nombre Attraction que aparece en el listado
de navegacin es el de la tabla fsica ATTRACTION, no el de la transaccin base que hemos escrito en el
Page
procedimiento. GeneXus deduce esta tabla porque es la tabla asociada a esa transaccin base que indicamos.
Nos indica tambin que recorri todos los registros de la tabla: pues empez por el primer registro e iter hasta
llegar al fin de la tabla.
25
Page
es decir que mostr todas las atracciones. y por ltimo... nos indica que la tabla que naveg fue Attraction
para recuperar informacin, ya que en nuestro listado mostramos al nombre del pas.
26
Una cosa que nos haba quedado pendiente es que las atracciones salgan listadas ordenadas en forma alfabtica,
Y esto lo logramos simplemente escribiendo luego del For Each Attraction, la clusula order AttractionName
Y vemos que ahora las atracciones tursticas son listadas ordenadas alfabticamente por su nombre.
27
Page
pero se encuentra en la tabla extendida de la tabla base navegaday por lo tanto podemos ordenar por l.
Y vemos que ahora salen listadas las atracciones ordenadas alfabticamente por el nombre de pas!
28
Page
Por ejemplo, qu pasara si en la agencia de viajes nos piden que listemos solamente las atracciones tursticas
de Francia?
Solamente agregaremos al comando For Each, una clasula llamada Where, para que filtre y muestre nicamente
los datos que cumplan con la condicin deseada.
As que nos posicionamos en el rengln siguiente al For Each y escribimos WhereCountryId=2, ya que sabemos
que el Id de Francia es el 2.
29
Page
En lugar de filtrar por el identificador de pas, podramos haber escrito Where CountryName=France.
El comando For each se utiliza para recorrer cada registro de una tabla y hacer algo con su informacin
relacionada.
Para ello le indicamos el nombre del nivel de la transaccin cuya tabla asociada queremos recorrer.
31
Page
Y de ese nivel GeneXus inferir la tabla a recorrer, a la que llamamos tabla base del for each.
32
Page
Aqu resumimos lo que hemos visto hasta el momento del comando for each:
Mediante la clusula Order es posible indicar el criterio por el cual ordenar la informacin devuelta por el For
each. El orden puede ser de acuerdo a los atributos de la tabla base del For each o de su extendida.
Como vemos, se puede ordenar por un solo atributo, o por varios.
33
Page
Aqu tanto CountryName, como CategoryName no estn presentes en la tabla base, Attraction, sino en tablas de
la extendida: 34
Page
La condicin puede ser compleja, incluyendo varias condiciones unidas por AND u OR, es decir, por ejemplo:
Condition1 AND Condition2: lo que significa que ambas deben cumplirse a la vez
35
Page
Tambin podemos colocar varias clusulas Where, lo que es lo mismo que escribir una sola, con las condiciones
unidas por AND:
36
Page
El comando admite ms clusulas y opciones. Alguna ser vista en otros videos. Otras se abordarn en otros
cursos.
38
Page