47
Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní PROGRAMA SIU Página 1 de 47 SIU-Guaraní POWER BUILDER Curso PowerBuilder Personalizaciones SIU-GUARANI Básicas BUENOS AIRES, NOVIEMBRE DE 2002 Santa Fe 1548 piso 11 frente Capital Federal - República Argentina Telefax: (++54 +11) 4129-1952 / 1954 Web Site: www.siu.edu.ar Última actualización: 29/11/2002

Curso de Power Builder en PDF

  • Upload
    ngomien

  • View
    381

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 1 de 47

SIU-Guaraní

POWER BUILDER

Curso PowerBuilder Personalizaciones SIU-GUARANI Básicas

BUENOS AIRES, NOVIEMBRE DE 2002

Santa Fe 1548 piso 11 frente Capital Federal - República Argentina Telefax: (++54 +11) 4129-1952 / 1954

Web Site: www.siu.edu.ar

Última actualización: 29/11/2002

Page 2: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 2 de 47

Presentación de PowerBuilder

Introducción y elementos principales El entorno de desarrollo de PowerBuilder consta de cinco componentes ligados entre sí que se enumeran a continuación:

PP oo ww ee rr BB uu ii ll dd ee rr PP aa ii nn tt ee rr ss

Representan un subentorno en PowerBuilder que permite al programador conseguir construcciones para Windows (tales como ventanas y menúes). Se puede acceder a ellos a través de su propia librería o por medio de las barras de herramientas.

PP oo ww ee rr BB uu ii ll dd ee rr LL ii bb rr aa rr ii ee ss

Las librerías de PowerBuilder (conocidas como PBLs), contienen definiciones de objetos (clases), como ventanas o menúes desarrollados con los PowerBuilder Painters.

PP oo ww ee rr BB uu ii ll dd ee rr DD aa tt aa bb aa ss ee

Sólo se puede acceder a los painters de bases de datos de PowerBuilder mediante el icono Database en la PowerBar (la barra de herramientas de la ventana principal de PowerBuilder). Esta base de datos permite a los programadores actuar como Administradores de Bases de Datos (DBAs) y gestionar entidades de este tipo.

BB aa rr rr aa ss dd ee hh ee rr rr aa mm ii ee nn tt aa ss

Estos componentes son los botones gráficos que se encuentran en cada painter. Entre ellas se encuentran la PowerBar (utilizada en todo el entorno de PowerBuilder) y la PainterBar (que es única para cada painter diferente). (FIGURA)

AA yy uu dd aa ee nn ll íí nn ee aa

Esta ayuda es muy extensa; la mayoría de la documentación disponible de PowerBuilder, está incluida en esta ayuda.

Presentación del menú

EE mm pp ll ee oo dd ee ll aa ss oo pp cc ii oo nn ee ss dd ee mm ee nn úú ee nn ll oo ss pp aa ii nn tt ee rr ss dd ee PP oo ww ee rr BB uu ii ll dd ee rr

Cada painter de PowerBuilder tiene su propio menú. Algunos componentes del menú son consistentes en la mayoría de lo painters de PowerBuilder. Las secciones que siguen tratan los componentes de menú que se van a utilizar con mas frecuencia.

GG uu aa rr dd aa rr ee ll tt rr aa bb aa jj oo

Después de completar un período de trabajo hay que guardar lo realizado; para hacerlo se ha de abrir el menú File y seleccionar Save (Figura), así se guarda el objeto de PowerBuilder con sus propias características.

Page 3: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 3 de 47

CC ee rr rr aa rr ll oo ss pp aa ii nn tt ee rr ss

Para cerrar el painter sobre el que se trabaja, se abre el menú File y se selecciona Close. Si se han realizado cambios y no están guardados, PowerBuilder preguntará si se quieren guardar antes de cerrar completamente el painter.

SS aa ll ii rr dd ee PP oo ww ee rr BB uu ii ll dd ee rr

Para abandonar completamente PowerBuilder, pulsar File | Exit. Antes de salir, PowerBuilder cierra todos los painters abiertos y pregunta si se quieren guardar o no los cambios recientes, como se ve en la Figura. Una respuesta Yes guarda los cambios y cierra, una respuesta No sale sin guardar los cambios, mientras que Cancel no efectúa la salida. Hay que intentar el empleo de las barras de herramientas, los botones de cierre y las ventanas de control de menú, en vez de los menúes, para las operaciones de guardado y salida, ya que es una forma más sencilla y rápida. Es recomendable guardar periódicamente el trabajo sin salir cuando se elabora una tarea larga dentro de un painter.

Presentación de painters

UU tt ii ll ii zz aa cc ii óó nn dd ee mm ee nn úú ee ss

Los menúes disponibles en el principio de las aplicaciones son importantes para desplazarse entre las ventanas y para realizar ciertas tareas. Para llegar al painter de menú se pulsa doble click sobre un objeto Menú. Para crear un nuevo menú hay que pulsar en el botón New y así se abre el Menú Figura

Page 4: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 4 de 47

GG uu aa rr dd aa rr ee ll mm ee nn úú

Cuando se quiera guardar el menú se elige File Save para abrir el cuadro de diálogo Menú mostrado en la Figura y ahí se puede guardar. Hay que asegurarse de que esta resaltada la librería de aplicación correcta en el cuadro Save cada vez que se guarde un objeto nuevo.

UU tt ii ll ii zz aa cc ii óó nn dd ee vv ee nn tt aa nn aa ss

Una ventana (wíndow) es una caja rectangular que aparece en la pantalla cuando se ejecuta un programa de Windows. Se puede saber lo que es una ventana, pero es posible que no se sepa que hay varios tipos y montones de diferentes maneras de programar para ellas Pulsando New se crea una y se abre el pintor de ventanas (ver Figura).

Page 5: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 5 de 47

GG uu aa rr dd aa rr ll aa vv ee nn tt aa nn aa

Cuando se quiera guardar la ventana dentro del painter de la aplicación, hay que seleccionar File Save; esto abrirá el cuadro de diálogo Save Window que nos muestra la Figura y se puede guardar la ventana. En el espacio para texto se escribe el nombre de la ventana, se insertan los oportunos comentarios, se pulsa sobre la PBL apropiada y se acepta con OK. Se utilizará la herencia (inheritance) para crear otras ventanas. Pulsar en el icono inherit para llegar al cuadro de diálogo de la figura (en vez de en el botón New).

En este cuadro seleccionar la ventana antecedente de la cual se va a heredar, y pulsar el botón OK (ver Figura).

Page 6: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 6 de 47

La nueva ventana muestra el nombre de la ventana de la cual se heredó en la barra de título. La página de propiedades de ventana de la Figura, muestra el valor de la propiedad Title y el tipo de ventana heredado del antecedente. Se pueden cambiar estas propiedades para la ventana consecuente.

Presentación de las barras de herramientas de Power Builder (toolbars) Dependiendo del pintor de PowerBuilder en el que se esté trabajando, se pueden obtener hasta las tres barras de herramientas siguientes: • La PowerBar está presente todo el tiempo en PowerBuilder. Permite moverse entre la mayoría de los

pintores y contiene algunas herramientas como, por ejemplo, el icono Run Current Application, que ejecuta el programa que se desarrolla en ese momento.

• La PainterBar es diferente para cada pintor. Contiene herramientas que se pueden necesitar dentro de un pintor.

• La StyleBar es para manipulación de textos, con ella se puede cambiar cualquier tamaño de texto, tipo de letra o estilo.

EE ll cc uu aa dd rr oo dd ee dd ii áá ll oo gg oo TT oo oo ll bb aa rr ss

El cuadro de diálogo Toolbars permite cambiar la posición y otras opciones de una barra de herramientas. Es posible especificar el tipo o tamaño de letra para un texto cuando se muestra en la barra. También se puede alternar el texto y las propiedades PowerTips de la barra. Finalmente, se puede personalizar una barra añadiendo o quitando botones. Para llegar al cuadro de diálogo Toolbars, seleccionar Window Toolbars como se ve en la Figura. Este cuadro controla las barras de herramientas. Desde aquí se puede ocultar o mostrar las barras en una posición deseada, controlar el texto que se muestre dentro de la barra o personalizarla añadiendo o quitando iconos en ella.

Page 7: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 7 de 47

AA ññ aa dd ii rr ,, CC aa nn cc ee ll aa rr yy RR ee dd ii ss ee ññ aa rr ll oo ss íí cc oo nn oo ss

Pulsando el botón Customize en el cuadro de diálogo Toolbars se llega al cuadro Customize, el cual permite colocar iconos en las barras de herramientas, quitarlos o disponerlos en forma diferente. Sólo es necesario encontrar el icono buscado y arrastrarlo a donde se quiera, como se ve en la Figura

Ejecución de las aplicaciones de PowerBuilder Para ejecutar una aplicación se pulsa el icono Run que abrirá la primera ventana (ver la Figura).

Page 8: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 8 de 47

Utilización del painter de librerías

CC rr ee aa cc ii óó nn dd ee uu nn aa nn uu ee vv aa ll ii bb rr ee rr íí aa

Para crear una librería hay que realizar una de las acciones siguientes: • Pulsar en el icono Create Library de la PainterBar. • Seleccionar Library Create, en el menú Library.

Aparece, como en la Figura, el cuadro de diálogo Create Library, en el que hay que introducir el nombre de archivo para la librería y el directorio donde se quiere almacenarla. Cuando se ha terminado, se pulsa Save o la tecla Enter.

