Professional Documents
Culture Documents
Parte I
TABLA DE CONTENIDO
CAPACITACION GENEXUS ....................................................... 4
INTRODUCCION TEORICA ..................................................... 10
.............................................................................................................
METODOLOGIA TRADICIONAL .............................................. 14
METODOLOGIA GENEXUS........................................................ 19
.............................................................................................................
DISEO DE TRANSACCIONES................................................ 41
NOMENCLATURA GIK .............................................................. 47
TIPOS DE DATOS ....................................................................... 49
COMANDOS DE ASIGNACIN .................................................. 51
DOMINIOS ................................................................................... 52
TAB CONTROL ........................................................................... 55
INTEGRIDAD REFERENCIAL ................................................. 59
CONCEPTO DE TABLA EXTENDIDA .................................... 62
ATRIBUTOS FORMULAS ......................................................... 66
CARACTERISTICAS .................................................................... 67
CLASIFICACION .......................................................................... 68
FORMULAS HORIZONTALES ................................................... 69
FORMULAS VERTICALES.......................................................... 72
FORMULAS AGGREGATE / SELECT ........................................ 75
COMUNICACION ENTRE OBJETOS..................................... 98
REGLAS Y COMANDOS............................................................ 100
SUBRUTINAS ............................................................................. 107
ARBOL DE EVALUACION Y EVENTOS .............................. 110
ARBOL DE EVALUACION ........................................................ 111
EVENTOS EN TRANSACCIONES ............................................ 119
REPORTES YPROCEDIMIENTOS ........................................ 131
COMANDO FOR EACH ............................................................ 134
INFERENCIA DE TABLAS ....................................................... 135
REPORT WIZARD ...................................................................... 141
DISTINTOS CASOS DE FOR EACH ........................................ 142
REPORT VIEWER ....................................................................... 150
PROCEDIMIENTOS ................................................................... 151
RESTRICCIONES ........................................................................ 155
Capacitacin GeneXus
CURSO GENEXUS PARTE I
Es indispensable para comenzar a desarrollar Aplicaciones GeneXus.
Objetivo : Capacitar a los usuarios para conseguir el cambio de mentalidad que GeneXus requiere
y dar elementos bsicos para el diseo de Aplicaciones.
Alcance : Conceptos fundamentales y elementos bsicos. No se abordan todos los temas, algunos
de ellos son abordados en el Curso Genexus Parte II.
Orientado: A Usuarios que van a desarrollar directamente Aplicaciones usando GeneXus y
lderes de Proyecto.
Etapas: Este curso consta de 3 etapas:Autoestudio , Curso Terico/ Prctico y Taller.
Aprobacin: Este curso es evaluado por los instructores de Artech . La evaluacin consiste en la
defensa del Taller realizado y el resultado de dicha evaluacin (Aprobacin /No aprobacin)
es comunicado a la Empresa.
Habilitado a: El alumno que aprueba dicho curso queda habilitado a desarrollar aplicaciones de
pequeo y mediano porte, sin embargo es necesario el apoyo que se brinda en el WorkShop.
Duracin: 76 horas distribuidas en cuatro semanas.
WORKSHOP
Objetivo: Apoyo inicial a la primera aplicacin real que desarrolla el cliente. El Workshop
cumple las siguientes funciones fundamentales: a) Realizar un anlisis inicial junto al cliente
que redunde en una planificacin para la correcta insercin de GeneXus en la empresa b)
Apoyar tcnicamente el comienzo del desarrollo con la herramienta de cuyo resultado
depende en gran parte el futuro desempeo y satisfaccin del cliente. c) Tener un
seguimiento del Cliente en la etapa inicial para asegurarnos que obtiene la productividad
esperada y corregir posibles desvos en la etapa inicial.
Condiciones previas: Tener aprobado el Curso Genexus.
Orientado a: Usuarios que van a desarrollar directamente aplicaciones usando GeneXus y
lderes de Proyecto.
Duracin: 20 horas de consultora en el Cliente.
Comienzo: Es conveniente comenzarlo apenas finalizado el Curso GeneXus . Debe
comenzar antes de los 60 das de finalizado dicho curso, sino se pierde el derecho a
realizarlo.
CURSO JAVA
Objetivo: Dar los elementos necesarios para poder generar aplicaciones Java en una
arquitectura Cliente/Servidor de 2 y mltiples capas para correr tanto en una Intranet como en
Internet.
Condiciones previas: Tener aprobado los cursos GeneXus y Client/Server
Alcance: Informacin general sobre lenguaje Java, Informacin general sobre Generador Java,
Software necesario, Configuracin del Modelo, Distribucin de aplicaciones para su puesta en
produccin, Ejecucin en mltiples capas, Pool de conexiones, Lightweight Directory Access
Protocol (LDAP)
Orientado a: Gerentes de Proyecto y Tcnicos de la empresa.
Duracin: 12 horas (terico/prctico) distribuidas en 3 das.
CURSO WORKFLOW
Objetivo: Uno de los problemas que se encuentra habitualmente en el desarrollo de
aplicaciones para empresas, es que las tareas o procesos que se desarrollan en el entorno laboral
de las mismas quedan inmersos en el cdigo de la aplicacin que resuelve la problemtica de la
empresa. Est claro que la gran mayora de los usuarios no tienen conocimiento de estas tareas,
las mismas estn ocultas a sus ojos y se realizan automticamente. El hecho de realizar cambios
en dichas tareas o procesos resulta muy costoso, y es muy factible que dichos cambios redunden
en realizar nuevamente la aplicacin.
Una buena solucin al problema anterior es separar los procedimientos y asociarlos a los flujos
de trabajo realizados dentro de la empresa. Vemos entonces, que el Workflow se relaciona con
la automatizacin de los procedimientos donde los documentos, la informacin o tareas son
pasadas entre los participantes del sistema de acuerdo a un conjunto de reglas previamente
establecidas. El fin de lo anterior es llegar a culminar una meta comn impuesta por la empresa.
El Workflow nos da las facilidades para modelar los procesos de empresa, permitindonos de
esta forma hacer un anlisis y diseo mas profundo de los mismos. Vemos entonces al
Workflow no solo como una tecnologa que nos facilita el cambio, sino tambin, como una
tecnologa que nos da un marco de referencia para el anlisis y diseo previo a la implantacin
de un sistema que implica la interaccin de diversos procesos.
ARTech ha estado trabajando en la investigacin y desarrollo de tecnologa de Workflow para
incorporarla al desarrollo de los Sistemas de Informacin. Esto surgi al detectarse que en
varios proyectos realizados nos enfrentbamos a problemas que se podan resolver de una forma
ms natural con este tipo de tecnologa. As en una primera instancia surgi una solucin de
Workflow especfica para resolver la problemtica de un proyecto y hoy en da se dispone de
una solucin integral para desarrollos con GeneXus que est siendo utilizada en varios
proyectos. El objetivo de este curso es: conocer los conceptos ms importantes de la teora de
Workflow, cuales son las componentes de la solucin, tecnologa asociada a cada componente,
y ver como se integra esta tecnologa al desarrollo de sistemas con GeneXus.
Alcance: Los puntos principales que se tratan en el curso son los siguientes: Conceptos
Tericos de Workflow, estudio de la herramienta de definicin de procesos (GeneXus Process
Modeler), estudio del Workflow en ejecucin (Inbox y Motor de Workflow), estudio de las
Workflow APIs, y el estudio de la integracin de la solucin de Workflow con el desarrollo de
los sistemas con GeneXus. En forma paralela al curso terico se ir estudiando casos prcticos y
los participantes irn aplicando sobre stos las metodologas aprendidas. Finalmente el
participante realizar el diseo y la implementacin de un caso prctico con la tecnologa
GeneXus-Workflow.
Orientado a: El Curso est orientado principalmente a Gerentes de Informtica, Lderes de
Proyectos y Desarrolladores. A los Lderes de proyectos y Desarrolladores se les pide tener
aprobado el Curso GeneXus. A los Gerentes de Informtica se les recomienda realizar
previamente las dos primeras semanas del curso GeneXus.
Duracin: 16 horas distribuidas en 4 das.
RECOMENDACIN:
A continuacin detallamos una propuesta de capacitacin para cada uno de los Roles que se
llevan a cabo dentro del rea de informtica.Reconocemos que muchas veces estos roles son
cumplidos por la misma persona o por varias , para lo cual debern considerarse las funciones
ms que las personas.
DESARROLLADOR GENEXUS: Persona directamente involucrada en el Desarrollo de
Aplicaciones
GERENTE y/o LDER DE PROYECTO : Persona que coordina el desarrollo de un grupo de
desarrolladores y eventualmente desarrolla aplicaciones.
GERENTE DE INFORMATICA: Persona encargada del sector informtico de la Empresa.
DESAROLLADOR
- CURSO GENEXUS - Al comienzo
- WORKSHOP - Inmediatamente despes de finalizado el Curso Genexus
- CLIENT/SERVER - Despus del Curso Genexus (si corresponde)
- DESARROLLO DE APLICACIONES PARA INTERNET - Despus del Curso Genexus (si corresponde)
-WORKFLOW - Despus del Curso Genexus (si corresponde)
-CURSO PARA GERENTES DE PROYECTOS - Tres meses despus de aprobado el Curso Genexus
GERENTE y/o LDER DE PROYECTO
- CURSO GENEXUS - Al comienzo
- CURSO PARA GERENTES DE PROYECTOS - Inmediatamente despus del Curso Genexus
- CLIENT/SERVER - Despus del Curso Genexus (si corresponde)
- DESARROLLO DE APLICACIONES PARA INTERNET - Despus del Curso Genexus (si corresponde)
- WORKFLOW - Despus del Curso Genexus (si corresponde)
GERENTE DE INFORMTICA
- TEORICO DEL CURSO GENEXUS PARTE 1- Al comienzo
- CURSO PARA GERENTES DE PROYECTOS- Despus del terico del Curso Genexus Parte1
Introduccin
Terica
10
REALIDAD
Herramientas y Metodologas
?
BASE
DE
DATOS
PROGRAMAS
Desarrollo
y
Mantenimiento
11
Modelado de la realidad
a partir de las Visiones de Usuarios
Satisface
MODELO DE
LA REALIDAD
Ingenieria Inversa
BASE
DE
DATOS
PROGRAMAS
VISIONES
DE
USUARIOS
12
Comparacin
de
Metodologas
Es bueno, para fijar ideas, comparar la metodologa utilizada por GeneXus conocida
como Metodologa Incremental con las metodologas tradicionales ms utilizadas
actualmente.
Algunos de los ejemplos de estas metodologas son: Anlisis Estructurado, Ingeniera
de la Informacin, Anlisis Escencial.
Estas metodologas son diferentes entre s, pero en todos los casos, separan el anlisis
de los datos del de los procesos.
Veremos un esquema general que podra aplicarse a cualquiera de stas metodologas
y estudiaremos sus problemas.
13
Metodologa Tradicional
14
REALIDAD
ANALISIS
DE
DATOS
BASE
DE
DATOS
ANALISIS
FUNCIONAL
GENERACION/
INTERPRETACION
ESPECIFICACION
FUNCIONAL
PROGRAMAS
PROGRAMACION
15
16
17
18
Metodologa
19
REALIDAD
DESCRIPCION
DE OBJETOS
Desarrollo con
20
REALIDAD
DESCRIPCION
DE OBJETOS
BASE
DE
DATOS
BASE DE
CONOCIMIENTO
Desarrollo con
PROGRAMAS
21
REALIDAD
ANALISIS
DE
DATOS
DESCRIPCION
DE OBJETOS
BASE
DE
DATOS
ANALISIS
FUNCIONAL
BASE DE
CONOCIMIENTO
Comparacin de
Metodologas
GENERACION/
INTERPRETACION
ESPECIFICACION
FUNCIONAL
PROGRAMAS
PROGRAMACION
22
Descripcin de Objetos
Transacciones
(TRNs)
Reportes
(RPTs)
Procedimientos
(PROCs)
Work Panels
(WKPs)
Menues
(MNUs)
La primer tarea que hay que realizar es pasar a describir los objetos de la realidad,
mediante objetos Genexus.
Para ello existen 5 objetos bsicos:
TRANSACCIONES
Las transacciones permiten definir los objetos de la realidad. La mayor parte de las
transacciones pueden ser identificadas prestando atencin a las entidades que el usuario
menciona (por ej. Clientes, Proveedores, Artculos).
A partir de las transacciones Genexus infiere el diseo de la base de datos.
PROCEDIMIENTOS
Procesos no interactivos de actualizacin de la base de datos (procesos batch).
REPORTES
Recuperan informacin a partir de los datos almacenados y no los alteran. Los reportes
son lo que conocemos habitualmente como listados.
PANELES DE TRABAJO
Permite definir consultas interactivas a la base de datos. Es un objeto muy flexible que
se presta para mltiples usos.
MENUES
Objetos organizadores del resto.
23
Transacciones
(TRNs)
Reportes
(RPTs)
Procedimientos
(PROCs)
Work Panels
(WKPs)
Menues
(MNUs)
Base
Basede
deConocimiento
Conocimiento
24
Reportes
(RPTs)
Procedimientos
(PROCs)
Work Panels
(WKPs)
Menues
(MNUs)
Base
Basede
deConocimiento
Conocimiento
Base
de
Datos
25
Reportes
(RPTs)
Procedimientos
(PROCs)
Work Panels
(WKPs)
Menues
(MNUs)
Base
Basede
deConocimiento
Conocimiento
Base
de
Datos
Programas
Generacin
BD
26
Reportes
(RPTs)
Procedimientos
(PROCs)
Work Panels
(WKPs)
Menues
(MNUs)
Base
Basede
deConocimiento
Conocimiento
Base
de
Datos
Programas de Aplicacion
(TRN, RPT, PROC, WKP y MNU)
27
Reportes
(RPTs)
Procedimientos
(PROCs)
Work Panels
(WKPs)
Menues
(MNUs)
Base
Basede
deConocimiento
Conocimiento
Programas de Aplicacion
Base
de
Datos
Aplicaciones
28
Nuevos
Reportes
Nuevos
Procedimientos
Nuevos
Work Panels
Nuevos
Menues
Base
Basede
deConocimiento
Conocimiento
Base
de
Datos
Nueva
Base
de
Datos
Programas de Aplicacion
(TRN, RPT, PROC, WKP y MNU)
29
Nuevos
Reportes
Anlisis
de
impacto
Base
de
Datos
Nuevos
Procedimientos
Nuevos
Work Panels
Nuevos
Menues
Base
Basede
deConocimiento
Conocimiento
Nueva
Base
de
Datos
Programas de Aplicacion
(TRN, RPT, PROC, WKP y MNU)
30
Nuevos
Reportes
Programas
de
Reorganiz.
Base
de
Datos
Nuevos
Procedimientos
Nuevos
Work Panels
Nuevos
Menues
Base
Basede
deConocimiento
Conocimiento
Nueva
Base
de
Datos
Programas de Aplicacion
(TRN, RPT, PROC, WKP y MNU)
31
Nuevos
Reportes
Nuevos
Procedimientos
Nuevos
Work Panels
Base
Basede
deConocimiento
Conocimiento
Nueva
Base
de
Datos
Nuevos
Menues
Anlisis
de
impacto
Nuevos
Programas de Aplicacion
(TRN, RPT, PROC, WKP y MNU)
32
Nuevos
Reportes
Nuevos
Procedimientos
Nuevos
Work Panels
Base
Basede
deConocimiento
Conocimiento
Nueva
Base
de
Datos
Nuevos
Menues
Generacin
de nuevos
Programas
Nuevos
Programas de Aplicacion
(TRN, RPT, PROC, WKP y MNU)
33
Nuevos
Reportes
Nuevos
Procedimientos
Nuevos
Work Panels
Nuevos
Menues
Base
Basede
deConocimiento
Conocimiento
Nueva
Base
de
Datos
Nuevos
Programas de Aplicacion
(TRN, RPT, PROC, WKP y MNU)
Aplicaciones
34
Lenguaje Generado
COBOL/400, RPG/400
Lenguaje Generado
Foxpro, Clipper
Foxpro for Windows
Visual Basic
Visual Fox
DBF
DBF
ACCESS
DBF
ARQUITECTURA CLIENT/SERVER
Cliente
Database Server
Plataformas (Ejs.)
FOXPRO WIN, VB, VFP, JAVA ORACLE
Unix, NT
MS SQL SERVER
Alfa, WINDOWS NT y 95
INFORMIX
Unix, NT
DB2 Common Servers
RS6000, OS2
DB2/400
AS400
35
Metodologa Incremental
Consiste en construir una aplicacin mediante aproximaciones
sucesivas.
DEFINICION
INICIAL
36
Ciclos Diseo-Prototipo y
Diseo-Produccin
Diseo
Prototipo
Produccin
Ciclo de Prototipacin:
El diseador recorrer repetidamente el bucle Diseo-Prototipo durante
la fase de diseo, construyendo y probando sucesivos prototipos del
modelo.
Ciclo de Produccin:
Por el contrario, pasar menos frecuentemente al bucle de DiseoProduccin, ya que la generacin del sistema se realiza solamente
cuando el prototipo ha sido totalmente aprobado, o luego de haber
instrumentado y probado algn cambio.
37
Prototipacin Integral en PC
MODELO DE
LA REALIDAD
Construccin
Automtica
Usuario probando todos los detalles
de la aplicacin
BASE
DE
DATOS
PROGRAMAS
38
Ventajas de la Prototipacin
Permite ver resultados en forma temprana
Permite el seguimiento de los requerimientos del
usuario
Deteccin de errores en forma temprana
Logra el compromiso de los usuarios con el
desarrollo
Sistemas de mejor calidad
39
Warnier-Orr
Comienzo
Emisin de
la Factura
Emisin del
cabezal
Comienzo
Emisin de
una Factura
(cuerpo)
Fin
Nro de Factura
Nro de Cliente
Nombre Cliente
Fecha Factura
Proceso de
emisin de
lneas
Emisin de
una lnea
Fin
Fin
Cdigo Producto
Nombre Producto
Precio Producto
Cantidad Producto
Importe Producto
40
DISEO DE
TRANSACCIONES
41
Cdigo de la factura
Cdigo del cliente
Nombre del cliente
Fecha de la factura
Cdigo del producto
Nombre del producto
Precio del producto
42
TABLAS
Factura
FacNro*
CliCod
CliNom
FacFch
Factura1
FacNro*
ProdCod*
ProdNom
ProdPre
FacLinCnt
FacLinImp
Veamos el proceso de obtencin de una base de datos en 3era. forma normal a partir
de las especificaciones de transacciones.
Para esto utilizaremos como ayuda las dependencias funcionales que se derivaran
de la definicin de la transaccin.
La definicin de esta primera transaccin a determinado las siguientes dependencias
funcionales.
FacNro ----> CliCod
FacNro ----> CliNom
FacNro ----> FacFch
Por lo que se definir una tabla con el siguiente diseo
FacNro*
CliCod
CliNom
FacFch
Tenemos adems las siguientes dependencias funcionales determinadas por el
2do nivel de la transaccin.
FacNro, ProdCod ----> ProdNom
FacNro, ProdCod ----> ProdPre
FacNro, ProdCod ----> FacLinCnt
FacNro, ProdCod ----> FacLinImp
Que definirn una tabla con el siguiente diseo
FacNro *
ProdCod*
ProdNom
ProdPre
FacLinCnt
FacLinImp
43
Producto
ProdCod*
ProdNom
ProdPre
Factura
FacNro*
CliCod
CliNom
FacFch
Factura1
FacNro*
ProdCod*
ProdNom
ProdPre
FacLinCnt
FacLinImp
44
Factura
FacNro*
CliCod
CliNom
..........
Factura
FacNro*
CliFacCod
Cliente
SI
CliCod*
CliNom
...........
Cliente
NO
CliCod *
Compras
FctVtaNro*
Fecha
CliCod
FctCmpNro*
Fecha
PrvCod
CliNom
NO
PrvNom
45
46
Complemento
(texto libre)
Calificador (1 a 3)
Calificador (1 a 3)
Categora Semntica (1 a 3)
Objeto ( 1 a 6 )
47
Categorias
Calificador
Cli
Cod
Cli
Nom
Cli
Fch
Ini
Cli
Fch
Fin
FacVta
Nro
FacCmp
Nro
48
Tipos de Datos
Numeric, Character, Date
Long Varchar
VarChar
Equivalente al Character, salvo en la forma en que se
almacena en la BD.
DateTime
Los valores de M y N no afectan la forma de almacenar el
tipo de datos, sino la forma de aceptar o mostrar su
contenido.
Long Varchar
Permite almacenar una cantidad de caracteres indefinida. Se utiliza normalmente
para almacenar textos, descripciones, comentarios, etc.
El largo que se le asigna es considerado el largo mximo (la implementacin
depende de la plataforma).
VarChar
Permiten almacenar texto de largo variable. Su funcin, en contraposicin al
character, es la de optimizar el almacenamiento en la base de datos.
Definicin: Varchar(M, N)
M es el largo mximo posible que depender del DBMS. Si el largo asignado al
atributo es mayor que el soportado por el DBMS se utilizar el mximo soportado.
N es el largo promedio. Se utiliza para optimizar los accesos a disco en algunos
DBMSs .
La idea es que si el valor de un atributo varchar es menor o igual que N, se
almacenan N caracteres (rellenados con blancos) en el registro del archivo y se
utiliza un nico acceso a disco para leerlo o grabarlo.
49
En caso que el valor del atributo varchar sea mayor que N, se almacenan los
primeros N en el registro del archivo y el resto en un rea de overflow para lo
cual es necesario un acceso adicional tanto para lectura como para escritura.
Se le pueden aplicar todas las funciones y operadores existentes para el tipo de
datos character. El tipo de datos Varchar es equivalente al tipo Character en
todos los sentidos salvo en la forma en que se almacena en la base de datos.
Para los DBMS que no soportan este tipo de dato se crean como Character.
DateTime
Permite almacenar una combinacin de fecha y hora (hasta el segundo).
DateTime(M, N)
M = Largo de la fecha. Valores posibles: 0, 8 y 10.
N = Largo de la hora. Valores posibles: 2, 5 y 8.
Los valores de M y N, no afectan la forma de almacenar el tipo de datos sino
especficamente a la forma de aceptar o mostrar su contenido.
En caso que M sea 0 (no se considera la fecha) para un campo que ha de ser
ingresado, el valor de fecha a asignar ser el mnimo soportado por el DBMS y
reconocido como fecha vaca o nula en GeneXus.
En caso que N sea distinto de 8 para un campo que ha de ser ingresado, los
valores no aceptados (minutos o minutos y segundos) sern considerados en
cero.
50
Comandos de asignacin
+=
-=
*=
/=
Sintaxis: <Variable_o_Atributo> <Comando> <Expresin>
Ejemplo: &I += 1 (equivalente a &I = &I + 1)
51
Dominios
Cuando debemos usar dominios?
Atributos con la misma definicin
No existe relacin entre ellos
Ejemplo: Direccin Char 30
Direccin del Cliente
Direccin del Banco
Dominio
Atributos
52
Reglas
Se utilizan para definir el comportamiento de las
transacciones.
Algunas reglas
Default, Error, Ask, Msg, Asignacin, Add, Subtract, etc.
Default(FacFch, &today);
Error(No se permiten clientes sin nombre)
if null(CliNom);
Segn el Anlisis Orientado a Objetos, para cada objeto del sistema se debe definir cual es su
estructura y su COMPORTAMIENTO.
En el caso de las Transacciones, el comportamiento se define mediante el uso de Reglas (Rules).
Algunas reglas:
Default - Se utiliza para definir los valores por defecto de algunos atributos.
Error - Es para definir los controles que deben cumplir los datos, por ejemplo si no queremos
permitir que queden ingresados clientes sin nombre:
Error(No se permiten clientes sin nombre)if null(CliNom);
Cuando se cumple la condicin ( null(CliNom) ) se despliega el mensaje (No se permiten clientes
sin nombre) en pantalla y no se permite continuar hasta que el usuario ingrese un nombre sobre el
campo CliNom.
Asignacion - Dentro de las reglas de la transaccion se permiten definir asignaciones a atributos,
dicha asignacion implica una actualizacion en la tabla base del nivel o en alguna de las tablas que
pertenecen a la tabla extendida del nivel.
Una asignacion en las reglas es LOCAL (vale solo para la transaccion en la cual fue definida).
Orden de evaluacin
La definicin de reglas es una forma DECLARATIVA de definir el comportamiento de la
transaccin. El orden en el cual fueron definidas no necesariamente indica que ese sea el orden en
que se encuentran en el programa generado. GeneXus se encarga de determinar el orden correcto
segn las dependencias de atributos existentes (en este tema entraremos en detalle mas adelante).
53
Toolbar de Controles
Para el diseo de Pantallas
Atributo / Variable
Texto
Lnea
Recuadro
Subfile
Botn
Bitmap
Tab Control
Print Block
5412
16
Tab Control
Permite definir varios controles dentro de un Tab
Control.
Tiene una o varias pginas.
Default: Dos pginas
Agregar o eliminar pginas:
Botn derecho sobre el Tab Control
Pgina
Ttulo
Area til
Un Tab Control tiene una o varias pginas (por defecto tiene dos). Cada pgina
tiene un ttulo y un rea til, es decir donde se ponen los controles de esa
pgina. Slo una de las pginas puede estar activa a la vez y es la que se puede
ver. Del resto slo se ver su ttulo.
Las opciones Edit/Add Tab Page y Edit/Remove Tab Page son para agregar y
eliminar pginas respectivamente. Puede accederse tambin a estas opciones
con botn derecho sobre el Tab Control.
Hide Tabs
Para mostrar slo la pgina activa y no mostrar los tabs. Util para la definicin
de Wizards.
55
Generacin de
HELP Tipo Windows
Es necesario generar y compilar el Help.
Opcin: Build/Generate Help
El compilador viene con el
Visual Basic/Foxpro/Visual FoxPro
5662
Generacin de
HELP Tipo Windows
Botn de Help:
Llama al help del objeto.
F1:
Llama al help del atributo en donde se encuentra el
cursor.
Si ese atributo no tiene help se llama al help del objeto.
5763
Pasemos a Prototipo...
INTEGRIDAD
REFERENCIAL
59
Diagrama de Bachman
Catego
Depart
CatCod*
CatNom
DtoCod*
DtoNom
Client
CliCod*
CliNom
CatCod
DtoCod
Definicin de Indices
Tabla
Catego
Depart
Client
Tipo
Indice
Composicin
PK
PK
PK
FK
FK
CatCod
DtoCod
CliCod
DtoCod
CatCod
Definicin de Indices
Para hacer eficientes los controles de Integridad, GeneXus crea automticamente ndices, que
son vas de acceso eficientes a las Tablas.
Existen tres tipos de ndices: Primarios, Extranjeros y del Usuario.
Indice Primario (PK) :
El ndice primario es el que se define para la Clave Primaria, se utiliza para el control de
unicidad de los registros y para el control de que cuando se crean registros en tablas
subordinadas (Client), exista el registro correspondiente en la tabla superordinada (Catego).
Con GeneXus todos los ndices primarios son definidos automticamente a partir de los
identificadores de las transacciones.
Indice Extranjero (FK):
Los ndices extranjeros son utilizados para hacer eficientes los controles de integridad intertablas. Tambin son definidos automticamente. Cuando se elimina un registro en una tabla
superordinada (Catego), no deben existir registros correspondientes en la tabla subordinada
(Client).
Indice del Usuario:
Los ndices del usuario se definen, fundamentalmente, para recorrer los datos por determinado
orden de una forma eficiente. Por ejemplo, en la tabla Client se puede definir un ndice por
CliNom, que es muy til para los listados ordenados por nombre. Los ndices del usuario NO
son definidos automticamente ya que no se usan para los controles de integridad.
En una Base de Datos Relacional los ndices se utilizan slo por problemas de performance,
pero siempre es posible acceder a los datos de la tabla por cualquiera de los atributos de la
misma.
61
CONCEPTO DE TABLA
EXTENDIDA
62
Tabla Extendida
Definicin
Dada una tabla de la base de datos, se denomina
tabla extendida de la misma al conjunto de
atributos conformado por:
Atributos que pertenecen a la tabla.
Atributos que tengan una relacin N-1 con la tabla
extendida determinada hasta el momento.
63
FACTURA
FacNro*
FacFch
CliCod
FACTURA1
FacNro*
ProdCod*
FacLinCnt
CLIENTE
CATEGORIA
CatCod*
CatDto
CliCod*
CliNom
CatCod
PRODUCTO
ProdCod*
ProdNom
ProdPre
64
Tabla Base:
Tabla extendida:
Categora
Cliente
Categora
Cliente
Categora
Factura
Cliente
Categora
Factura1
Producto
Factura
Cliente
Categora
Producto
Factura
Factura1
Producto
65
ATRIBUTOS FORMULAS
66
Caractersticas
Un atributo es una frmula si su valor se puede calcular a partir del valor de otros
atributos.
En cada transaccin se puede definir qu atributos son frmulas, pero esta definicin
es global (no es local a la transaccin), es decir toda vez que se necesite el atributo se
calcula la frmula, tanto en transacciones como en los otros objetos GeneXus.
Existe una similitud entre frmulas y asignaciones (regla), incluso la sintxis de
definicin es similar. La diferencia entre ambas es que una frmula es GLOBAL (vale
para todos los objetos GeneXus que la utilicen), mientras que una asignacin en las
reglas es LOCAL (vale slo para la transaccin en la cual fue definida).
Cuando un atributo es frmula, ste no est almacenado (a no ser que se lo defina
como redundante) y cuando es una Asignacin, por ser esta local, si esta almacenado.
67
Clasificacin
Horizontales
Una o varias expresiones aritmticas condicionales.
Verticales
SUM
COUNT
Aggregate / Select
Select
Max, Min, Find
Aggregate
Sum, Count
Frmula Horizontal
Los atributos involucrados en la misma deben pertenecer a la tabla
extendida del atributo definido como frmula.
Frmula Vertical
Los atributos involucrados deben pertenecer a la tabla directamente
subordinada del atributo definido como frmula.
Son incondicionales.
Aggregate / Select
Pueden navegar sobre cualquier tabla del modelo.
Son condicionales.
68
Fmulas Horizontales
69
Fmulas Horizontales
Ejemplo:
TRANSACCION
TABLA
CliCod*
CliCod*
CliNom
CliNom
CliTotCmp
CliTotCmp
CliTotPgo
CliTotPgo
CliSdo = CliTotCmp- CliTotPgo
70
CLIENTE
CATEGORIA
CatCod*
CatDto
CliCod*
CliNom
CatCod
FACTURA1
PRODUCTO
ProdCod*
ProdNom
ProdPre
FacCod*
ProdCod*
FacLinCnt
71
Frmulas Verticales
SUM - COUNT
Sintxis:
AtriFla = SUM(Att)
AtriFla = COUNT(Att)
Caractersticas:
Att debe pertenecer a una tabla directamente
subordinada a la tabla en la que se encuentra AtriFla.
Son incondicionales.
Navegacin vertical - Performance
72
Frmulas Verticales
SUM - COUNT
Clculo del subtotal de la Factura
Factura:
FacNro*
FacFch
CliCod
FacSubTot = SUM(FacLinImp)
Factura1:
FacNro*
ProdCod*
FacLinCnt
FacLinImp = FacLinCnt * ProdPre
Factura
1
Factura1
73
Frmulas Verticales
Slo se puede definir entre atributos de tablas directamente
subordinadas
N
FACTURA
FacSubTot = SUM(FacLinImp)
1
FacLinImp
SUM (att)
CLIENTE
SUM(att)
No permitido
FACTURA1
74
Frmulas Aggregate/Select
Son frmulas que permiten buscar, sumar, contar
atributos que cumplan determinadas condiciones, en
cualquier tabla del modelo.
Aggregate
Sum
Count
Select
Max
Min
Find
Frmulas Aggregate
Sum
Frmulas Select
Find .-Buscar el valor de un atributo en determinadas condiciones
Max .-Buscar el mximo valor de un atributo en determinadas condiciones
Min .-Buscar el mnimo valor de un atributo en determinadas condiciones
75
Frmulas Aggregate/Select
Sintxis
atrib = Sum | Count (<att>, <cond. bsq.>, <def>)
atrib = Max | Min(<att>, <cond. bsq. >,
<def>, <ret>)
atrib = Find(<att>, <cond. bsq.>, <def>)
76
Frmulas Aggregate
.Sum( )
Aggregate
.Count( ) Aggregate
Se utilizan cuando el valor de un atributo se obtiene sumando o contando filas de
cualquier tabla del modelo que cumplan una determinada condicin
Atributo = Sum | Count (<Atributo Sumado o Contado>,<Condicin para sumar o
contar> , <valor de retorno por defecto>) IF <Condicin de disparo>
A diferencia de las Frmulas SUM y COUNT Verticales no es necesario que estn en
una relacin de subordinacin
Para distinguirlas en los listados
Verticales - SUM y COUNT todas las letras en maysculas
Aggregate - Sum y Count slo la primer letra con mayscula
Los siguientes ejemplos de frmulas Aggregate y frmulas Select, se incluyen como
documentacin y no necesariamente se harn ejemplos en el curso, salvo que los
alumnos lo pidan.
Ejemplo de Count Aggregate:
Total de productos con descuento en la factura:
Factura
FacNro*
FacFch
CliCod
FacTotArtDscto = Count(ProdCod, FacDscto > 0)
77
Factura1
FacNro*
ProdCod*
FacLinCnt
FacDscto
FacLinImp
FacNro ProdCod FacDscto
1
10
20
FacTotArtDscto = 2
78
Find
Se utiliza para obtener el valor de un atributo que est en cualquier tabla del modelo,
pudiendo establecerse relaciones con cualquiera de los atributos de la tabla.
Sintxis:
Atributo=Find(<Atributo a buscar>, <Condicin de bsqueda>, <Valor por defecto>)
IF <Condicin de disparo)
Ejemplo de uso de Find ( ):
El atributo DocCotDolar obtiene la cotizacin del dolar del da.
La tabla de cotizaciones no tiene ninguna relacin con la de documentos.
Documentos
Cotizaciones
DocNro*
MonCod*
DocFch
MonFch*
DocImp
MonCot
79
Max
Esta funcin determina el mximo valor de un atributo en una tabla. Obtenido este
valor, que corresponder a una determinada fila, la funcin devuelve el valor de
cualquier atributo de dicha fila.
Sintxis:
MAX(<Atributo a Maximizar>, <Condicin de Maximizacin>, <Valor por defecto>,
<Atributo a Devolver>) IF <Condicin de ejecucin>
Atributo a Maximizar - Debe estar almacenado en la tabla en la que se busca (Tabla
de llegada), es decir no puede ser un atributo frmula o pertenecer a su tabla
extendida.
Condicin de bsqueda - Se pueden mencionar atributos almacenados o virtuales de
la tabla base y de la tabla extendida de la tabla de partida.
Se pueden mencionar atributos almacenados de la tabla en la que se realiza la
bsqueda (Tabla de llegada).
Atributo a devolver - Atributo a devolver para asignar al atributo frmula, debe estar
almacenado en la tabla de bsqueda.
Condicin de disparo - Se pueden mencionar atributos almacenados o virtuales de la
tabla base y de la tabla extendida de la tabla de partida.
Ejemplo de uso del Max:
Obtener la ltima (mxima) cotizacin del dlar anterior a la fecha del documento.
Documentos
Cotizaciones
DocNro*
MonCod*
DocFch
MonFch*
DocImp
MonCot
DocImpDolar
DocCotDolar
80
MonCot
10/01/94
100
11/01/94
110
12/01/94
112
13/01/94
115
16/01/94
117
81
Min
Atributo = Min(<Atributo a Minimizar>, <Condicin de minimizacin>, <Valor por
defecto>, <Atributo a Devolver>) IF <Condicin de disparo>
Esta funcin determina el mnino valor de un atributo en una tabla. Obtenido este valor,
que corresponder a una determinada fila, la funcin devuelve el valor de cualquier
atributo de dicha fila.
Ejemplo de uso de la funcin Min:
Se quiere obtener la cotizacin del dlar para el da de la fecha y en caso de que no
exista, la inmediatamente posterior.
Documentos
Cotizaciones
DocNro*
MonCod*
DocFch
MonFch*
DocImp
MonCot
MonCot
10/01/94
100
11/01/94
110
12/01/94
112
13/01/94
115
16/01/94
117
17/01/94
118
82
Cotizaciones
(Tabla de partida)
(Tabla de llegada)
Consideraciones de performance:
Tanto las frmulas Verticales como las frmulas Agregate/Select, implican la realizacin
de navegaciones en la Base de Datos, por lo que es importante considerar la forma en que
esto es realizado.
Las frmulas Verticales cuentan o suman los valores que estan en "memoria,
es decir, no recorren la tabla subordinada de nuevo, en caso de insertar, actualizar o
eliminar una lnea.
Las frmulas Aggregate/Select en cambio, recorren cada vez los registros para hacer el
reclculo.
Las frmulas Verticales pueden almacenarse en forma redundante y GeneXus se
encargar de mantenerlas actualizadas.
83
Transaccin Factura
FacNro*
CliCod
FacTot
FacFch
(ProdCod*
FacProdPre
FacLinCnt
FacLinImp)
correspondiente al
3/10/92
Incluiremos en las lneas de la factura el atributo ProdCod. No podemos incluir
ProdFch debido a que no podramos saber que valor darle a la fecha para poder
heredar directamente el ProdPre.
Definimos el atributo FacProdPre y buscaremos con una frmula el precio
correspondiente de acuerdo a la fecha de factura. Buscaremos el precio de
fecha mxima anterior a la fecha de factura.
La frmula quedara:
FacProdPre = Max (ProdFch, ProdFch <= FacFch, 0, ProdPre )
84
85
Ejemplo
Transaccin de Cotizaciones
MonId*
CotMes*
MonDsc
(CotDia*
CotImp)
Transaccin de Asientos
AsiNro*
AsiFch
AsiMes
AsiDia
(AsiIdLin*
MonId
AsiImpME
AsiImpNS
AsiTipDH
CtaId
AsiFndCot)
Hacer lo siguiente:
A. Buscar la cotizacin de la moneda para la
fecha del Asiento.
B. En caso de que no exista, dar un aviso y
buscar la ltima ingresada anterior a la fecha
del asiento.
86
A.
Transaccin de Cotizaciones:
MonId*
CotMes*
MonDsc
(CotDia*
CotImp)
Transaccin de asientos :
AsiNro*
AsiFch
AsiMes = Month(AsiFch)
AsiDia = Day(AsiFch)
(AsiIdLin*
MonId
AsiImpME
AsiImpNS
AsiTipDH
CtaId
AsiFndCot) = Find(CotImp, CotMes=AsiMes .and. CotDia=AsiDia)
if MonId<>NS;
1 otherwise;
87
B.
Transaccin de Asientos :
AsiNro*
AsiFch
AsiMes =Month(AsiFch)
AsiDia =Day(AsiFch)
(AsiIdLin*
MonId
AsiImpME
AsiImpNS = AsiImpME*AsiFndCot if AsiFndCot<>0;
AsiImpME*AsiMaxCot if AsiMaxCot<>0;
1 otherwise;
AsiTipDH
CtaId
AsiFndCot a=Find(CotImp, CotMes=AsiMes .and. CotDia = AsiDia)
if MonId <> NS;
1 otherwise;
AsiMaxCot) = Max(CotDia, CotMes= AsiMes .and. CotDia <= AsiDia, 0 , CotImp)
if null (AsiFndCot) ;
0 otherwise;
Rules : Msg (No existe Cotizacin, se toma la ltima ingresada)
if null (AsiFndCot) .and. MonId <> NS;
88
89
90
En el ejemplo:
Transaccin de Cotizaciones:
MonId*
CotMes*
Given : MonId
MonDsc
(CotDia*
CotImp)
Transaccin de Asientos :
AsiNro*
AsiFch
AsiMes =Month(AsiFch)
AsiDia = Day(AsiFch)
(AsiIdLin*
MonId
AsiImpME
AsiImpNS
AsiTipDH
CtaId
AsiFndCot) =Find(CotImp, CotMes=AsiMes .and. CotDia = AsiDia)
if MonId <> NS;
1 otherwise;
91
92
93
94
= frmula MAX
= FacLinCnt * FacProdPre
= SUM (FacLinImp)
95
96
97
COMUNICACION
ENTRE OBJETOS
98
Objetos GeneXus
TRN
RPT
PROC
MENU
WKP
99
Reglas y Comandos
para implementar la comunicacin
CALL
UDP (User defined Procedure)
UDF (User defined Function)
100
Objeto
Prefijo
Transaccin
T
Procedimiento
P
Reportes
R
Work Panel
W
Men
M
Web Panels
El nombre se trunca a:
7 caracteres
7
Los programas llamados con las reglas o comandos mencionados pueden ser
cualquier objeto GeneXus (Transacciones, Procedimientos , etc.), o un programa
externo escrito por el usuario.
El nombre de dichos objetos a utilizar en la llamada (call , udp) se forma por un
prefijo (identificando el tipo de objeto) seguido por el nombre del objeto truncado
de acuerdo a la tabla de ms arriba.
En caso de que el objeto llamado sea un programa externo, debe mencionarse el
nombre del programa entre comillas; en caso de ser un objeto GeneXus va sin
comillas.
Ejemplo:
Por ejemplo, si luego del ingreso de una Factura se quiere un listado de la misma,
lo que habra que poner en las Rules de la Transaccin Factura es:
call(RImpFac, FacNro) if insert .and. after(TRN);
donde ImpFac es el nombre del Report que imprime la factura recibida como
parmetro.
101
Call
Sintxis
En regla de Transacciones:
call(nom-prog,par1,...,par2) if (condicin);
En layout de los reports, program source de los
procedures, eventos de Work Panel y eventos de
Transacciones:
if (condicin)
call(nom-prog, par1,...,par2)
endif
102
Con la regla PARM se declaran los parmetros que recibe un objeto GeneXus,
estos parmetros son posicionales, se deben escribir en el mismo orden, la
misma cantidad y el mismo tipo que los indicados en el CALL.
Los parmetros especificados en la regla parm, cuando se est invocando al
objeto con el CALL, son de entrada/salida.
103
Udp
Sintxis
En reglas de Transacciones
<Att|&var> = Udp(nom-prog,par1,...,parn) if (condicin);
En Frmulas:
<Att> = Udp(nom-prog,par1,...,parn) if (condicin);
En el layout de los reportes, y en los eventos de Work Panels
o Transacciones:
<&var> = Udp(nom-prog,par1,...,parn)
En el program source de un procedimiento:
if (condicin)
<Att|&var> = Udp(nom-prog,par1,...,parn)
endif
104
Al igual que en los programas llamados con call, en los programas llamados por
UDPs se deben declarar los parmetros con la regla Parm. A diferencia con los
calls, el programa llamado siempre va a tener un parmetro como mnimo (el
parmetro de retorno).
Ejemplo:
Tenemos un procedimiento que calcula la calificacin de un funcionario
FunValCalificacion = Udp(PCalif ,FunId, FunFchIngreso );
En el procedimiento PCalif, tenemos las siguiente regla parm:
parm( &funid, &funfching, &ValorRetorno );
Al terminar el clculo, en el program source del procedimiento se asigna a la
variable &ValorRetorno el valor de la calificacin del funcionario, y dicho valor
es el devuelto por la llamada y asignado al atributo FunValCalificacion.
El ltimo parmetro especificado en la regla parm, cuando se est invocando al
objeto con UDP es de salida. El protocolo para el resto de los parmetros
depende de la implementacin, NO se debe esperar que sean de entrada/salida.
105
Ejemplo:
&A = 1
&A = UDP(PXXX)
106
SUBRUTINAS
107
Comando SUB
Sintxis :
Sub 'RoutineName
//cuerpo de la subrutina
EndSub
No se permite el pasaje de parmetros.
Todas las variables del programa fuente pueden ser usadas en la rutina
'RoutineName' , es decir que son globales.
Disponible en Transacciones, Work Panels, Reportes y Procedures.
108
Comando DO
Sintxis :
Do 'RoutineName'
Ejecuta la rutina RoutineName.
Disponible en Transacciones, Work Panels,
Reportes y Procedures.
109
ARBOL DE EVALUACION Y
EVENTOS
110
R.
F.
F.
F.
F.
Arbol de evaluacin
Add(FctTot, CliTotCmp) ;
FctTot = FctSubTot - FctDto + FctFleVal
FctDto = FctSubTot * CatDto
FctFleVal = MAX( FctFleFch, FctFleFch <= FctFch, ...
FctSubTot = SUM ( FctImp)
CliTotCmp
FctTot
R. Subtract(FctCnt, ArtStk) ;
R. Error( Stock Insuficiente) if ArtStk < 0 ;
FctDto
error (No hay Stock)
ArtStk
FctCnt
FctFleVal
FctSubTot
CatDto
FctImp
FctFch
ArtPrc
Arbol de Evaluacin
El conjunto de reglas y frmulas han sido definidas sin especificar su secuencia de
ejecucin; pero en el momento de generar el programa GeneXus deber
determinar esta secuencia.
GeneXus determina las dependencias existentes entre estas reglas y frmulas,
construyndose lgicamente un rbol de dependencia que determinar la
secuencia de evaluacin. Podemos imaginar que el rbol se ejecuta de abajo
hacia arriba, cada vez que cambia algn valor de un atributo, se ejecuta todo lo
que depende de este atributo.
Por ejemplo, si cambi la Cantidad se redispara el Importe de la lnea, y a partir
de esto el Sub-Total, y el Descuento y el Total y la actualizacin del Total de
compras del cliente. Tambin vinculado con la cantidad est el Stock, y se
disparar tambin el Subtract correspondiente.
El rbol muestra claramente que debe especificarse:
error(No hay Stock Suficiente) if ArtStk < 0 ;
No es correcto definir: error('No hay Stock suficiente') if FctCnt > ArtStk;
Esto no es correcto, pues decamos que primero se dispara el SUBTRACT y luego
el ERROR, o sea que al momento de considerar el error, ya se dispar el subtract,
y se disminuy el stock.
111
112
PrvCod*
FctNro*
Total
Calculado
...
FctTotIng
Total ingresado
( ArtCod*
Fact Impt
FctCnt
FctPrc
FctImp = FctPrc * FctCnt)
...
FctTotCalc = SUM (FctImp)
Total calculado
Total
Ingresado
En la mayora de los casos el orden de ejecucin de las reglas definido por GeneXus a
partir de nuestras especificaciones es el deseado. Pero en algunos casos puedo querer
cambiar el momento de disparo de una Rule.
Por ejemplo:
En las facturas que recibimos de nuestro proveedor queremos controlar que el total
que viene impreso en la factura (FctTotIng) sea correcto, por lo que lo calculamos
nuevamente (FctTotCalc), y emitimos un error si no es as.
Si construimos el arbol de evaluacin vemos que las dependencias entre las reglas y
frmulas determinan que cada vez que cambie el importe, se cambiar el total
calculado que es parte de la condicin de la regla Error.
Esta condicin se va a cumplir (total calculado <> total ingresado) ya para la primera
lnea ingresada en la factura y se va a disparar el error en ese momento.y no podr
seguir adelante.
En este caso la inferencia del rbol de evaluacin no me sirve, lo que quiero en
realidad es que se me dispare el error cuando termine de ingresar las lineas (a la salida
del nivel).
113
(FctTotCalc <>
FctTotIng <>
// CORRECTO
114
Insert
After( Atributo )
Update
After(Insert)
Delete
After(Update)
After(Delete)
After(Confirm)
After(Level(Atributo))
After(Trn)
115
118
119
120
121
Evento Start
Sintxis:
Event Start
EndEvent
122
Evento Start
Ejemplos:
1.-
Event Start
&Mes1 = Enero
EndEvent
2.-
En el Evento Start no hay atributos disponibles como para ser evaluados y/o usados.
En el ejemplo 2, el parmetro CliCod es de salida, es decir vuelve cargado del
procedimiento. En este caso, queda instanciado el Cliente, o sea que acta como filtro.
En otras palabras, el comportamiento es el mismo que si se hubiera recibido en la
transaccin como parmetro al cdigo de cliente en el propio atributo (CliCod). Es
decir, parm(CliCod);
123
Ejemplo
Event Deuda Cliente 2
Level FacId
if .not. null(CliId)
call(wdeucli,CliId)
endif
Endevent
124
Equivalente a la funcin After(trn), pero permite agrupar todas las acciones que se
deseen evaluar en el after(trn) sin tener que condicionarlas por separado (rules).
Ejemplo:
Event After trn
return
Endevent
Abandonar el programa una vez que se ejecut un ciclo completo de la transaccin.
125
Evento Exit
Event Exit
.
EndEvent
Se activa cuando el usuario abandona el
programa.
Ej: Llamar a un procedimiento que graba la
hora de entrada y salida del programa para
cada usuario en una tabla de control.
Event Exit
&user = userid()
&salida = Time()
call(pcontrol, &entrada, &salida, &user)
EndEvent
En el Evento Exit no hay atributos disponibles como para ser evaluados y/o usados.
126
Rules / Eventos
En caso de conflicto de evaluacin entre reglas
y eventos de una transaccin, la regla se evala
primero.
Eventos:
Event After trn
.
return
End event
Rules:
call(tvenfac,FctCod) if after(trn);
127
128
129
Consideraciones
No se permite asignar valor a los atributos.
Start-Exit ---> Sin tabla base
User Event-After(trn) ---> Con tabla Base
Restricciones
No se permiten comandos asociados a otros eventos existentes en los work panels
(load, refresh,etc.).
Tener en cuenta que los momentos de evaluacin no estn asociados a modos de
evaluacin activos, por lo que no son vlidas las funciones como Insert, Update ,
Delete, After(Event), etc.
Para condicionar el disparo de eventos a los modos de ejecucin activos debemos
utilizarlos en combinacin con reglas.
Recomendaciones
Controlar mediante variables seteadas en las reglas que los eventos de usuario hagan
calls en situaciones vlidas.
Los eventos de usuario pueden evaluarse en cualquier momento, sin tener en cuenta
el modo en que est la transaccin.
Los atributos pasados como parmetros en los calls que se ejecutan en los eventos,
son de entrada/salida, por lo tanto pueden cambiar su valor instancindose con el
valor devuelto por el programa llamado.
130
REPORTES
Y
PROCEDIMIENTOS
131
Reportes y Procedimientos
Reportes
Procesos no interactivos de consulta de la base
de datos.
Procedimientos
Procesos no interactivos de actualizacin de la
base de datos.
Reportes
Definen procesos no interactivos de extraccin de datos. Usualmente un reporte es
un listado que se enva a la impresora, aunque tambin puede ser visualizado por
pantalla.
Procedimientos
Definen procesos no interactivos de actualizacin de la base de datos y subrutinas
de uso general. Podemos decir que son un superset de los reportes, ya que pueden
hacer todo lo que estos hacen y adems actualizar la base de datos.
132
Caractersticas
Definicin procedural
Definicin sobre la Base de Conocimiento
Independencia de la Base de Datos
Definicin Procedural.
A diferencia de las transacciones donde las especificaciones se realizan en forma declarativa
y GeneXus resuelve en el momento de generar el programa la secuencia de ejecucin, en los
reportes las especificaciones son realizadas en forma procedural.
Definicin sobre la Base de Conocimiento.
La gran protencia del lenguaje de reportes/procedimientos es que las definiciones se hacen
sobre la Base de Conocimiento y no directamente sobre el modelo fsico. Esto nos permite
utilizar automticamente todo el conocimiento ya incorporado o generado por GeneXus a
partir de las especificaciones realizadas. Por ejemplo el concepto de tabla extendida, que es
posible porque GeneXus conoce las relaciones entre las tablas de la Base de Datos. Otro
ejemplo claro, es el caso de los atributos frmulas, donde aprovecharemos que GeneXus
sabe como calcular el valor para este atributo.
Independencia de la Base de Datos, definicin a nivel de atributos.
La definicin de Reportes y Procedimientos se hace a nivel de atributos, en ningn
momento decimos qu tablas se deben recorrer ni qu ndices se deben utilizar, sino que
esto es determinado por GeneXus en base a las especificaciones realizadas.
De esta manera logramos una real independencia de la base de datos, ya que en cualquier
cambio en las tablas ser manejado automticamente por GeneXus.
133
Toda la definicin del acceso a la base de datos y la estructura del reporte o procedimiento, se realizan
slo con este comando.
Usando el FOR EACH se define la informacin que se va a leer de la base de datos, pero la forma de
hacerlo se basa en nombrar los atributos a utilizar y NUNCA se especifican nombres de tablas ni
nombres de ndices. Con este comando se define QUE atributos se necesitan y en qu ORDEN se
quieren recuperar, y GeneXus se encarga de encontrar COMO hacerlo.
El acceso a la base de datos queda especificado por los atributos que son utilizados dentro de un grupo
FOR EACH - ENDFOR. Para ese conjunto de atributos GeneXus buscar la tabla extendida que los
contenga (el concepto de tabla extendida es muy importante en este comando y sugerimos repasar su
definicin).
Order: Lista de atributos que indican el orden de recorrida de la tabla base. Slo pueden mencionarse
atributos almacenados en la tabla base. El Order es opcional, en caso de no especificarse se asume el
orden de la clave primaria de la tabla base (si es que el for each no est anidado a otro for each).
Eleccin del ndice: GeneXus elige automticamente el ndice a utilizar para satisfacer el
orden, en caso de que no exista, se crea el ndice en forma temporal.
Where: Establecen condiciones de filtro en la recorrida de la informacin. Se pueden mencionar
atributos de la tabla base y/o de la tabla extendida.
Defined by: Al mencionar en esta clusula algn atributo secundario de la tabla que se desea recorrer,
dicho(s) atributo(s) participar(n) en la eleccin de la tabla base del For Each. Debe quedar claro que
el/los atributos mencionados en el Defined by participan en la determinacin de la tabla base as
como tambin participan los dems atributos mencionados en todo el For Each. Los atributos
mencionados en esta clusula no tienen ms peso que los otros atributos del For each. El objetivo de
esta clusula es permitir mencionar cierto(s) atributo(s) en el cuerpo del For each (sin actuar como
filtros, ni ordenar por ellos, ni imprimirlos) sino que slo se desea(n) referenciar en el For Each para
que participe(n) en la determinacin de la tabla base.
134
GeneXus infiere la tabla base del for each, por los atributos mencionados en el order, where, defined by y en el
cuerpo del for each.
Tomemos como ejemplo un reporte con la siguiente definicin:
135
137
138
FACTURA1
FacNro*
ProdCod*
FacLinCnt
CLIENTE
CATEGORIA
CatCod*
CatDto
CliCod*
CliNom
CatCod
PRODUCTO
ProdCod*
ProdNom
ProdPre
139
When None
Ejecutar determinado cdigo, cuando en un For
Each no se encuentra ningn registro.
Sintxis
For each //clientes
Where (condiciones de filtro)
(proceso el cliente)
When none
Msg(ningn cliente cumple condiciones)
Endfor
140
Report Wizard
Permite disear el layout de un reporte (o
procedimiento) de una forma mucho ms fcil.
Se define a partir de una estructura de datos
muy similar a las transacciones.
141
142
La tabla base queda determinada estudiando los atributos utilizados en el cuerpo del
For Each en el caso de los For Each principales (no anidados).
Para el caso de los For Each subordinados la tabla base queda establecida por los
atributos utilizados en el cuerpo del For Each siempre y cuando estos atributos no
esten contenidos en la tabla extendida del For Each principal. Si el conjunto de
atributos utilizados en el For Each estn contenidos en la extendida ya calculada, el
for each anidado tendr la misma tabla base del for Each principal. Este caso se
distingue en el diagrama de navegacin utilizando BREAK en lugar de For Each para
todo grupo For Each subordinado que no defina una nueva tabla base.
143
Cliente
CliCod
Facturas
144
Producto Cartesiano: Para cada registro de la tabla base del primer For Each se recorre
toda la tabla asociada al For Each anidado.
145
Corte de Control
Caso 3 :
Procesar informacin por grupos.
Ej: Procesar facturas por cliente. Cada vez que cambia
el cliente se define un nuevo grupo.
For Each Orden CliCod
orden - determina
(tabla Factura)
For Each
corte de control
(tabla Factura)
EndFor
EndFor
-> Defined by, Print if detail
Corte de Control
La resolucin de este reporte puede hacerse accediendo nicamente a las facturas, recorriendo
la tabla ordenada por cliente. En este caso imprimiramos solo aquellos clientes que tienen
facturas.
De todas maneras es necesario utilizar dos for eachs, ya que se necesita una instancia de corte,
es decir un momento en el que se cambia de cliente y se puede operar en consecuencia, por
ejemplo imprimir el total facturado al cliente.
Lo interesante del caso dos for eachs tendrn como tabla base la tabla de facturas. Para lograr
esto se puede utilizar la clusula DEFINED BY del For each o el comando PRINT IF
DETAIL.
En el ejemplo podramos mencionar un atributo de la tabla de facturas en el Defined by , con
lo que estaramos diciendole explcitamente a GeneXus que utilizara esta tabla.
Si utilizamos Print if detail debemos definirlo en el primer For Each.
Se debe definir adems en el orden de recorrida del primer for each (clusula ORDER), los
atributos por los que se quiere realizar el corte (en el ejemplo CLICOD). Este es un
requerimiento debido a que GeneXus no podra saber cual es el criterio de agrupacin que
queremos ya que en una misma tabla pueden ser varios, por ejemplo podramos querer realizar
el corte de control por Fecha de factura, totalizando el total facturado cada da.
Debido a esto es que la definicin de la clusula Order es necesaria.
146
Filtros en la navegacin
Where
Condition
Parm(Atr ... Atr) - Atributos recibidos
como parmetros
El reporte slo podr acceder al cliente cuyo cdigo sea igual al recibido como
parmetro.
148
Diseo de la salida
MT
Header
...
End
PL
CP [nlinea]
Lineno [nlinea]
Eject
Noskip
Footer
MB :
End
Report Viewer
Permite:
Imprimir
Visualizar el reporte mientras se est generando
Paginado
Zoom
Salvado a un archivo
Find
150
PROCEDIMIENTOS
151
Insercin de registros
Ejemplo:
Insercin en tabla de resumen de
ventas anuales
Tabla:
CliCod*
VtaAno*
VtaTot
New
CliCod = &CliCod
VtaAno = &Ano
VtaTot = &Total
When Duplicate
For each
VtaTot = VtaTot + &Total
Endfor
EndNew
152
Actualizacin
For Each
Atr = <Exp>
...
Endfor
Actualiza atributo de
la tabla extendida
Los atributos actualizables dentro de un grupo For Each, son todos los
pertenecientes a la tabla extendida.
La actualizacin fsica se realiza cuando se encuentra el EndFor del grupo
For Each correspondiente.
153
Delete
For Each
defined By FacFch
Delete
endFor
154
Restricciones
No se realiza control de integridad
referencial
No Actualiza atributos definidos como
redundantes
155
WORK PANELS
156
Work Panels
Definir consultas interactivas a la base de
datos.
Es muy flexible por lo que se presta para
mltiples usos.
157
Entry Panel
Display Panel
Single Choice Selection List
Multiple Choice Selection List
Action List
Las normas Common User Acces de IBM definen diversos tipos de pantallas,
estandarizando los dilogos con el usuario.
158
Paneles de Entrada
Son paneles de entrada/salida. A travs de ellos se aceptan y se despliegan
valores. Por ejemplo, un panel de entrada puede ser una pantalla previa a una
impresin, donde se piden los parmetros necesarios para la misma y luego se
llama a un Report.
159
Paneles de Despliegue
En estos paneles, los datos pueden ser solamente exhibidos.
Un panel de despliegue puede ser una pantalla plana o puede mostrar
una cantidad variable de datos. Esto ltimo, consiste en mostrar varias
lneas por pantalla permitiendo que el usuario se desplace hacia arriba
y hacia abajo (scrolling).
160
Area Fija
Subfile
Teclas de
Eventos y
funcin
161
El comando For Each Line permite recorrer el Subfile (no la base de datos). Para
cada una de las lineas del subfile, se ejecuta el cuerpo del For Each Line.
El comando For Each Selected Line permite recorrer slo las lineas que fueron
seleccionadas del Subfile.
Los generadores no visuales slo permiten seleccin nica.
En Visual FoxPro, no es posible seleccionar varias lineas en los grids a diferencia de
Visual Basic (es una limitacin de VFP, no del generador).
162
163
Eventos
Start
Refresh
Load
Enter
User-defined
Exit
Evento Start: Es un evento del sistema, ocurre cuando se comienza a ejecutar el work panel.
Es usado comunmente para asignar valores a variables, generalmente para dar valores por
defecto a las variables del rea fija de la pantalla.
Evento Refresh: Es un evento del sistema, ocurre inmediatamente antes de comenzar la carga
del subfile. En un ambiente multiusuario, los datos de la pantalla pueden estar desactualizados
si fueron modificados desde otra terminal. En este caso, cuando el usuario desee actualizarlos,
deber presionar el botn refresh cuyo efecto es cargar nuevamente el subfile.
Comando Refresh: En algunos casos, desde otro evento tambin puede ser necesario cargar
nuevamente el subfile. Por ejemplo cuando en un evento se llama a una transaccin que
actualiza los datos (Ejemplo "Ingresar" (F6)) que se estn desplegando en el subfile, lo que se
hace entonces es ejecutar el comando refresh luego del call a la transaccin.
Tambin se necesita hacer un refresh cuando una variable que aparece en las Conditions es
modificada por el usuario. Estas variables determinan qu datos se cargarn en el subfile, si
una condicin cambia, el subfile debe ser cargado nuevamente.
Evento Load: Es un evento del sistema que ocurre cuando un subfile est siendo cargado.
Para cada registro que se cargar en l, se disparar este evento.Este evento es usado
generalmente para cargar variables en el subfile. Los valores de estas variables pueden ser
calculados o leidos de la base de datos usando el comando For Each.
Se puede hacer referencia a cualquier atributo que pertenezca a la tabla extendida asociada al
panel de trabajo.
Evento Enter: Este evento ocurre cuando el usuario presiona Enter.
Evento Exit: Este evento ocurre despus que el usuario presion la tecla de salida (ESC o
F12), o el comando "return" es ejecutado en cualquier evento.
User Defined Event:: Se pueden definir eventos del usuario, los que pueden estar asociados a
una tecla de funcin o a un botn. De esta manera el evento ocurre cuando el operador
presiona la tecla de funcin o el botn asociado al evento.
164
Fin
165
Reglas ms importantes
Order
Noaccept
Search
Hidden
Workfile_lines
Order
Define cul es el orden de los datos en el subfile. Es equivalente a la clusula ORDER del
For Each y se aplica todo lo dicho en la seccin de Reportes sobre el tema (incluida la
creacin de ndices temporales).
Por ejemplo, si quisieramos ver los clientes ordenados por nombre:
Order(CliNom);
Noaccept
A diferencia de las Transacciones, en los paneles de trabajo ningn atributo es aceptado.
En cambio las variables presentes en la pantalla son aceptadas, a no ser que tengan la regla
NOACCEPT.
Search
Cuando el subfile es demasiado extenso, muchas veces se quiere brindar la posibilidad de que
el usuario pueda 'posicionarse' en alguna lnea determinada del mismo, en forma directa, sin
tener que avanzar pgina por pgina.
Por ejemplo, para buscar un cliente por su nombre se debe definir la regla:
Search(CliNom >= &Nom);
Hidden: Esta regla es usada para indicarle a GeneXus cuales atributos o variables deben
incluirse en el subfile sin estar presentes en el mismo. Se usa cuando por razones de
presentacin, no es conveniente mostrar un atributo en el rea de subfile de la pantalla, pero
se quiere capturar su valor cuando se haga el load de la misma.
Workfile_lines (<MaxLine>): Dado que los subfiles se cargan en archivos temporales y que
no existe un lmite en la cantidad de lneas a cargar en ellos en PC o LAN , puede traer
problemas si la tabla base asociada tiene muchos registros ya que el archivo temporal
tendra todos los registros de la tabla base. Usando esta regla, se menciona en MaxLine la
mxima cantidad de lneas que se permite cargar en el subfile. Si el lmite expecificado se
excede, se despliega el siguiente mensaje Number of lines exceeded xxxx .
166
Propiedades ms importantes
Loading
Load Records
Load at Startup
Automatic Refresh
Refresh Timeout (FoxPro only)
Load Records: Los posibles valores son Load on request o Load all records.
Load on request: A medida que se va paginando va cargando los registros del
subfile (Carga a pedido).
Load all records: Carga todos los registros.
Load at Startup: Los valores posibles son Yes o No.
Yes: Inmediatamente despus de ejecutar el Workpanel se carga el subfile.
No: No carga el subfile del panel hasta que no se ingresen los valores de la
parte fija del WorkPanel.
Automatic Refresh: Esta property es especialmente til en el caso de un subfile con
slo variables, cuando uno desea que se haga automticamente un refresh cada vez
que uno de los valores de la parte fija son modificados. Los valores posibles son
Only when variables in condition change (default): : Tiene el comportamiento
de siempre.
When any variable changes: Genera un refresh cada vez que cualquier variable
de la parte fija del Workpanel es modificada.
Refresh Timeout: Esta property es para que se haga un refresh del subfile
automticamente si el usuario no efectu ninguna operacin en el lapso de tiempo
especificado. No hay valores predefinidos. Debe especificarse un valor en segundos
(lapso de tiempo).
167
comando LOAD
168
Opciones:
Yes if parameters specified
Yes
No
Esta propiedad permite indicar para cada objeto, si utilizar dilogo modal o
no modal.
Dilogo modal significa que mientras el objeto llamado no se cierre, el
objeto llamador se mantiendr inactivo.
Dilogo no modal en cambio, significa que ambos objetos (llamador y
llamado) pueden estar activos al mismo tiempo, es decir que se puede alternar
entre uno y otro, trabajando con ambos simultneamente.
Los valores posibles de esta propiedad son:
Yes if parameters specified: Es la opcin por defecto. Significa que si el
objeto recibe parmetros, el dilogo
ser modal, mientras que si no
recibe parmetros el dilogo sera no-modal.
Yes: Dialogo modal.
No: Dialogo no modal.
169
SUBTIPOS
170
Subtipos
Ejemplo: Transferencias entre Bancos.
Atributos similares que cumplen roles diferentes.
Transaccin de Bancos:
BcoCod*
BcoNom
Cdigo de Banco
Nombre de Banco
Transaccin de Transferencia :
TrnNro*
TrnFch
Problema
BcoCod
Atributos
BcoNom
con el
BcoCod
mismo
BcoNom
nombre
TrnImp
Nmero de transaccin
Fecha
Banco Origen
Nombre del Banco Origen
Banco Destino
Nombre del Banco Destino
Importe
171
Transferencia:
TrnNro*
TrnFch
Subtipos
Bancos:
BcoCod*
BcoNom
TrnBcoOriCod
TrnBcoOriNom
TrnBcoDestCod
TrnBcoDestNom
Subtipo
TrnBcoOriCod
TrnBcoOriNom
Supertipo
BcoCod
BcoNom
TrnBcoDestCod
TrnBcoDestNom
BcoCod
BcoNom
Hay que definir atributos con distinto nombre y que tengan una dependencia
funcional.
Los atributos que se encuentran en una relacin Subtipo/Supertipo siempre comparten
la misma definicin.
Se realizan los controles de integridad referencial.
La tabla extendida que se obtiene con la definicin del subtipo, es la misma que se
obtendra en el caso que se utilizara directamente el supertipo.
172
Subtipos: Grupos
Almacenado
TrnBcoOriCod
Inferido
TrnBcoOriNom
Grupo
TrnBcoOri
Almacenado TrnBcoDestCod
Inferido
Grupo
TrnBcoDest
TrnBcoDestNom
Todava queda algo por determinar. Tenemos dos bancos y dos nombres pero en
ningn lugar indicamos el nombre a que banco corresponde.
Es ac donde aparece la necesidad de definir grupos.
Decimos que el Cdigo de Banco Origen y el Nombre pertenecen al mismo Grupo.
173
Algunas Consideraciones
El subtipo y supertipo sern definidos del mismo tipo,
GeneXus lo determina as y cuando se quiere definir un
subtipo este "hereda" la definicin del supertipo.
No incluir subtipo y supertipo en la misma transaccin, ni
tampoco en la misma tabla extendida.
No se pueden actualizar los subtipos inferidos (Add,
Subtract).
Los subtipos no se pueden definir redundantes
174
KNOWLEDGE
MANAGER
175
Distribucin
176
Consolidacin
177
BUSINESS
OBJECTS
178
Qu es un Business Object ?
Representacin de un objeto de la realidad:
producto, persona, factura, moneda, pais
Para su definicin se toman en cuenta: atributos
que definen al objeto, operaciones que le son
relevantes, cmo se relaciona con otros objetos.
179
180
Cada BO es un folder que contiene todos objetos GeneXus necesarios para definir el
comportamiento y el uso de dicho BO.
181
Caractersticas de un BO
Independiente
zNo ligado a ninguna aplicacin
zStandard y simple
zFcilmente adaptable
zDocumentado
zBien testeado
z
182
183
Ventajas de su uso
Reusabilidad :
aumenta productividad
disminuye esfuerzo de desarrollo
184
Algunos BO Genexus
Paises
zProductos
zPersonas
zMonedas
zTipos de IVA
zNumeradores
z
185
Distribucin de los BO
Exportar el folder que contiene el BO
186
OBJETOS PRIVADOS
187
Objetos Privados
Objetivo: proteger el conocimiento
188
Objetos Privados
Al momento de distribuir, si existe algn
objeto privado se ingresar:
Copyright by: Derechos de autor del dueo del
objeto.
Buyer: Casa de software a la cual se esta
licenciando.
Purpose: Texto general.
Objetos Pblicos
Un objeto podr ser pblico sin restriccin alguna, en cuyo caso puede seguir
siendo utilizado libremente. En este caso no es necesario hacer nada con el
objeto.
Objetos Privados
En el caso de que el propietario del objeto decida definirlo como privado,
nicamente en la KB origen se podr acceder libremente y modificarlo. Los
dems usuarios (aquellos que licencien conocimiento de aquel) slo podrn
editar sus pantallas, ver el cabezal del mismo (Information) y generarlo.
Para definir un objeto como privado, se debe ir a Object/Information, en la
solapa Advanced, dnde se debe marcar el check Private Object.
Slo se puede marcar un objeto como Privado en diseo. En prototipo y
produccin no est habilitada esa facilidad ya que se heredar en la siguiente
actualizacin de ese modelo (impacto).
Esto slo indica que el objeto ser Privado, pero no se har ningn proceso
con l, hasta el momento de su exportacin (distribucin).
189
Objetos Privados
Operativa de los objetos privados: son
generables y algunas partes visibles y/o
editables
190
EFICIENCIA Y PERFORMANCE DE
LAS APLICACIONES
191
Puntos a Considerar
Optimizacin de la Entrada-Salida
Uso de Calls
Open y Close de archivos
Uso de Indices Temporales
Optimizacin de Entrada-Salida:
Dado que el acceso a las tablas es costoso, vamos a ver cmo minimizarlo.
Uso de Calls:
Veremos cundo debemos empezar a preocuparnos por el uso de este
comando.
Open y Close de archivos:
Cunto y cmo influyen las operaciones de apertura y cierre de archivos en el
tiempo de respuesta de nuestra aplicacin.
Uso de ndices temporales:
Evaluacin del costo de creacin de ndices temporales vs. el costo de
mantenimiento de ndices permanentes.
192
Optimizacin de Entrada-Salida
Definicin de Filtros
Peor Estrategia
Begin of File
Estrategia Optima
Begin of File
READ
READ
READ
READ
READ
READ
READ
READ
READ
READ
READ
READ
READ
READ
READ
End of File
End of File
Normalmente los programas procesan registros agrupando aquellos que tengan ciertas
caractersticas comunes, por ejemplo, todas las facturas de un determinado cliente, o las
ventas de una clase de artculos.
Estas caractersticas comunes, se establecen a travs de condiciones que determinan un
filtro sobre los registros. Tales condiciones se especifican en GeneXus de diversas
formas; asi pueden ser por ejemplo WHEREs en un FOR EACH, condiciones en una
frmula Aggregate/Select, parametros , etc.
Ejemplo: De todos los clientes, quiero imprimir los datos de aquellos cuyo cdigo este
en un rango determinado.
El tiempo necesario para realizar el proceso con los registros que cumplen las
condiciones, determina el grado de "optimizacin" que tiene la estrategia de acceso
elegida. Decimos que una estrategia de acceso esta ms "optimizada" que otra, cuando
es necesario un menor tiempo para leer todos los registros que cumplen las condiciones
establecidas.
La optimizacin consiste en posicionarse lo mas cerca posible del primer registro del
grupo que cumple las condiciones y desde alli leer secuencialmente hasta el ltimo que
las cumpla. Lo que se establece en definitiva, es un intervalo que cubre todos los
registros que cumplen las condiciones.
En este intervalo no necesariamente todos los registros cumplen la condicin.En estos
casos, la mejor estrategia consiste en tener el menor intervalo tal que cubra a todos los
registros que cumplirn la condicin. Igualmente las lecturas se realizarn para todos
los registros de este intervalo, pero solamente se considerarn aquellos que cumplan
con las condiciones.
193
Definicin de Filtros
Where:
La clausula "Where" permite filtrar registros en la navegacin de un determinado
grupo
FOR EACH.
Por ejemplo: Para establecer los filtros descritos anteriormente, utilizaramos la
siguiente especificacin:
FOR EACH
W HERE CliCiu = 'Montevideo' .AND. CliCod >= 1 .AND. CliCod<= 100
...
ENDFOR
Conditions:
Las "Conditions" sirven para establecer un filtro en forma global, es decir que solamente
se podr acceder a los registros que cumplan con esta condicin. Cuando se establece
una condicin sobre atributos, afecta a todos los grupos FOR EACH que contengan ese
atributo. Reports, Work-panel y Procedures poseen esta posibilidad. Se prevee la
implementacin a nivel de Transacciones en prximas versiones.
Parmetros: Es otra forma de establecer una condicin en forma global, pero
solamente por igualdad. Cuando se recibe un parmetro en un atributo, obtenemos una
especificacin equivalente a una condicin.
Por ejemplo: un procedimiento tiene la siguiente regla: Parm(CliCod);
Esta regla es equivalente a tener: parm(&Cliente);y la condicin:CliCod = &Cliente;
194
195
Orden de Recorrida
Importancia del Orden en que se leen los
registros.
Ejemplo: Condiciones de Filtro compatibles con el Orden
For each Order CliCod
Where CliCod >= &IniCod .and. CliCod <= &FinCod
....
....
Endfor
Cod
1
*2
*3
*4
5
Nombre
Smith
Jones
<----- Starting Point Read
Ball
Read
King
<----- Ending Point Read
Ander
&IniCod = 2
&FinCod = 4
El orden en que deban considerarse los registros, junto con las condiciones de
"filtro" determinarn la mejor estrategia de acceso.
El orden puede considerarse como una condicin previa, para la definicin de
la optimizacin de las condiciones de filtro. Es decir, que la estrategia de
acceso se define, tomando en cuenta como primera cosa el orden que se haya
definido.
196
Orden de Recorrida
Importancia del Orden en que se leen los registros.
Ejemplo: Condiciones de Filtro no compatibles con el Orden
For each Order CliNom
Where CliCod >= &CodIni .and. CliCod <= &CodFin
...
Endfor
Cod Nombre
*3 Ander
<----- Starting Point
5 Ball
6 Churchill
1 King
*4 Smith
*2 William <----- Ending Point
Read
Read
Read
Read
Read
Read
&CodIni = 2
&CodFin = 4
197
Orden de Recorrida
Si no se define un Orden se elige el de la Primary Key
Ejemplo:
For each
Where Clinom >= &IniNom .and. Clinom <= &FinNom
Endfor
Orden elegido --> CliCod
CliCod*
Tipos TypCod*
CliNom
TypNom
TypCod
Tenemos Clientes y Tipos de clientes, y queremos listar los tipos de clientes y los clientes
de cada tipo, haremos la siguiente especificacin:
For each
[TypCod] [TypNom]
For each
[CliCod] [CliNom]
Endfor
Endfor
Como primera cosa, GeneXus infiere que los clientes que queremos recorrer son aquellos
del tipo (TypCod) que acabamos de considerar en el FOR EACH anterior. Es decir, que
hay una condicin implcita que indica que:Tipos.TypCod =Cliente.TypCod
198
Esto ocurre cuando se tienen FOR EACHs anidados, cuyas tablas bases tienen alguna
relacin; GeneXus la encuentra y determina en forma automtica una condicinde
filtro. Esta relacin slo puede establecerse entre atributos primarios (aquellos que
forman parte de la clave primaria de alguna tabla), ya que es el nico caso en que un
atributo puede estar en ms de una tabla. Esta condicin (Tipos.TypCod =
Cliente.TypCod) establecida en el for each de clientes, slo es optimizable si el orden
es TypCod. Pero decamos que el no especificar ningn orden implica que el orden a
tomar es el de la clave primaria (CliCod), por lo que no sera posible entonces la
optimizacin.Pero en este caso, como nica excepcin, se elige el orden que permita
optimizar la condicin de filtro.
199
Posicin de Comienzo
Consideraciones para su definicin.
Se consideran las condiciones compatibles con el orden y que
sean por:
Si el orden es ascendente
Mayor (>)
Mayor o Igual ( >=)
Igual (=)
Si el orden es descendente
Menor (<)
Menor o Igual (<=)
Igual(=)
Las condiciones deben estar relacionadas por .And.
200
Posicin de Comienzo
Ejemplos:
Orden: A B C
Condiciones : A>= 5 .and. C > 3
Posicin de comienzo: A>=5
Orden: A B C
Condiciones : A > 5 .and. B < 2 .AND. C > 3
Posicin de comienzo: A > 5
201
La Posicin Final
Consideraciones para su definicin
Si el orden es ascendente
Menor (<)
Menor o Igual (<=)
Igual (=)
Si el orden es descendente
Mayor (>)
Mayor o Igual (>=)
Igual (=)
Las condiciones deben estar relacionadas por .And.
202
Diagrama de Navegacin
For each CliCod
Where CliCod >= &IniCli .AND. CliCod <= &EndCli
[ CliCod
] [CliNom
]
Endfor
FOR EACH Clientes
Order : CliCod
Index : ICliente
Navigation filters:
Start from:
CliCod >= &IniCli
Loop While
CliCod <= &EndCli
Constraints:
CliCod >= &IniCli .AND. CliCod <= &EndCli
---->> CLIENTES ( CliCod )
END FOR
203
Diagrama de Navegacin
For each CliCod
[ CliCod
]
Endfor
[CliNom
204
Calls
Apertura y Cierre de Archivos
Uso de Indices Temporales
205
Pgma X
Open A, B, C
Call Y
Pgma Y
Open D,E
....
b) Pgma X
Pgm Y
Open A, B, C
Open D, E
Call Y
Close B y Open B
Close D, E
....
Close A B C
Close B, D, E
Open B
Close A,B, C
206
Indices CDX: En este caso, en los objetos llamados, no se cierran las tablas
que haban sido abiertas en los objetos llamadores y solamente reabren los
ndices de la forma que los necesita.
Pgma X
Pgma Y
Open A, B, C
Open D, E
Call Y
....
Close D, E
Indices Temporales:
En Client/Server los indices temporales se construyen ms rapidamente que en
File/Server, ya que solo se indexarn los registros que cumplan las
condiciones y no requiere un uso exclusivo de la tabla.
En File/Server, se construye el indice para la ejecucin del programa y luego
se borran. El tiempo de creacin es considerable dependiendo del nmero de
registros de la tabla y de la cantidad y largo de los campos.
En el AS/400 se usa la instruccin OPNQRYF para definir ndices temporales.
Dependiendo de todo eso es que conviene o no crearse un ndice de usuario.
207
MULTIPLES FORMS
208
20945
41
42
Form Classes
210
211
Cundo decide GX
el form a utilizar ?
En tiempo de Especificacin
Apertura del objeto
212
STYLES
213
Los Styles son otro objeto GeneXus, su forma de definir es similar a la de los
otros objetos, pero con la particularidad de que NO son tenidos en cuenta en la
normalizacin o generacin de programas.
Slo se utilizan para definir standards, sin la necesidad de tener que disear
Form por Form.
Pueden ser modificados, y automticamente se reactualizan los forms
necesarios.
Hay Styles para transacciones, work panels, etc. , pero un style es de un solo
tipo. Las excepciones a esta regla son los Styles de Work Panels que sirven
tambin para Prompts y los Styles de Report y Procedure que pueden usarse
para cualquiera de los dos.
Nota: No existen Styles de Styles
214
Definicin de un Style
Object/New Object.
Ejemplo de un Style de transaccin.
215
Style
Style Area
Data Area
Se ven en los forms unas lneas que definen diferentes reas. Lo que est dentro
del rectngulo es la denominada "Data Area" (rea de datos). El resto del form es
la "Style Area". A su vez, la Style Area est dividida en 8 sectores (ver figura).
Cuando el desarrollador empiece a usar styles las lineas de la data area
aparecern solas. De todas maneras tambin se pueden hacer aparecer con un
botn de la toolbar.
Los controles que estn completamente comprendidos en un sector conservan
su posicin relativa a ste, cuando se mueven las lneas.
Aquellos controles que pasan desde un lado de una lnea hacia el otro,
conservan su posicin relativa a la lnea (se mueven junto con la lnea).
Si un control pasa por encima de 2 lneas paralelas (o dicho de otra manera,
comienza antes de la lnea de borde izquierdo de la data area y termina despus
de la lnea del borde derecho, o bien la misma situacin con respecto a los bordes
superior e inferior), pueden suceder dos cosas:
A). Es un control con "autoresize". En este caso, el control mantiene su
posicin relativa a la primera de las lneas que cruza.
B). Es un control sin "autoresize". El control se agranda o se achica
tanto como se separen o acerquen las lneas, manteniendo cada uno de los
extremos del control su posicin relativa a la lnea ms cercana.
216
Los controles en la Data Area del style se pasan al objeto slo en caso de
inicializacin (cuando el objeto es creado basado en el style y no en futuras
reaplicaciones) y una vez en el objeto es considerado como un control de
usuario dentro de ste.
217
218
Las lneas de la data area estan en azul indicando que se perdi el dinamismo
con la default data area.
Las lineas de la style area estan en rojo indicando que existe dinamismo entre
la style area de la transaccin de clientes y la style area del style.
NOTA: Se puede perder el dinamismo con la style area del Style y seguir
teniendo dinamismo con las properties del Style (siendo esto ltimo por
property; es decir, teniendo dinamismo con algunas properties y no con
todas).
219
220
Opciones:
Edit \ Default Data Area
Edit \ Reapply Style Form
221
Cambio en el tamao
de la Data area
Para agrandar o achicar la data area, slo sirve
mover los bordes derecho y/o inferior.
El form del Style tiene la capacidad de adaptarse al tamao de la Data Area del
objeto en el que se lo utiliza. Cuando la Data Area se agranda (ya sea debido al
calculo de Default Data Area o a la accion del usuario) el mecanismo de
aplicacion dinamica del Style se encarga de agrandar tambien el frame, y
mover hacia la derecha y hacia abajo los controles que estan a la derecha y
abajo de la Data Area respectivamente. Similar comportamiento se observa al
achicar la Data Area (se achica el frame y los controles se mueven hacia la
izquierda y hacia arriba).
El tamao de la data area definido en el form del style (y por lo tanto tambin
el tamao del frame) se considera como tamao mnimo de la data area del
form del objeto.
222
Consideraciones para
el diseo de Styles
Los controles que queden dentro de la Data Area del Style
son considerados como Controles del usuario.
Definir forms para diferentes form classes si los objetos
que lo usan tienen mltiples forms. (Ej.: definir un form
grfico y uno de texto en el style).
Cuando se ponen Eventos y Rules incluir comentarios al
principio sobre que cambios se deben realizar en el
objeto.
223
Master Style
Objetivo: Style default
Se define por modelo
Por tipo de objeto salvo:
Prompt - Workpanel
Report Procedure
File/Edit Model/Master Styles
Master Style
Existe la posibilidad de declarar, para cada tipo de objeto, cul de los styles existentes
en el modelo se desea que sea considerado como Master Style (es decir, cul se desea
utilizar en lugar del default style). No es que se tenga que crear un Master Style
sino que entre aquellos que ya existen, se puede elegir uno y declararlo como Master.
Esta declaracin es de caracter opcional: es posible no declarar a ninguno como Master
y simplemente funcionar todo como hasta ahora (utilizando el default style).
En File/Edit Model/Master Styles se designa el Master Style para cada tipo de objeto.
En cada caso estn disponibles los styles existentes y la opcin (None).
Si bien al momento de crear un objeto style, se puede elegir tanto crear un Report Style
como un Procedure Style, el tipo del style que en definitiva se crea es siempre
Procedure Style. Los Procedure Style pueden ser usados como style tanto para Reports
como para Procedures. De la misma manera pueden ser elegidos tanto como para
Master Style de Reports como para Master Style de Procedures. Por otro lado, los
Work Panel Style pueden ser usados como style tanto para Work Panels como para
Prompts.
224
Master Style
Precedencia:
Style asociado
Master Style
Default
225
226
Cada objeto GeneXus que tenga Form puede tener su propio Menu Bar y Tool Bar.
Para definirlos, se usa el tipo de objeto GeneXus Menu Bar.
Para agregar o borrar opciones (items) del Menu Bar, se utilizan las opciones
Edit/Insert y Edit/Delete respectivamente.
La definicin de la Tool Bar es exactamente igual a la del Menu Bar, slo que en los
items de la Tool Bar se debe definir tambin el bitmap correspondiente.
El item Help/About llama a un work panel GX_ABOUT. GeneXus por defecto ya
provee este work panel, en caso de querer personalizarlo se debe crear un nuevo work
panel con este mismo nombre con la informacin deseada.
227
Los eventos definidos en el Menu Bar son generales, por lo cual se ejecutarn
en todos los objetos que utilicen el Menu Bar. Por esta razn es que no se
permite el uso de atributos en los mismos.
Luego de definido un Menu Bar, se debe indicar en que objetos se utilizar.
Esto se indica con la property Windows Interface de las transacciones y work
panels.
En las transacciones y work panels que utilicen el Menu Bar definido, se
pueden programar eventos para los items del Menu Bar . Como estos eventos
son particulares de cada objeto, s se pueden usar atributos.
Si un mismo evento se programa en el Menu Bar y en el objeto, se ejecuta el
del objeto.
228
PROPIEDADES, EVENTOS
Y METODOS ASOCIADOS A LOS
CONTROLES
229
Algunos controles tienen un nombre por defecto, pero hay otros que no; por
lo cual si se les quiere aplicar alguna property hay que asociarles un nombre ya
que de lo contrario no aparecen en la columna Control al hacer
Insert/Property.
En el caso del Form el nombre del control (por defecto) es Form.
Si se desea cambiar el ttulo de un Form, la forma es:
Form.Caption=Datos del Cliente + CliNom
En el caso de un control tipo texto, se le debe dar un nombre.
230
231
Dilogo:
Select Property
Se accede a travs de la opcin Insert/Property
cuando se editan:
Rules, Eventos, Subrutinas, etc en transacciones,
work panels y web panels
232
Dilogo:
Select Property
Form:
Permite seleccionar para que tipo de form (Graphic, Text o de Usuario)
se le asignar una propiedad a un control.
Control:
Muestra la lista de controles que hay en el form que se est diseando y
que tienen un nombre asociado.
Property:
Despliega la lista de propiedades que se pueden aplicar al control
seleccionado y en la segunda columna se despliegan los tipos de cada
property.
El Help trae el Help de la property seleccionada
233
EVENTOS EN CONTROLES
Insert/Events
Permite asociar Eventos a cada Control.
DblClick
Click
RightButton
IsValid
OnLineActivate
DblClick:
El cdigo asociado a dicho evento se ejecuta al hacer doble
click sobre el campo.
Click:
El cdigo asociado a dicho evento se ejecuta al hacer click
sobre el campo.
Right Button:
Se dispara cuando se presiona el botn derecho del mouse.
IsValid:
Se dispara cuando se hace la validacin del control.
234
Evento OnLineActivate
Evento asociado al control subfile
Se dispara cuando se activa una lnea en el subfile:
al clickear una lnea con el mouse
moverse a travs de la grilla con el teclado
cuando se hace refresh de la grilla.
OnLineActivate
Es un evento asociado al tipo de control subfile.
Los For Eachs que se incluyan en dicho evento estarn anidados a la tabla base
del work panel, es decir, se comportan igual a los For Eachs del evento Enter.
235
Eventos en Controles
Form:
Permite seleccionar para que tipo de form se le asociar una evento a
un control.
Control:
Muestra la lista de controles que hay en el form que se est diseando.
Event:
Despliega la lista de eventos que se pueden aplicar al control
seleccionado.
236
METODOS
Se aplican a los controles.
Sintxis:
Nombre del Control.Method([<Parms>])
Segn el tipo de control (edit, check box, etc) son los mtodos que
se pueden asociar.
Se accede a travs de la opcin Insert/Methods cuando se editan:
Rules, Eventos, Subrutinas en transacciones, work panels y web
panels.
Slo en generadores grfico:VB, VFP, JAVA
A excepcin del mtodo SetFocus que ser implementado en
todos los generadores.
237
OBJETOS MAIN
238
Objetos Main
GeneXus genera ejecutables por cada objeto
Main.
239
240
241
STUBS
Cuando el objeto ImpClis pasa a ser Main, GeneXus en lugar de
generar un nico programa asociado al objeto, realiza lo
siguiente:
Genera el programa PimpClis que slo contiene el Call al Ejecutable
correspondiente
Genera otro programa que es el que contiene la lgica del objeto
ImpClis y ser el principal del ejecutable.
Esto permite no tener que regenerar todos los objetos que llaman
al objeto ImpClis.
Al programa que contiene slo el llamado al ejecutable se le
denomina STUB.
242
STUBS
Tenemos entonces 2 programas generados, asociados a un mismo objeto GX.
Para la denominacin del programa STUB se siguen las convenciones de siempre
(P=Procs, W=Work Panels etc.)
Para la denominacin del programa que ser el principal del ejecutable (el que contiene
realmente el cdigo) se usan las siguientes convenciones:
Transaccin N
Work Panel
U
Report
O
Procedure
A
Menu
L
Web Panel
H
Siguiendo con el ejemplo, para el objeto ImpClis, GX generar 2 programas: PImpClis.xxx
y AImpClis.xxx (xxx= extensin del generador corresp.) y el ejecutable se llamar
AImpClis.exe
243
DATA VIEWS
244
245
246
Data Views
GENEXUS
DA
DATA VIEW
DEFINITION
EXTERNAL
ENVIRONMENT
TABASE
INTERNAL
TABLE
EXTERNAL
FILE
SIN TABLA
ASOCIADA
EXTERNAL
FILE
CON TABLA
ASOCIADA
Los Data Views de GeneXus permiten manejar Archivos Externos como si fueran
archivos pertenecientes a la Base de Conocimiento.
En el Data View se puede indicar que se manejar una transaccin interna asociada, o
no.
Data View con transaccin interna asociada
Supongamos que desde una Base de Conocimiento se desea manejar el archivo
externo clientes.dbf cuyos campos son:
- Codigo*
- Nombre
- Dir
- Tel
1) Se debe crear una transaccin de clientes definiendo los atributos que se deseen
manejar de la tabla externa. Estos atributos internos deben coincidir en lo que se
refiere a tipos y tamaos con los campos externos, pero los nombres pueden ser
redefinidos respetando la nomenclatura GIK.
247
248
Assoc. table: En este punto se debe seleccionar la tabla interna asociada al Data
View.
Composition: Aqu se deben indicar las correspondencias entre los atributos internos
y los campos externos.
[Nombre Interno]
[Nombre Externo]
[Nombre Interno]
[Nombre Externo]
[Nombre Interno]
[Nombre Externo]
249
Composition
Ejemplo:
Dados los siguientes Archivos Externos:
CLIENTES
PRODUCTO
Codigo*
CliNom
CliDir
Codigo*
ProDsc
ProPre
Composition
CliCod 'Codigo'
CliNom
CliDir
Composition
ProCod 'Codigo'
ProDsc
ProPre
Se uniformiza la nomenclatura
250
Indices
251
Las propiedades del Data View pueden definirse para cada plataforma o por
modelo.
Esto nos brinda la posibilidad de especificar diferentes ubicaciones del mismo Data
View dentro de la misma plataforma pero para diferentes modelos.
Por ejemplo, si se quiere darle diferente ubicacin para el modelo de Prototipo Fox y
para el modelo de Produccin Fox, debe seleccionarse DBFCDX(model2) y
DBFCDX(model 3) indicando la ubicacin para cada uno de los modelos. En cambio,
si se quiere la misma ubicacin para todos los modelos Fox debe seleccionarse la
plataforma DBFCDX.
252
253
Associated Table
GENEXUS
DEVELOPMENT
ENVIRONMENT
DATA VIEW
DEFINITION
GENEXUS
MODEL
EXTERNAL
ENVIRONMENT
----INTERNAL
TABLE
INTERNAL
INDEX
EXTERNAL
FILE
-----
----------
------------------
EXTERNAL
INDEX
254
Associated Table
Tabla Interna = Tabla Externa
------INTERNAL
TABLE
---
EXTERNAL
FILE
-------
Existe una relacin de uno a uno entre los atributos de la Tabla Interna del Data View
y los del Archivo Externo.
255
Associated Table
Tabla Interna < Tabla Externa
Not Accessed
--INTERNAL
TABLE
EXTERNAL
-----
FILE
---
Los atributos definidos para la Tabla Interna y para el Data View coinciden, pero el
Archivo Externo tiene atributos no declarados en el Data View. Estos atributos no
pueden ser accedidos.
256
Associated Table
Tabla Interna > Tabla Externa
GENEXUS
DATABASE
DATA VIEW
DEFINITION
EXTERNAL
ENVIRONMENT
---INTERNAL
FILE
NOT ALLOWED
EXTERNAL
FILE
--------
257
Associated Table
Tabla Interna > Tabla Externa
USO DE SUBTIPOS
GENEXUS
DATABASE
EXTERNAL
ENVIRONMENT
DATA VIEW
DEFINITION
----
CliCod*
CliNom
ALLOWED
INTERNAL
TABLE A
---
Codigo
Nombre
EXTERNAL
FILE
---Subtype
CliCodSub*
CliNom
CliDir
CliEMail
INTERNAL
TABLE B
En el ejemplo, se pide tener tambin como datos del Cliente el E-Mail y la direccin.
258
Asociacin Dinmica
En este caso coincide todo. Si ocurre esto no hay que detallar composicin ni de
ndices del Data View. Lo nico que hay que hacer es asociar el Data View a la tabla
externa (Platform Specific Information).
Tener en cuenta que el ndice y archivo externo deben estar ubicados en el mismo
directorio.
259
Arbol de Definicin
Archivos
Externos
Data View
Definicin Global
CON
Tablas Asociadas
Asociacin
Dinmica
SIN
Tablas Asociadas
Asociacin
Definida
260
261
WEB PANEL
Permite construir pginas WEB dinmicas que
interactan con la base de datos.
C/SQL
Con todos los DBMS, excepto AS/400
Visual Basic
Access
RPG/400
AS/400
Java
Los web panels pueden generarse tanto con Visual Basic como con C/SQL.
Por lo tanto, pueden ejecutarse en un servidor Windows NT (VB, C/SQL) o en
servidores UNIX (usando C/SQL).
En caso de generar con RPG, el servidor de Internet debe ser al AS/400
Pueden usar todas las bases de datos soportadas.
Restriccin: Con el generador C/SQL no puede usarse el dbms AS/400.
262