Anda di halaman 1dari 47

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

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

PROGRAMA SIU Página 1 de 47


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

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:

Power Builder Painters


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.

Power Builder Libraries


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

Power Builder Database


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.

Barras de herramientas
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)

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

Presentación del menú

Empleo de las opciones de menú en los painters de PowerBuilder


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.

Guardar el trabajo
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.

PROGRAMA SIU Página 2 de 47


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

Cerrar los painters


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.

Salir de PowerBuilder
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

Utilización de menúes
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

PROGRAMA SIU Página 3 de 47


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

Guardar el menú
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.

Utilización de ventanas
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).

PROGRAMA SIU Página 4 de 47


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

Guardar la ventana
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).

PROGRAMA SIU Página 5 de 47


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

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 PowerBuilder (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.

El cuadro de diálogo Toolbars


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.

PROGRAMA SIU Página 6 de 47


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

Añadir, Cancelar y Rediseñar los íconos


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).

PROGRAMA SIU Página 7 de 47


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

Utilización del painter de librerías


Creación de una nueva librería
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.

PROGRAMA SIU Página 8 de 47


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

Modificación de las propiedades de una librería o de una entrada


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.

Navegación con el pintor de librería


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.

Selección de entradas
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.

PROGRAMA SIU Página 9 de 47


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

• 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

Copia o traslado de entradas de librería

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.

PROGRAMA SIU Página 10 de 47


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

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.

Exportación e Importación de entradas de librería


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.

PROGRAMA SIU Página 11 de 47


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

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.

Regeneración
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.

PROGRAMA SIU Página 12 de 47


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

Reconstruccíón del código


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.

Borrado de una librería


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

PROGRAMA SIU Página 13 de 47


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

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 (creació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.

PROGRAMA SIU Página 14 de 47


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

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.

Quick Select
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.

SQL Select
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.

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

External
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.

Freeform
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.

Tabular
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

PROGRAMA SIU Página 15 de 47


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

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).

Grid
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.

Label
Se utiliza para imprimir etiquetas de correo para informes.

N-Up
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.

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

Crosstab
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.

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

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

OLE 2.0
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.

Composite
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.

PROGRAMA SIU Página 16 de 47


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

Estilo de edición
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.

PROGRAMA SIU Página 17 de 47


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

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.

Estilo de edición con cuadros de listas desplegables


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:

PROGRAMA SIU Página 18 de 47


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

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.

Botones de radio (Radio Buttons)


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

PROGRAMA SIU Página 19 de 47


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

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.

Estilo de edición con casillas de verificación (CheckBox)


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:

PROGRAMA SIU Página 20 de 47


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

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.

Máscara de edición (EditMask)


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

PROGRAMA SIU Página 21 de 47


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

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.

PROGRAMA SIU Página 22 de 47


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

Utilización de DataWindows desplegables (DropDownDataWin0dow)


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).

PROGRAMA SIU Página 23 de 47


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

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 query)


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.

PROGRAMA SIU Página 24 de 47


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

Cambiar condicionalmente las propiedades de una columna 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().

Abriendo una ventana de diálogo más detallada


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)

PROGRAMA SIU Página 25 de 47


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

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)

PROGRAMA SIU Página 26 de 47


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

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)

Relacionando los dos reportes


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.

PROGRAMA SIU Página 27 de 47


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

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.

Opciones del reporte

PROGRAMA SIU Página 28 de 47


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

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.

Referencias a un reporte anidado en un reporte compuesto


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

De la datawindow
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.

PROGRAMA SIU Página 29 de 47


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

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

De la impresora
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)

PROGRAMA SIU Página 30 de 47


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

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.

PROGRAMA SIU Página 31 de 47


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

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 edició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.

PROGRAMA SIU Página 32 de 47


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

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.

PROGRAMA SIU Página 33 de 47


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

FACILIDADES EL OBJETO UO_DW

Validación de datos

Validar un campo a traves de la propiedad “Validation Expression” de las columnas del


objeto datawindow
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.

Validar un campo contra el contenido de su dropdowndatawindow (dddw)


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

PROGRAMA SIU Página 34 de 47


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

Valores que dependen del ingreso de datos en otros campos


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.

Valores requeridos
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.

Validación mediante una datawindow auxiliar.


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, …, Lista de campos del objeto datawindow que seran usados como
campo_n 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.

PROGRAMA SIU Página 35 de 47


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

dev= campo1, campo2, …, Lista de campos que seran cargados con un valor, si se encontró el
campo_n 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_alumnos.nro_inscripcion
AND dba.sga_planes.unidad_academica = dba.sga_alumnos.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

Ordenamiento por doble click


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

PROGRAMA SIU Página 36 de 47


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

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

Boton de búsqueda
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:

PROGRAMA SIU Página 37 de 47


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

Claves Descripción
dobj= Nombre de la dw de búsqueda
nombre_datawindow_busqueda
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, Lista de campos del objeto datawindow a los cuales se les quiere
nombre_campo2,..., asignar un valor. Estos valores son los que devuelve la ventana
nombre_campoN 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, Lista de los nombres los campos del objeto datawindow que seran
parametro3, ...., parametroN 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, localidad, 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:

PROGRAMA SIU Página 38 de 47


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

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.

Propiedades del objeto datawindow de búsqueda.


• 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:

PROGRAMA SIU Página 39 de 47


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

• 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.

Ejemplo de una datawindow que utiliza la ventana de búsqueda


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”

PROGRAMA SIU Página 40 de 47


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

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.

PROGRAMA SIU Página 41 de 47


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

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 (Application


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.

PROGRAMA SIU Página 42 de 47


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

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.

PROGRAMA SIU Página 43 de 47


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

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.

PROGRAMA SIU Página 44 de 47


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

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).

PROGRAMA SIU Página 45 de 47


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

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).

PROGRAMA SIU Página 46 de 47


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

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 PowerBuilder (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 (PBR)


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

PROGRAMA SIU Página 47 de 47

Anda mungkin juga menyukai