Ahora aparecerá la página de propiedades para la librería (ver Figura) en la que se pueden introducir los comentarios para la PBL.

Page 9: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 9 de 47

MM oo dd ii ff ii cc aa cc ii óó nn dd ee ll aa ss pp rr oo pp ii ee dd aa dd ee ss dd ee uu nn aa ll ii bb rr ee rr íí aa oo dd ee uu nn aa ee nn tt rr aa dd aa

Las propiedades de una librería o de una entrada de librería de PowerBuilder se pueden modificar. Normalmente, se abre la página de propiedades cuando se quiere introducir o modificar los comentarios de una entrada que se ha seleccionado; para abrirla (ver Figura), se puede hacer una de estas dos acciones: • Pulsar el icono Properties en el Library PainterBar. • Se selecciona Entry Properties en el menú Library.

Para abrir la página de propiedades para una librería, se selecciona el nombre de la librería y se ejecuta uno de los siguientes pasos: • Pulsar el icono Properties en el Library PainterBar. • Seleccionar Library Properties en el menú Library.

NN aa vv ee gg aa cc ii óó nn cc oo nn ee ll pp ii nn tt oo rr dd ee ll ii bb rr ee rr íí aa

Las librerías de PowerBuilder (PBLs) son archivos en los que PowerBuilder almacena todas las definiciones de objetos de aplicación (clases). La mayoría de los programadores utilizan el método del painter de librería para navegar entre los painters y hacer cambios a distintos objetos. Para abrir el painter de librería se pulsa en el icono Library. Además de hacer esta apertura, también muestra todos los objetos de la PBL, incluyendo la aplicación en la que se está trabajando. Ver Figura.

SS ee ll ee cc cc ii óó nn dd ee ee nn tt rr aa dd aa ss

La mayoría de las funciones del pintor de librerías requieren que se seleccione primeramente una o varias entradas. Se puede seleccionar una única entrada de PBL o definir un conjunto de entradas de PBLs en las diversas formas siguientes: • Para seleccionar una única entrada de PBL, pulsar sobre ella con el ratón. • Para seleccionar varias entradas en una PBL, pulsar el nombre de la PBL y luego. o bien pulsar en el

icono Select AII de la Líbrary PainterBar, o bien elegir Library Select AII. Se resaltarán todas las entradas como se ve en la Figura.

Page 10: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 10 de 47

• Para seleccionar un rango de entradas, se puede pulsar en la primera y luego presionar Shift mientras se arrastra el ratón pulsado hasta la última entrada. No se puede seleccionar un rango único que cruce los límites de la PBL.

• Para seleccionar rangos adicionales no contiguos después de que se han elegido las entradas, se mantiene pulsada la tecla Ctrl mientras que se selecciona la primera entrada de un nuevo rango y se pulsa Ctrl+Mayús hasta llegar a la última entrada de este rango.

• Se pueden seleccionar varias entradas no contiguas Se mantiene presionada la tecla Ctrl mientras se pulsa con el ratón en cada entrada. El resultado se ve en la Figura

CC oo pp ii aa oo tt rr aa ss ll aa dd oo dd ee ee nn tt rr aa dd aa ss dd ee ll ii bb rr ee rr íí aa

Para copiar o mover una entrada o entradas desde una librería a otra, se seleccionan las entradas deseadas y se realiza una de las siguientes operaciones: • Pulsar el icono Copy o el icono Move en la PainterBar de la librería. • Seleccionar Entry l Copy, o bien, Entry l Move en el menú de la librería.

Page 11: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 11 de 47

La ejecución de una de estas acciones abre el cuadro de diálogo Select Library (ver Figura). Pulsar en el adecuado directorio de destino y PBL, y luego pulsar OK. Las entradas se copiarán o trasladarán a la PBL de destino.

Borrado de entradas de librería Para borrar una entrada o entradas de librería, se seleccionan las entradas y se realiza una de las siguientes acciones: • Pulsar el icono Delete en la Library PaintBar. • Se selecciona Entry Delete del menú de librería. PowerBuilder pedirá la confirmación de que se quiere realmente el borrado en cada entrada, como se ve en la Figura. Pulsar Yes (como confirmación) para borrar la entrada.

EE xx pp oo rr tt aa cc ii óó nn ee II mm pp oo rr tt aa cc ii óó nn dd ee ee nn tt rr aa dd aa ss dd ee ll ii bb rr ee rr íí aa

Se pueden importar o exportar entradas de librería desde o a archivos de texto. Para exportar una entrada hay que seleccionarla y pulsar el icono Export; esto abrirá el cuadro de diálogo Export Library Entry (ver Figura). Aquí se puede elegir qué directorio contendrá la entrada exportada. La sintáxis de la exportación es muy compleja comparada con el entorno gráfico normal de PowerBuilder.

Page 12: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 12 de 47

También se pueden importar entradas de librería desde archivos de texto. Para hacerlo, se pulsa el icono Import y se abre el cuadro de diálogo Select Import Files de la Figura. Aquí se eligen los archivos que se quieren importar hasta la aplicación en curso de PowerBuilder. Finalmente, se debería ver el cuadro de diálogo Import File into Library Entry (ver Figura) y, desde él, seleccionar dónde se quiere situar la entrada importada.

RR ee gg ee nn ee rr aa cc ii óó nn

Regeneración es un proceso muy importante en el desarrollo de aplicaciones en PowerBuilder, ya que vuelve a compilar todas las entradas de librería que se seleccionen. Durante la ejecución pueden ocurrir problemas cuando los objetos antecedente y descendiente tienen definiciones en conflicto. Esto pasará si se hacen modificaciones en los objetos antecedentes y no se regeneran los descendientes. Por ejemplo, si se cancela un control en una ventana antecedente, las ventanas descendientes mantendrán la suposición de que el control existe todavía. Si se abren las ventanas descendientes en el painter de ventana, PowerBuilder podrá quitar las referencias al control cancelado. Regenerando todos los objetos en una aplicación se asegurará que problemas como éste se identifiquen y se resuelvan antes de que sea ejecutada. Para regenerar hay que seleccionar las entradas que se quieran someter a este proceso (generalmente todas las de un PBL) y pulsar el icono Regeneration; así todas ellas quedarán regeneradas. Ver figura.

Page 13: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 13 de 47

RR ee cc oo nn ss tt rr uu cc cc íí óó nn dd ee ll cc óó dd ii gg oo

Periódicamente, durante el desarrollo, habrá que reconstruir toda la aplicación. Para reconstruir todas las definiciones de objetos se selecciona en el menú Design Full Rebuild (ver Figura). Para regenerar solamente los miembros con cambios desde la última reconstrucción (incluso los descendientes de los objetos cambiados), pulsar Design Incremental Rebuild.

BB oo rr rr aa dd oo dd ee uu nn aa ll ii bb rr ee rr íí aa

PowerBuilder sólo permite el borrado de una librería si no está relacionada en la ruta de búsqueda de librerías de la aplicación en curso (activa). Para hacer este borrado, se identifica el nombre de la PBL en el painter de librería y luego se selecciona Library Delete en el menú, como en la Figura

Page 14: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 14 de 47

Utilización de DataWindows

Introducción a los objetos DataWindows El objeto DataWindow es una de las características más fuertes de PowerBuilder. Los objetos DataWindows, que son como controles limitados a los datos, incorporan interfaces de usuario tales como editores de una línea y campos de texto estático, así como muchos de los accesos y actualizaciones que las aplicaciones hacen a las bases de datos. Una diferencia importante entre los objetos DataWindows y las ventanas tradicionales que contienen controles como los mencionados, es que un objeto DataWindow se considera como un control único. Aunque pueda parecer una colección de controles para editores de una línea y campos de texto estático, realmente sólo muestra una representación de mapa de bits del diseño del objeto DataWindow. Con independencia de lo complejo que parezca, es un control único con una serie de sucesos asociados con él. Para un objeto DataWindow actualizable, se utilizan controles de edición para tabular las columnas con posibilidad de actualización, de manera que se permita la introducción de datos. Por el uso del objeto DataWindow se puede reducir considerablemente el número de controles contenidos en una ventana y, por lo tanto, mejorar sensiblemente su rendimiento. El objeto DataWindow realiza las recuperaciones y actualizaciones desde una base de datos en una forma más sencilla de aplicar que codificando SQL embebidos y cargando los editores de una línea y los campos de texto estático a partir de resultados fijados individualmente.

Utilización del painter de objetos DataWindow (crea ción de objetos DataWindows) El painter de objetos DataWindows tiene realmente tres ventanas principales. La primera ventana, el SQL Painter, es donde se define el dato fuente para el DataWindow. La segunda ventana, el diseñador de objetos DataWindows, es donde se delinea su formato utilizando segmentos de informe: hay cuatro segmentos en la mayoría de los objetos DataWindows: encabezamiento, detalle, pie y resumen. La última ventana es la de vista preliminar, donde se puede observar el objeto DataWindow con los datos recuperados desde la base de datos. Normalmente se iniciará el trabajo en el painter de SQL, moviéndose desde aquí hasta el diseñador y desde éste a la vista preliminar. Es normal un movimiento de ida y vuelta entre las ventanas de diseño y la vista preliminar hasta que se está satisfecho con el diseño del onjeto DataWindow. Ocasionalmente, también se puede volver al painter de SQL para modificar la fuente de datos empleada.

Para abrir el painter de DataWindow se realizan los siguientes pasos: 1. Se puede crear o modificar un objeto DataWindow . Por ahora se pulsa New para crear uno nuevo. Se abre así el cuadro New DataWindow (ver Figura). 2. En el cuadro New DataWindow, se selecciona DataSource y Presentation Style. También se pueden fijar DataWindow Options, como se desarrolla en las secciones siguientes.

Page 15: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 15 de 47

Utilización de las fuentes de datos (data source) La fuente de datos determina cómo se ha de crear la sentencia SQL SELECT utilizada en la cumplimentación de los campos del objeto DataWindow. La distinción entre Quick Select y SQL Select es una cuestión de preferencias personales, ya que son dos diferentes estilos de painters para crear las sentencias SQL SELECT de los objetos DataWindow, también pueden utilizarse stored procedures y fuente de datos externas.

QQ uu ii cc kk SS ee ll ee cc tt

El painter Quick Select permite construir un SQL Select solamente desde tablas que tengan una relación predefinida entre la clave principal y la clave externa. En otras palabras. cuando se construye un Quick Select, la primera tabla de la base de datos que se elija en la selección determina qué otras tablas (si existen) se pueden tener en la selección. Sólo se podrá seleccionar desde otras tablas que tengan una relación de clave externa con (o desde) la primera tabla elegida.

SS QQ LL SS ee ll ee cc tt

La elección de SQL Select proporciona más control sobre el proceso de pintado de SQL Select. Se puede seleccionar desde múltiples tablas, incluso si no tienen una relación predefinida entre la clave principal y la clave externa.

SS tt oo rr ee dd pp rr oo cc ee dd uu rr ee

Esta forma de obtener datos se utiliza cuando es necesario ejecutar un procedimiento almacenado en la base de datos para traer los datos.

EE xx tt ee rr nn aa ll

En este caso el objeto DataWindow es llenado manualmente por el usuario, se debe indicar de antemano que columnas y que tipos de datos tendran las columnas para poder ser utilizada.

Determinación del estilo de presentación El estilo de presentación define la disposición inicial de los campos resultantes; una vez elegido el estilo, es difícil de cambiar (probablemente sea necesario volver a crear el objeto DataWindow si se necesita ese cambio) La lista que sigue relaciona varios tipos de estilos de presentación, por qué seleccionarlos y cómo formatearlos.

FF rr ee ee ff oo rr mm

Este estilo se utiliza frecuentemente para las ventanas de entrada de datos. Normalmente sólo muestra una fila cada vez y no tiene información de encabezamiento ni de resumen. Se puede ver un objeto DataWindow sin formato (freeform) en la Figura.

TT aa bb uu ll aa rr

Muestra típicamente varias filas de información cada vez. Es normal que este estilo tenga un segmento de encabezamiento que contenga los títulos de las columnas. También suele tener un pie de página y filas de

Page 16: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 16 de 47

resumen al final del informe. Una factura es un excelente ejemplo de un objeto DataWindow tabular, ya que muestra muchas filas a la vez (líneas de factura) y tiene información de encabezamiento (los nombres y direcciones de la compañía y del cliente, la fecha, etc.). así como una información de resumen (el IVA y el importe total de la factura).

GG rr ii dd

Este estilo de objeto DataWindow recuerda mucho a una hoja de cálculo; obliga al programador a situar las columnas del segmento de detalle en una línea. Puede tener segmentos de encabezamiento, resumen y pie siempre que estén dentro de una cuadrícula. Su mejor empleo es cuando se necesitan las características de una hoja de cálculo, como las columnas que pueden ser dimensionadas de nuevo.

LL aa bb ee ll

Se utiliza para imprimir etiquetas de correo para informes.

NN -- UU pp

Normalmente se utiliza sólo para informes en los que se imprimirán múltiples filas resultantes en una única línea de impresión. Cuando se define un informe N-Up, se especifica cuántas filas se dispondrán horizontalmente en cada línea de impresión del detalle.

GG rr oo uu pp

Estos informes permiten crear grupos (o interrupciones de control) para clasificar y resumir.

CC rr oo ss ss tt aa bb

Estos informes permiten resumir un gran número de filas de detalle en un pequeño número de filas de resumen. Los Crosstab son los típicos resúmenes de dos vías mostrados en una cuadrícula. Por ejemplo, resumiendo las ventas por productos dentro de las regiones, producirá una fila en el informe para cada producto y una columna para cada región, con resúmenes en cada celda.

GG rr aa pp hh ss

Este estilo presenta los datos en formato de gráficos o cuadros.

RR ii cc hh TT ee xx tt

Esta presentación se utiliza para incorporar datos dentro de un texto a partir de un archivo en Rich Text Format (RTF).

OO LL EE 22 .. 00

Este estilo de presentación permite usar una aplicación de servidor OLE para gestionar la presentación del objeto DataWindow. Por ejemplo un objeto DataWindow OLE que utiliza a Excel como aplicación servidora.

CC oo mm pp oo ss ii tt ee

Este es un objeto DataWindow que sólo contiene otros objetos DataWindow. No tiene DataSource y se emplea exclusivamente para informar.

Utilización de los estilos de edición Hasta aquí se han venido creando en el objeto DataWindow todas las columnas de la base de datos como de edición sencilla; esta sección mostrará cómo ampliar el objeto DataWindow para incluir otros estilos de edición, tales como las listas desplegables, los botones de radio, las casillas de verificación y los EditMasks (editores de máscaras); Para definir o revisar un estilo de edición, se pulsa dos veces en la columna del objeto DataWindow, lo que abre la página de propiedades de columna. Se elige la ficha Edit, y en ella se mostrará el estilo actual activo definido para esa columna. En la listas desplegable Style, de la Figura, se puede elegir el estilo que se quiere para aplicarlo a la columna.

Page 17: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 17 de 47

EE ss tt ii ll oo dd ee ee dd ii cc ii óó nn

Edit es el estilo por defecto, seleccionándolo en la ficha Edit de la página de propiedades de la columna del objeto DataWindow (como en la Figura), se pueden definir muchas características de edición para la columna.

Limit: En el cuadro Limit se especifican cuantos caracteres puede introducir el usuario. Si se especifica cero, podrá introducir una cantidad ilimitada de ellos. Case: En el cuadro Case se definen las mayúsculas o minúsculas. Accelerator: El cuadro Accelerator permite definir una tecla o secuencia de teclas que dirigirán el foco a la columna asociada con ellas. (Recordemos que dirigir el foco (set focus) a una columna o control, significa llevar el cursor a esa columna). Format: Normalmente se emplea el cuadro Format para las columnas numéricas; introducir aquí un formato produce que se adapten a él los datos de las columnas que han sido escritos. Por ejemplo, si se escribe $#,### en el cuadro Format y el número 1234 como dato para la columna, este número se mostrará como $1.234. Auto Selection: Al activar esta casilla se le está diciendo a PowerBuilder que se resalte la columna cuando reciba el foco y, como toda la columna se ha seleccionado, cualquier caracter que se escriba sustituirá a su contenido actual. Si no se activa Auto Selection, el cursor irá al principio de la columna cuando ésta reciba el foco. Show Focus Rectangle: Si ésta característica está activada, PowerBuilder trazará un tenue rectángulo alrededor de la columna si ésta tiene el foco.

Page 18: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 18 de 47

Display OnIy: Para marcar una columna de solo-mostrar hay que activar esta casilla. Por defecto el usuario está autorizado a editar la columna (También se puede conseguir el mismo efecto por medio del Tab Order). Empty String is NULL: Una cadena vacía no se considera normalmente como NULL, pero cuando ésta casilla está activada, PowerBuilder la convierte en NULL. Password: Esta característica le dice a PowerBuilder que oculte el valor de una columna mostrando asteriscos (*) en su lugar. Esta opción es útil para las columnas que se utilizan para introducir contraseñas, cuyo valor no debe ser visto. Required: Con esta opción se impide que la columna pierda el foco salvo que se introduzca un valor. Auto Horz ScroII: Se activa esta casilla para permitir un deslizamiento horizontal automático. Si está activada se pueden escribir más caracteres de los que entran en el campo de edición ya que mientras se teclea el campo se va deslizando horizontalmente. Por defecto está sin activar, lo que quiere decir que sólo se pueden introducir tantos caracteres como la columna pueda mostrar. Auto Vert Scroll: Para que una columna se deslice verticalmente de forma automática cuando se necesite, hay que activar esta casilla de verificación. Por defecto no se producirá el deslizamiento vertical. Horz ScroIl Bar: Activándola, se crea una barra de deslizamiento horizontal en la columna. Vert Scroll Bar: Activándola, se crea una barra de deslizamiento vertical en la columna. Use Code Table:Esta opción utiliza una tabla de códigos para convertir en un valor mostrado, un valor de dato introducido. Por ejemplo, se puede activar esta opción e introducir lo siguiente:

Valor del dato Valor mostrado SJ San Justo CF Capital Federal

Si el usuario introduce uno de los valores de dato listados, la columna mostrará su valor asociado, y, si el valor introducido no está en la lista, se verá el valor del dato en lugar del valor mostrado. Validate Using Code Table: Cuando está activado, el usuario está forzado a introducir uno de los valores de datos listados. Introducir cualquier otra cosa producirá un mensaje de error que diga que el valor introducido para esta columna no pasa la prueba de validación.

EE ss tt ii ll oo dd ee ee dd ii cc ii óó nn cc oo nn cc uu aa dd rr oo ss dd ee ll ii ss tt aa ss dd ee ss pp ll ee gg aa bb ll ee ss

Un cuadro de listas desplegables muestra un conjunto de posibilidades; para hacer una selección en estas listas, basta sólo con pulsar sobre ella. En PowerBuilder se emplea un tipo de cuadros de listas desplegables en los que las listas no aparecen hasta que la columna recibe la atención. Para proporcionar este estilo a una columna, se abre la página de propiedades de la columna y, en la ficha Edit, se elige DropdownListBox Style, como ya se vio. En la Figura se puede ver que muchas de las opciones de este estilo de listas son iguales a las del estilo Edit. Las propiedades diferentes son las siguientes:

Page 19: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 19 de 47

Sorted: Activando esta casilla se muestra la lista de Display Values en un orden ascendente. AIIow Editing: Alguna vez se querrá ofrecer al usuario una lista para elegir, pero otras veces se preferirá que sea el propio usuario el que escriba su selección. Activando esta propiedad se le permiten al usuario ambas posibilidades. Si la propiedad no está activada, el usuario tiene que rellenar la columna eligiendo en el cuadro de lista. Always Show List: Esta casilla de verificación convierte el cuadro de listas desplegable en un cuadro de lista. Activando la casilla, el cuadro de lista siempre esta visible; si se desactiva, el cuadro de lista de columna sólo se desplegará si la columna recibe el foco. Always Show Arrow: Esta casilla siempre muestra la flecha que abre el cuadro de lista. Si está desactivada, la flecha se mostrará cuando la columna reciba el foco. Se utiliza la tabla de código para que el cuadro de lista desplegable muestre las selecciones, cualquiera de éstas que elija el usuario se traducirá después a un valor de dato apropiado.

BB oo tt oo nn ee ss dd ee rr aa dd ii oo (( RR aa dd ii oo BB uu tt tt oo nn ss ))

Los botones de radio, como las cajas de lista desplegables, representan la posibilidad de seleccionar entre múltiples opciones que el usuario tiene a su disposición para elegir un valor para una columna. Se puede convertir una columna en un botón de radio seleccionando el estilo Radio Button en la ficha Edit de la página de propiedades de Column Object. Se abren así las propiedades RadioButton en esa ficha, como se ve en la Figura

Page 20: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 20 de 47

Las propiedades que se pueden definir para RadioButton son las siguientes: Column Across: El cuadro Column Across controla el número de botones de radio que se muestran a lo ancho del objeto DataWindow. Left Text: Esta casilla de verificación le dice a PowerBuilder que ponga el texto en el lado izquierdo del botón de radio. Si la casilla está desactivada, el texto se situará al lado derecho. Scale Circles: Con esta casilla se le dice a PowerBuilder que escale el botón de radio a mayor o a menor dependiendo del tamaño de la letra de la columna. 3-D: Por medio de esta casilla se le dota al botón de radio de un borde inferior, lo que, normalmente, le da un aspecto visual agradable.

EE ss tt ii ll oo dd ee ee dd ii cc ii óó nn cc oo nn cc aa ss ii ll ll aa ss dd ee vv ee rr ii ff ii cc aa cc ii óó nn (( CC hh ee cc kk BB oo xx ))

Estas casillas son cuadros de Si o No que el usuario pulsa para activar o desactivar. Para convertir una columna en una casilla de verificación se selecciona CheckBox Style en la ficha Edit de la página de propiedades, como se vio anteriormente, aparecen así las opciones disponibles (véase Figura). Las opciones o propiedades específicas de las casillas de verificación son las siguientes:

Page 21: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 21 de 47

Text: Esta propiedad es la etiqueta que se muestra al lado de la casilla. Data Value For: Con esta opción se define qué valores se han de retomar para cada estado de la casilla. Normalmente, este valor de dato es S o N. Scale: Propiedad similar a la Scale Circle utilizada para los botones de radio: ajusta el tamaño de la letra a lo requerido por la columna. 3-States: No siempre las casillas de verificación han de ser Si o No, ya que PowerBuilder permite casillas de tres estados, puede ser activada, desactivada o gris. Si se activa, aparece la opción Other en la lista Data Value For, como se ve en la Figura.

MM áá ss cc aa rr aa dd ee ee dd ii cc ii óó nn (( EE dd ii tt MM aa ss kk ))

Se utiliza este editor para dar formato a la entrada a medida que el usuario la introduce en la columna. Por ejemplo. si se declara un editor de máscara para una columna de ##,###. PowerBuilder sólo permitirá entradas numéricas (# es numérico). De la misma manera, al introducir las entradas, con este editor se insertan las marcas apropiadas (tales como comas) en lugar de hacerlo a posteriori, como el estilo de formato en el estilo de edición por defecto. Para hacer de una columna un editor de máscara se selecciona

Page 22: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 22 de 47

el estilo EditMask en la ficha Edit de la página de propiedades y se obtienen las opciones disponibles para este componente. Algunas de estas opciones son las mismas que ofrece el estilo de editor por defecto, pero hay algunos atributos nuevos para EditMask que son los siguientes:

Mask: Se utiliza este cuadro para seleccionar un EditMask predefinido desde el PowerBuilder; hay muchos de ellos y pueden también ser EditMask definidos por el usuario. Type: Normalmente el cuadro Type se establece como Display Only. La única vez que se permite cambiar el Type es cuando PowerBuilder no puede determinar el tipo de dato de la columna. Spin Control: Permite al usuario utilizar el ratón para incrementar o disminuir el valor de EditMask situando un botón con una flecha hacia arriba y otro con la flecha hacia abajo dentro de la casilla del editor de máscara. Activando Spin Control se pueden introducir atributos empleados en el Spin. Spin Increment: Es el incremento (o disminución) del valor real del EditMask que se puede conseguir con la pulsación en las flechas; cada vez que se pulsan se modifica en más o en menos. Por ejemplo, si se tiene un incremento de 100 y el valor inicial de la casilla es 0, con una pulsación se mostrará 100, con dos pulsaciones se mostrará 200, etc. Spin Range: Permite definir un límite máximo y mínimo para el Spin Code Table y Code Table Options: Esta tabla de código se define exactamente como aquellas tablas que se han visto en el estilo de edición por defecto, en el estilo de los botones de radio y en las cajas de lista desplegables. No obstante, cuando en EditMask se utiliza una Code Table, como en la Figura, el Spin Control pasa a través de los valores de la Code Table en lugar de incrementar o disminuir el valor de la caja EditMask.

Page 23: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 23 de 47

UU tt ii ll ii zz aa cc ii óó nn dd ee DD aa tt aa WW ii nn dd oo ww ss dd ee ss pp ll ee gg aa bb ll ee ss (( DD rr oo pp DD oo ww nn DD aa tt aa WW ii nn 00 dd oo ww ))

Se necesitarán con frecuencia cajas de lista desplegables para contener valores desde las tablas de las bases de datos. Las tablas de códigos y las listas de selección de claves principales son ejemplos de listas para manejo de datos. Para que PowerBuilder pueda recuperar la lista desplegable desde una tabla de base de datos, las listas se construyen utilizando los objetos DataWindows desplegables. que son también un tipo de cajas de lista desplegables. En lugar de utilizar una tabla de código cableado el Drop-Down DataWindow (DDDW) recupera su lista de valores de datos y de muestra por medio de un objeto DataWindow; por consecuencia un DropDownDataWintow es un objeto DataWindow dentro de otro. Para añadir un DropDownDataWindow al estilo de edición de una columna, lo primero que hay que hacer es crear el objeto DataWindow utilizado para mostrar la lista de valores. Normalmente, estos objetos

DataWindows se construyen con el estilo de presentación tabular. En el diseño de la DataWindow, se cancelan todos los titulares y todas las columnas que no se quieren mostrar, Como lo que se quiere mostrar es solamente el código ésta será la única columna que se vea (ver Figura).

Se guarda el DDDW con un nombre que empiece por dddw, , y se vuelve al ítem DataWindow; se selecciona una columna, se abren las propiedades de edición y se elige Drop-Down DataWindow para el estilo de edición. Se ven ahora las propiedades para este estilo, se elige el objeto DataWindow que se quiera asociar con esta columna (ver la Figura). Después de elegir el objeto DataWindow para el DropDownDataWindow, se pulsa sobre la columna de datos y la de muestra para el DropDownDataWindow. El valor del dato se sitúa en el buffer de DataWindow cuando un valor de muestra se selecciona en la lista. Ahora se completa el resto de las propiedades del DropDownDataWindow; éstas son similares a las de las cajas de lista (ya se dijo que un DropDownDataWindow es un tipo de caja de lista).

Page 24: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 24 de 47

Bandas de la dw La ubicación de los objetos dentro del objeto DataWindow puede tener lugar en diferentes sectores del objeto, estos sectores son llamados bandas

Banda Lugar donde se muestra Header (Encabezado) Al principio de cada pagina Group header (Encabezado de grupo) Al comienzo de cada grupo y al comienzo de cada página Detail (Detalle) Una vez por cada fila de datos Group trailer (Resumen del grupo) Al final de cada grupo Summary (Resumen) Al final de cada página Footer (Pie) Al final del reporte

Los encabezados y colas de grupo aparecen para cada grupo en el reporte. Se pueden anidar tantos grupos como se requiera. En la pantalla, el pie de página aparece después del Detalle y del Sumario en el painter de DW. En el papel este aparece en el final de cada página.

Grupos (Diferencias con la sentencia GROUP BY del q uery) Se puede especificar un grupo o varios en la edición de una DW. Los grupos definen un corte de control en la lista de filas obtenidas de la base de datos y permiten hacer cálculos parciales de los datos agrupados. Para crear un grupo se utiliza el cuadro de diálogo que aparece al seleccionar la opción Rows>Create group Ver figura.

Para realizar cálculos sobre las filas del grupo se utilizan las bandas y para los campos computados se utiliza la sintáxis “for group #” Por ejemplo, para realizar la suma de ventas de los días del mes de enero se utilizará la siguiente sintaxis en el campo computado: sum(ventas for group 1) La agrupación en la DW difiere del group by en varios puntos: El procesamiento se realiza en el cliente, mientras que el group by se calcula en el servidor. Las filas originales se mantienen y se pueden visualizar en detalle y por grupo, además de poder hacer cálculos sobre los grupos, en la cláusula group by solo se tiene los datos sumarizados y no se tiene el detalle. La cláusula group by es ventajosa cuando no se requiere el detalle de las filas ya que no produce tráfico de red y no requiere procesamiento extra por filas innecesarias.

Page 25: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 25 de 47

Cambiar condicionalmente las propiedades de una col umna usando el painter de objetos DataWindows Se puede cambiar ciertas propiedades de una columna condicionalmente utilizando el painter de objetos DataWindows. Esta es una forma fácil de cambiar propiedades sin escribir código. Se toma como ejemplo el cambio condicional de propiedades de una columna. Se hace click derecho sobre la columna y se elige propiedades. En la solapa de expresiones se pueden escribir expresiones para la propiedad especifica asociada al objeto columna. Utilice la función If() para incluir testeos condicionales en una expresión: If(<expresión booleana>,<valor por verdadero>,<valor por falso>) Para operaciones mas complejas puede utilizar la función Case().

AA bb rr ii ee nn dd oo uu nn aa vv ee nn tt aa nn aa dd ee dd ii áá ll oo gg oo mm áá ss dd ee tt aa ll ll aa dd aa

Haciendo doble click sobre una expresión se puede ver una ventana de diálogo mas detallada con una lista de funciones para la el objeto DataWindow y nombres de columnas. Existen muchas funciones, entre ellas, funciones que le permitirán basar un cambio de una columna en el status de una fila en una DW. IsRowNew(): Para saber si la fila es nueva IsRowModified(): Para saber si la fila es modificada IsSelected(): Para saber si la fila está seleccionada Por ejemplo, se pretende proteger el campo clave de aquellas filas que sean traídas de la base de datos, es decir, solo se podrán modificar las claves de las filas nuevas, entonces en la propiedad Protect se debería utilizar la siguiente expresión: If(IsRowNew(),0,1)

Page 26: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 26 de 47

Reportes complejos

Creación de crosstabs Para usar el estilo crosstab: 1. Crear un nuevo objeto datawindow

clickeando en el ícono de nuevo. 2. Seleccionar la solapa datawindow y el

estilo crosstab (Figura)

3. Definir la fuente de datos:

Aparecerá el cuadro de diálogo para la definición del reporte.(Figura)

4. Arrastrar las columnas que se desean mostrar a lo largo de la parte superior del reporte a la lista de columnas (Se puede hacer doble click sobre el nombre de una columna para utilizar una expresión en lugar de el nombre de una columna)

5. Arrastrar las columnas que se desean mostrar a lo largo de la parte izquierda del reporte a la

lista de filas. (Se puede hacer doble click para utilizar una expresión) 6. Arrastrar las columnas requeridas a la lista de valores y hacer doble click si se necesita utilizar una

expresión. 7. Continuar con el asistente para definir los colores y detalles del reporte terminar con Finish,

seguidamente aparecerá el espacio de trabajo de la datawindow

Cambiar la definición del crosstab En el pintor de la datawindow se puede modificar la definición del reporte haciendo click derecho en el fondo de la datawindow y seleccionando la opción Crosstab. (Figura)

Page 27: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 27 de 47

Crear reportes compuestos Se puede crear un reporte y anidar otro reporte como un objeto como parte de él. El reporte base y el reporte anidado tienen fuentes separadas de datos. (Figura)

RR ee ll aa cc ii oo nn aa nn dd oo ll oo ss dd oo ss rr ee pp oo rr tt ee ss

Los reportes anidados pueden ser muy útiles para representar información del estilo maestro/detalle, como por ejemplo clientes y ordenes. Se pueden relacionar los reportes anidados por una columna clave en el reporte base de forma que el reporte muestre todos los detalles por cada fila maestra traída de la base de datos. Al momento de la ejecución, todas las filas maestras son recuperadas de la base primero y luego, por cada fila se ejecuta una recuperación de datos para completar los reportes anidados. Por lo tanto, un nested report con 30 filas requiere 31 recuperaciones de datos. Pasos para relacionar dos reportes: 1. Crear y grabar el reporte anidado 2. Abrir el reporte base 3. Seleccionar Insert Control Report 4. Clickear donde se quiera insertar el reporte 5. Seleccionar el reporte a anidar (figura)

Luego, mediante la solapa general en las propiedades del reporte anidado se pueden asociar los argumentos del reporte anidado con los argumentos o columnas del reporte base.

Page 28: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 28 de 47

Crear reportes compuestos (Composite) Un reporte composite contiene otros reportes basados en sentencias SQL separadas. El reporte composite no tiene en si mismo una fuente de datos; es solo un contenedor para los reportes anidados en él. Los reportes anidados no pueden ser relacionados unos con otros, sin embargo, se pueden definir argumentos para el reporte compuesto y utilizarlos para controlar qué filas van a recuperar los reportes anidados. 1. Crear una nueva datawindow con estilo composite. En este estilo no se seleccionará ninguna fuente de

datos (Figura)

2. Seleccionar los reportes que se van a anidar 3. En tiempo de diseño los reportes se verán así: (Figura)

4. Presionar click derecho sobre el reporte principal o sobre los componentes para modificar los

argumentos.

OO pp cc ii oo nn ee ss dd ee ll rr ee pp oo rr tt ee

Page 29: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 29 de 47

Varias opciones que están disponibles en la hoja de propiedades permiten cambiar la apariencia del reporte, las mas relevantes son: (Figura)

New page: Fuerza a imprimir cada componente en una nueva hoja Trail Footer: Esta opción controla la impresión del pié de página, si está seleccionada fuerza al pié de página a aparecer inmediatamente al final del reporte, de otra forma aparecerá al final de la hoja.

RR ee ff ee rr ee nn cc ii aa ss aa uu nn rr ee pp oo rr tt ee aa nn ii dd aa dd oo ee nn uu nn rr ee pp oo rr tt ee cc oo mm pp uu ee ss tt oo

Se puede referenciar directamente uno de los componentes en un reporte compuesto. Por ejemplo, para compartir datos con otra datawindow. Los reportes componente son objetos dentro del reporte compuesto. Para acceder a dichos objetos se debe utilizar el nombre de cada componente. Como cualquier otro objeto en la datawindow, se puede nombrar a un objeto reporte usando la hoja de propiedades. Se utiliza la función getchild() para retornar una referencia a un reporte anidado. Luego se podrá utilizar la referencia a la datawindow para manipular el reporte. datawindowchild ldwc_reporte dw_compuesta.getchild(“dw_empleados”,ldwc_reporte)

Imprimir reportes Para imprimir una sola datawindow se utiliza la función print(). PowerBuilder utilizará las fuentes y la disposición en pantalla que aparecen en el objeto DataWindow. dw_reporte.print(true) El argumento opcional en la función print() determina si se mostrará un cuadro de dialogo que permite al usuario cancelar la impresión. Por defecto el argumento es true, lo que significa que el cuadro de diálogo aparecerá

Controlar las especificaciones de impresión

DD ee ll aa dd aa tt aa ww ii nn dd oo ww

Se pueden modificar las opciones relacionadas con la impresión del objeto DataWindow como parte de su definición, se seleccionará la solapa Print Specifications de las propiedades del objeto DataWindow.

Page 30: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 30 de 47

Las especificaciones de impresión principalmente permiten cambiar los márgenes, el tamaño del papel y la orientación. (Figura)

DD ee ll aa ii mm pp rr ee ss oo rr aa

Se puede permitir a los usuarios acceder al cuadro de diálogo de las opciones de impresión en cualquier momento. Se puede codificar una opción de menú o un botón que contenga el siguiente código: PrintSetup() El código anterior provoca la aparición del cuadro de diálogo de las opciones de impresión.(Figura)

Page 31: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 31 de 47

Validaciones en la DataWindow

Validaciones cliente versus validaciones servidor Las validaciones del ingreso del usuario en la maquina cliente proveen una respuesta mucho mas rápida que las provistas por el servidor. Tan pronto como el error es detectado es informado al usuario. Este enfoque ofrece ventajas en la interfaz de usuario además de que ningún dato es trasmitido al servidor aún. Las validaciones basadas en el servidor, por otro lado, generalmente tienen su lugar en forma de controles de integridad referencial, restricciones, procedimientos almacenados y triggers. Son controles centralizados, fáciles de mantener y actualizar y garantizan que los datos son verificados, aún si el programador olvido hacerlo en la aplicación.

Reglas de validación Las reglas de validación son expresiones que generan un resultado booleano (VERDADERO o FALSO). Por lo tanto, cuando se construye una regla, se construye una expresión de manera que el resultado pueda ser evaluado como verdadero o falso. Puede ser pensado como una sentencia if:

IF la regla de validación devuelve VERDADERO THEN permitir el ingreso del dato ELSE Rechazar el dato

Las reglas son ejecutadas automáticamente cuando se modifica una columna y se presiona ENTER, TAB, flecha arriba, flecha abajo o se clickea en otro objeto de la dw. También se procesan las funciones de update() y acceptext().

Construir reglas de validación Para construir las reglas de aplicación hay que abrir las especificaciones de columna en el dw painter ( View Column especifications )

En el campo Validation Expression se podrá ingresar la validación o hacer doble click para ingresar a una ventana que permitirá la especificación de la regla.

Page 32: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 32 de 47

Para obtener el valor escrito por el usuario se utiliza la función getText() El campo validation message se utiliza para ingresar el mensaje que será mostrado al usuario cuando la validación falle.

Validar las entradas a través de un máscara de edic ión Una máscara de edición (edit mask) especifica el formato del campo, haciendo mas fácil para los usuarios ingresar valores con un formato fijo. Un edit mask consiste en caracteres especiales que determina lo que el usuario puede o no ingresar. También contiene signos de puntuación para ayudar al usuario. Un edit mask pre-valida el ingreso del usuario al hacer foco en el tipo correcto de datos. (Figura)

Columnas obligatorias en una DW Obligatoria (o requerida –required-) usualmente significa que una columna en particular en la base de datos no acepta valores nulos.

Page 33: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 33 de 47

Se deberá asegurar que todos los datos requeridos son ingresados antes de enviar una sentencia SQL a la base de datos. Para hacer que una columna sea de ingreso obligatorio se deberá chequear la opción requiered de la solapa edit en el painter dw. (Figura)

Hay que tener en cuenta que la validación se ejecuta si el usuario posiciona el foco en la columna, de otra manera, no se realiza ninguna validación.

Tabla de códigos Trabajar con tablas significa tener una representación alternativa de los datos en la base para ser mostrados al usuario. La tabla de códigos posee datos que son internos (códigos), que pueden ser guardados en la base o utilizados en consultas y datos externos, que son mostrados al usuario (display). Este tópico ya fue tratado al ver los estilos de edición de la dw.

Page 34: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 34 de 47

FACILIDADES EL OBJETO UO_DW

Validación de datos

VV aa ll ii dd aa rr uu nn cc aa mm pp oo aa tt rr aa vv ee ss dd ee ll aa pp rr oo pp ii ee dd aa dd ““ VV aa ll ii dd aa tt ii oo nn EE xx pp rr ee ss ss ii oo nn ”” dd ee ll aa ss cc oo ll uu mm nn aa ss dd ee ll

oo bb jj ee tt oo dd aa tt aa ww ii nn dd oo ww

Para validar la entrada de datos de un campo ingresar la función de Validación en la propiedad “Validation Expression” y el Mensaje que se desea enviar al usuario en “Validation Message”. Con la funcion Gettext() se obtiene el valor actual de la columna.

VV aa ll ii dd aa rr uu nn cc aa mm pp oo cc oo nn tt rr aa ee ll cc oo nn tt ee nn ii dd oo dd ee ss uu dd rr oo pp dd oo ww nn dd aa tt aa ww ii nn dd oo ww (( dd dd dd ww ))

Cuando el campo de una datawindow tiene como tipo de entrada de datos una dropdowndatawindow y este campo es editable puede agregarse una regla de validación para que el ingreso manual del dato exista en la lista que contiene la dddw. Ingresar la clave ddv=1 en la propiedad tag del campo que contiene la dddw.

En este ejemplo también tenemos la clave dda= . Esta clave indica los campos del objeto datawindow que forman parte de los argumentos de Retrieve de la dropdown datawindow. En este caso, el campo se llama “plan”, el cual tiene asignada una dropdown datawindow que contiene dos argumentos de retrieve (unidad Academica y carrera), para ello se le indica al objeto uo_dw que los valores de los argumentos los recupere de los campos unidad_academica y carrera . Esto se indica de la siguiente forma: dda=unidad_academica, carrera; Verificar que estos campos deben existir en la SELECT utilizada en el objeto datawindow: SELECT dba.sga_planes.unidad_academica,

dba.sga_planes.carrera, dba.sga_planes.plan FROM dba.sga_planes

Page 35: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 35 de 47

VV aa ll oo rr ee ss qq uu ee dd ee pp ee nn dd ee nn dd ee ll ii nn gg rr ee ss oo dd ee dd aa tt oo ss ee nn oo tt rr oo ss cc aa mm pp oo ss

A veces se desea que los argumentos de Retrieve de alguna dropdowndatawindow en algún campo dependa de valores de campos de la misma datawindow. Para ello debe ingresarse la clave dda en la propiedad tag del campo que contiene la dropdowndatawindow.

VV aa ll oo rr ee ss rr ee qq uu ee rr ii dd oo ss

Para indicar los campos que necesitan que tengan un dato ingresado al momento de Grabar, se debe setear la propiedad “Required ”. Al Grabar los datos ingresados en una datawindow, el objeto “uo_dw” valida si existe algún campo requerido con valor Nulo.

En este ejemplo se intentó grabar sin asignar un Tipo de Aula. El Nombre del campo que muestra la ventana de mensaje lo recupera del título del campo que tenia seteada la propiedad Requiered. Para ello el nombre del Titulo del campo debe ser el nombre del campo en la datawindow + el postfijo “_t” , es decir “tipo_aula_t”. De no encontrarse el campo de texto que indica que es título de ese campo, mostrara el nombre que tiene asignado el campo en la datawindow.

VV aa ll ii dd aa cc ii óó nn mm ee dd ii aa nn tt ee uu nn aa dd aa tt aa ww ii nn dd oo ww aa uu xx ii ll ii aa rr ..

Puede validarse la entrada de datos de un campo, mediante la búsqueda del mismo en una datawindow auxiliar y a veces con la necesidad de la carga de valores de otros campos. Por ejemplo, validar el Ingreso del campo “Legajo ”, el cual depende del campo unidad_academica y carrera. Para ello se utiliza una datawindow “dval_alumno_legajo ”. Esta datawindow tiene los argumentos de retrieve: unidad_academica, carrera y legajo. Devuelve un registro con los datos de la persona.

Para indicar esto, se seteara en el atributo “tag ” del campo “Legajo” las siguientes claves:

Clave Descripción val= nombre_dw_validacion Nombre del objeto datawindow de Validación rtv= campo1, campo2, …,

campo_n Lista de campos del objeto datawindow que seran usados como

argumentos de Retrieve en el objeto datawindow de Validación. El campo donde se encuentran estas claves, es decir el campo que se desea validar, no debe estar indicado en esta clave, ya que se considera como último argumento de Retrieve de la dw indicada en la clave val .

Esta clave puede no estar, pero siempre , la dw de validación tendrá un argumento de retrieve que es el valor del campo que se desea validar. En este ejemplo el campo legajo.

Page 36: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 36 de 47

dev= campo1, campo2, …, campo_n

Lista de campos que seran cargados con un valor, si se encontró el dato que se busca. En este ejemplo validar si existe el legajo ingresado

Las claves con sus valores, deben estar separadas por coma (;) Para el ejemplo los valores son: val= dval_alumno_legajo; dev= , , , apellido, nombres;

rtv= unidad_academica, carrera /* además de estos dos campos, esta el campo 'legajo'*/ Select del objeto datawindow “dp_alumno ”: SELECT unidad_academica, carrera, legajo, apellido , nombres FROM sga_alumnos, ………

Select del objeto datawindow “dval_alumno_legajo”: SELECT unidad_academica, carrera, legajo, apellido, nombres, tipo_documento, nro_documento FROM dba.sga_alumnos, dba.sga_personas WHERE dba.sga_alumnos.unidad_academica = :ua AND dba.sga_alumnos.carrera = :carrera AND dba.sga_alumnos.legajo = :legajo AND dba.sga_personas.unidad_academica = dba.sga_ alumnos.unidad_academica AND dba.sga_personas.nro_inscripcion = dba.sga_a lumnos.nro_inscripcion AND dba.sga_planes.unidad_academica = dba.sga_al umnos.unidad_academica

Como puede observarse el objeto datawindow “dval_alumno_legajo” tiene tres Argumentos de Retrieve (unidad_academica, carrera, legajo) pero solo los dos primeros argumentos son indicados en la clave rtv (rtv=unidad_academica, carrera) ya que como ultimo argumento se pasa implicitamente el valor del campo legajo.

Ordenamiento

OO rr dd ee nn aa mm ii ee nn tt oo pp oo rr dd oo bb ll ee cc ll ii cc kk

Se puede indicar por que campos permito que el Usuario ordene las filas de una datawindow. El dobleclick debe realizarse por el Título de la columna por la que se desea ordenar. Para ello, el nombre del Titulo de la columna deber ser igual que el nombre de la columna mas el prefijo “_t” Por ejemplo: • Si se desea ordenar por el campo “Legajo”, el nombre del Título del campo legajo deberia ser: legajo_t • Para ordenar por el campo “Apellido y Nombre” el nombre de este Título debería ser: nombre_alumno_t

Page 37: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 37 de 47

Boton de ordenamiento múltiple Para permitir ordenar por varios campos a la vez en una datawindow, debe agregarse un boton en la banda Header del objeto datawindow. El boton debe tener asignado el nombre “ordenar ” Al presionar el boton se abrirá una ventana mostrando todos los campos que se muestran en la datawindow (esten visibles u ocultos debajo de la banda de detail), permitiendo seleccionar los campos por los cuales desea ordenarse.

En el siguiente ejemplo, el boton de ordenamiento permite ordenar por los campos Legajo, Apellido y Nombre, Carrera, Plan, Comision, Unidad Academica y Estado. Como se ve en la dw hay tres campos que no se muestran, pero estan ocultos en la dw y permite ordenar por ellos tambien (Unidad Academica, Comision y Estado).

Búsqueda de datos

BB oo tt oo nn dd ee bb úú ss qq uu ee dd aa

A veces se necesita una ayuda para buscar ciertos datos en una datawindow, ello puede conseguirse agregando un boton en la datawindow para tener la posibilidad de abrir una ventana de búsqueda y selección del dato que necesitamos.

En la dw desde donde se abrirá la ventana de búsqueda, hay que colocar un botón con las siguientes características: • El nombre del Botón debe comenzar con el prefijo busq_ . Por ejemplo: busq_alumnos • En la propiedad tag deberá tener los siguientes códigos (deben estar separados por punto y coma (;)

uno de otro:

Page 38: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 38 de 47

Claves Descripción dobj= nombre_datawindow_busqueda

Nombre de la dw de búsqueda

wnd= nombre_ventana_busqueda Nombre de la Ventana de busqueda a Abrir. Si se personaliza esta ventana, debería ser heredada de la ventana w_busqueda. Si no se especifica este campo, la ventana por default es la w_busqueda.

cdw= nombre_control_datawindow Nombre del control datawindow que contiene la dw de busqueda en la ventana w_busqueda. Por default es el control dw uo_dw_filtros.

cmp= nombre_campo1, nombre_campo2,..., nombre_campoN

Lista de campos del objeto datawindow a los cuales se les quiere asignar un valor. Estos valores son los que devuelve la ventana w_busqueda. Debe tenerse en cuenta el orden y el tipo de dato de los campos de la SELECT del objeto datawindow de busqueda (identificado en la clave dobj )

param= parametro1, parametro2, parametro3, ...., parametroN

Lista de los nombres los campos del objeto datawindow que seran usados como argumentos de Retrieve en el objeto datawindow de búsqueda. Se convertiran todos los valores de los campos a string. Esta clave no debe estar si el objeto datawindow de busqueda no tiene argumentos de Retrieve.

cntf= n Cantidad de filas que se visualizarán en el objeto datawindow de busqueda. Esta clave no es obligatoria, por default se visualizarán 5 filas.

Las únicas claves requeridas son dobj y cmp, los demás pueden no estar (tienen asignados valores por default) Ejemplo 1: “wnd= w_busqueda ; cdw= uo_dw_filtros ; dobj= dbusq_alumnos; cmp= legajo, nombre_alumno, tipo_doc, nro_doc; cntf= 12 ; param= unidad_academica” En este ejemplo, se abrirá la ventana de busqueda w_busqueda , en ésta se creará el control datawindow uo_dw_filtros , el objeto datawindow a visualizar es dbusq_alumnos , los campos que serán cargados con el valor retornado por la ventana de búsqueda son: legajo, nombre_alumno, tipo_doc y nro_doc (Estos campos deben estar en este orden en la SELECT del objeto datawindow de la ventana de búsqueda), y el campo que se utilizará como argumento de retrieve en el objeto datawindow dbus_alumnos es el valor del campo unidad_academica . Ejemplo 2: “wnd =w_busqueda_ug; dobj =d_localidades_encontradas;cntf =10; cmp =localidad,loc,dpto_ptdo,prov,pais,cp;” Ejemplo 3: “dobj =dbusq_alumnos; cmp = , , apellido, nombre, ,localidad” En este caso se recuperarán los valores de los items que estan en el 3ro, 4to y 6to lugar de los campos de la SELECT de la datawindow “dbusq_alumnos”. Importante: La estructura que devuelve la Ventana de búsqueda corresponde al orden de los campos de la SELECT de la datatawindow de búsqueda definida en dobj . Por este motivo es que deben coincidir los campos que se indican en la clave cmp (deben coincidir en orden y tipo de datos). La select podría tener mas campos pero estos serán ignorados en la datawindow original. Ejemplo: Query de la dw de busqueda: SELECT legajo, apellido, nombre, nro_documento, loc alidad, edad FROM sga_alumnos, sga_personas ….

Se desea recuperar y cargar los valores de los campos: apellido, localidad y edad , la clave cmp debe estar compuesta de la siguiente forma:

Page 39: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 39 de 47

cmp= , apellido, , localidad, edad

El string ingresado en la clave cmp tiene 5 items, donde solamente 3 (apellido, localidad y edad) son los nombres de los campos de la dw que se quiere cargar con los datos devueltos por la ventana de búsqueda. Se desea recuperar y cargar los valores de los campos: legajo, apellido, y nro_documento , la clave cmp debe estar compuesta de la siguiente forma: cmp= legajo, apellido, , , nro_documento

El string ingresado en la clave cmp tiene 5 items pero solamente 3 de estos items seran seteados en los campos de la datawindow. El 1er, 2do y 5to parámetro corresponden a los campos legajo, apellido y nro_documento, los cuales seran seteados con los valores que devuelve la ventana de búsqueda. El 3er y 4to parámetro corresponden a nombre y nro_documento, estos no fueron indicados en la clave cmp por consiguiente no seran seteados en la datawindow.

PP rr oo pp ii ee dd aa dd ee ss dd ee ll oo bb jj ee tt oo dd aa tt aa ww ii nn dd oo ww dd ee bb úú ss qq uu ee dd aa ..

• Por cada columna que se desee realizar la búsqueda deberá tener seleccionada la propiedad “Prompt” . En el siguiente ejemplo, se permite al usuario que busque por los siguientes campos: carrera, legajo, apellido, nombres, nro de documento y nro de inscripción

Ventana w_busqueda con la datawindow de busqueda dbusq_alumno :

Page 40: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 40 de 47

• Los campos por los que se desea realizar la búsqueda, NO deben ser de tipo “Computed Field” .

Debido a que estos son ubicados en la clausula WHERE de la Query en la datawindow cuando se realiza la búsqueda.

EE jj ee mm pp ll oo dd ee uu nn aa dd aa tt aa ww ii nn dd oo ww qq uu ee uu tt ii ll ii zz aa ll aa vv ee nn tt aa nn aa dd ee bb úú ss qq uu ee dd aa

Datawindow de carga de parámetros en un Reporte (datawindow dp_alumno). En esta dw se encuentra un boton que permite buscar un alumno (a traves de la ventana w_busqueda) y cargar algunos valores en la dw (por ej legajo, apellido y nombres). Además tiene en el campo legajo una serie de valores que hacen que valide la entrada de datos en este campo y si es un legajo válido cargar los valores correspondientes en los campos apellido y nombres:

• El boton tiene como nombre dbusq_alumno. En la propiedad tag de este boton se encuentra el siguiente

string: wnd=w_busqueda;cdw=uo_dw_filtros;dobj=dbusq_alumno; cntf=8 ; cmp=carrera,legajo,apellido,nombres; param=unidad_academica;”

Como se ve, la consulta tiene un argumento de Retrieve (:ua) el cual fue pasado como parametro a la ventana ya que se lo indico en la clave param (param=unidad_academica) La Clave cmp indica que debe asignarse valor a los campos carrera, legajo, apellido y nombres. Estos valores son recuperados de los campos de la select: dba.sga_alumnos.carrera, dba.sga_alumnos.legajo, dba.sga_personas.apellido y dba.sga_personas.nombres. Si quisiera solo el legajo y nro de Inscripcion, la clave quedaría conformada de la siguiente manera: cmp= ,legajo, , , ,nro_inscripcion • El campo legajo en la propiedad tag tiene el siguiente string: “val=dval_alumno;dev=,,,apellido,nombre;rtv=unidad_ academica,carrera,legajo;”

Ver “Validaciones en la entrada de datos a una datawindow”

Page 41: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 41 de 47

Utilización del painter de aplicación

Definición del objeto de aplicación Es frecuente confundirse entre objetos de aplicación con aplicación o ejecutable (en el sentido de programa que funciona), cuando se habla de desarrollos en PowerBuilder. Puesto en síntesis, una aplicación es un producto de desarrollo acabado, al que también se le llama ejecutable, EXEs o programa de computadora. Por otro lado, un objeto de aplicación es específico para PowerBuilder y contiene propiedades y sucesos que afectan a toda la aplicación. Un objeto de aplicación es único entre todos los otros de PowerBuilder, en el sentido siguiente: • Sólo puede haber un objeto de aplicación para cada aplicación de PowerBuilder. Sólo se le pueden

hacer cambios o ejecutar una aplicación cada vez desde el entorno de desarrollo de PowerBuilder. • La ruta de búsqueda de biblioteca de PowerBuilder se define en el pintor de aplicación. La propia

información de la ruta no está realmente almacenada en el interior de la definición del objeto de aplicación. En vez de ello, el archivo de preferencias del entorno de desarrollo de PowerBuilder, PB.INI, contiene información sobre todas las aplicaciones en que se ha trabajado dentro de PowerBuilder. Para cada aplicación, la ruta de búsqueda de biblioteca se guarda en PB.INI. Se pueden guardar cambios sólo en los miembros de biblioteca que están en las bibliotecas definidas en esa ruta de búsqueda.

• Todas las declaraciones de una variable global se almacenan en el objeto de aplicación.

Selección y creación de una aplicación Para seleccionar una aplicación hay que pulsar en el icono Open de la Application PainterBar que se muestra aquí. Esta operación (o seleccionar File Open en el menú) abre el cuadro de diálogo Select Application Library (ver Figura). A través de él se puede abrir la PBL en la que reside la aplicación buscada.

El cuadro Select Application permite la elección de diferentes aplicaciones como se muestra en la Figura.

Page 42: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 42 de 47

Para crear una nueva aplicación, simplemente hay que seleccionar File New y se esplegará el cuadro de diálogo que se ve en la Figura, el cual abre a su vez el cuadro New (ver Figura). Se elige la solapa Start Wizards y se selecciona el objeto aplicación.

Aquí se selecciona un PBL existente o se introduce el nombre de un nuevo PBL en que se almacenará la aplicación. Cuando se ha terminado de seleccionar o introducir el PBL de una nueva aplicación, hay que pulsar en Finish.

Determinación de las propiedades de aplicación (App lication Properties) PowerBuilder permite determinar propiedades que afecten a la aplicación durante el tiempo de ejecución y/o a su desarrollo. Esta determinación se realiza en la página de propiedades de la aplicación. Los ajustes generales permiten la visión del nombre de la aplicación, biblioteca, última fecha de modificación, tamaño del objeto de aplicación (en bytes), quién ha verificado la aplicación (si alguien lo ha hecho) y los comentarios de la aplicación. En la Figura se ve como se muestran las propiedades generales de la aplicación.

Page 43: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 43 de 47

Especificación de una ruta de biblioteca Cada aplicación de PowerBuilder busca su propio PBL para cualquier referencia a Windows o bien otros objetos de PowerBuilder; algunas veces, sin embargo, es deseable partir el trabajo en múltiples PBLs, por esta razón, PowerBuilder proporciona la especificación de una ruta de búsqueda de biblioteca para la aplicación. Una ruta es una lista de PBLs a la que la aplicación puede acceder cuando se busca un objeto, una referencia a una variable y otras construcciones de PowerBuilder creadas durante el desarrollo de la aplicación. Se especifica una ruta de biblioteca utilizando seleccionando File Library List o el ícono library list. Al abrir la página, muestra el Library Search Path que se ve en la Figura. Pulsar en el botón Browse para añadir nuevas librerías a la ruta.

Para incluir otro PBL a la ruta de búsqueda, se puede escribir directamente en el espacio disponible del Library Search Path o pulsar el botón Browse. Si se hace esto último se verá el cuadro de diálogo Select Library como muestra la Figura.

Page 44: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 44 de 47

En el cuadro de diálogo Select Library se elige PBLs para añadir a la ruta de búsqueda: cuando se ha terminado, pulsando Open aparecerá el nombre del PBL elegido para la ruta de búsqueda, como se aprecia en la Figura.

Page 45: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 45 de 47

Construcción del ejecutable

Definiciones del proyecto Para crear un nuevo proyecto debe seleccionarse el ícono New o File New y seleccionar de la solapa Proyect la opción Application. (Figura)

En este momento el sistema requiere un nombre para el ejecutable, el nombre del archivo de recursos, las opciones para construir el proyecto, las opciones para generar el código y las opciones relativas a las bibliotecas (véase la Figura).

Page 46: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 46 de 47

Una vez definidas las opciones del proyecto en el pintor de proyectos, pulsar el botón Build de la PainterBar (véase la Figura) para crear los archivos ejecutables definitivos. Una vez terminado. siempre que se utilice el pintor de proyectos para compilarlo de nuevo, éste se encargará de regenerar. convenir las bibliotecas en DLLs, emplear todos los recursos deseados y compilar la aplicación para obtener un archivo EXE de Windows. Pulsar File, Save en el menú para almacenar la definición del proyecto en un archivo PBL. Para ello se abre el cuadro de diálogo Save Project

Opciones de construcción La definición del proyecto sirve para definir y guardar las opciones que deben emplearse para crear los archivos ejecutables. En las siguientes secciones se abordan cada una de estas opciones. Prompt for Overwrite Hay que marcar esta opción si se desea que PowerBuilder pida siempre confirmación antes de escribir sobre un archivo existente (EXE, PBD o DLL). Rebuild Las opciones posibles son Incremental o Full. Es recomendable realizar una construcción completa (regenerar) de todas las definiciones de los objetos de la aplicación antes de crear los archivos ejecutables definitivos. Una reconstrucción de actualización (Incremental) puede serlo más conveniente para crear archivos ejecutables preliminares durante la fase de desarrollo y pruebas. Únicamente se regeneran las definiciones de los objetos que han cambiado desde la última reconstrucción. Tanto si se están construyendo ejecutables para su uso en plataformas de 16-bits como de 32-bits, se debe realizar una reconstrucción total para tener la certeza de que el archivo EXE se regenera adecuadamente.

Opciones de generación de código Esta opción está relacionada únicamente con la generación de código máquina. Machine Code Es preciso seleccionar esta opción para construir los archivos de código máquina ejecutables (EXE y PBDs). Trace Information Cuando se selecciona esta opción al generar código máquina se activa una característica muy importante. Esta opción permite rastrear el curso de la ejecución de la aplicación y la creación y destrucción de los objetos. La información de rastreo se almacena en un archivo de texto que puede abrirse después con cualquier editor de texto. Puede emplearse por ejemplo Microsoft Word para revisar e imprimir este archivo. Como rastrear la ejecución de la aplicación puede reducir su rendimiento y puesto que el archivo generado puede ser muy voluminoso, sólo es recomendable seleccionar esta opción durante la última fase de producción. Error Context Information Hay que marcar esta opción si se desea que PowerBuilder muestre la información sobre el contexto (objetos, sucesos y el número de línea del script) en los errores que sucedan durante la ejecución del código máquina. Optimization Tanto para Windows como para Macintosh, se puede optimizar el tamaño y la velocidad de los archivos ejecutables en código máquina.

Opciones de bibliotecas dinámicas Esta opción permite reducir el tamaño del archivo ejecutable (EXE). Es recomendable generar bibliotecas dinámicas para todas las bibliotecas de PowerBuilder (PBLs). PBD Hay que marcar esta opción para construir una biblioteca de ejecución dinámica (el Pcode de una PBD o el código máquina de una DLL para un entorno específico).

Page 47: Curso de Power Builder en PDF

Curso de Power Builder – Personalizaciones Básicas SIU-Guaraní

PROGRAMA SIU Página 47 de 47

Resource File Name Es preciso asignar un nombre para el archivo de recursos de PowerBuilder (PBR) si se quieren incluir los recursos empleados (BMPs o ICOs) en una biblioteca dinámica. Si no se copian en dicha biblioteca, los recursos deben incluirse en el ejecutable (EXE) o bien distribuirse como archivos externos independientes.

Utilizar recursos y archivos de recursos de PowerBu ilder (PBRs) Un recurso puede ser un icono (archivo ICO), una imagen (archivos BMP y RLE), un puntero (archivos CUR) o un objeto de una DataWindow que se utilice en el programa. Se puede usar, por ejemplo, un icono específico cuando la ventana está minimizada, una imagen de mapa de bits en una DataWindow o un puntero del ratón especial para un objeto. También se puede hacer referencia en un script a los objetos de una DataWindow sólo dinámicamente.

Construir un archivo de recursos de PowerBuilder (P BR) Para incluir recursos en un archivo ejecutable o en una biblioteca dinámica es preciso crear un archivo de recursos de PowerBuilder. Un PBR es un archivo ASCII de texto que contiene el nombre de los recursos que deben incluirse en el archivo EXE, DLL o PBD. Por ejemplo, en la DataWindow dw_ejemplo, se hace referencia a imágenes de mapas de bits. Si no se incluyeran dentro de los archivos definitivos, sería necesario instalar los archivos BMP externos en todas las computadoras donde se fuera a ejecutar el sistema de control del inventario. Para evitar el engorro de tener que instalar archivos independientes hay que crear antes de compilar un archivo externo de recursos que tenga la extensión PBR. Puede emplearse el Bloc de notas o el WordPad para crear archivos de texto. El contenido de archivo serán los nombres de las imágenes

Añadir objetos Data Window dinámicos En algunas ocasiones se puede modificar durante la ejecución el objeto DataWindow asociado con un control DataWindow en un script. Para modificar un objeto DataWindow en tiempo de ejecución hay que asignar el nombre de un objeto DataWindow (en una cadena) a la propiedad DataObject del control DataWindow: dw_1 .DataObject = ‘dw_ejemplo’ Para asignar un nuevo objeto DataWindow hay que escribir el código anterior y añadir el dataWindow object al archivo de recursos: libraryOrigen.pbl (dw_ejemplo)

La máquina virtual de PowerBuilder PowerBuilder ofrece un paquete de distribución de uso público y gratuito denominado PowerBuilder Virtual Machine (VM). o máquina virtual de PowerBuilder. VM puede emplearse para distribuir una aplicación de PowerBuilder a un sistema que no tenga instalado el entorno de desarrollo de PowerBuilder. Para distribuir el ejecutable hay que incluir lo siguiente: • El archivo ejecutable (EXE) • Todas las DLLs (si se va a suministrar código máquina) o PBDs (si va a ser código Pcode) que se usan

en el ejecutable • Todos los archivos independientes, tales como iconos y mapas de bits que no estén compilados dentro

de los archivos EXE, PBD o DLL • Todas las bases de datos y archivos de registro de bases de datos necesarios en la aplicación • La máquina virtual de PowerBuilder • Los controladores necesarios para las bases de datos