You are on page 1of 67

EnKontrol Fundamentos de Power Builder

Introducción a Power Builder


Objetivo
Al terminar este manual el usuario deberá tener las habilidades suficientes para:
Crear aplicaciones usando Power Builder
Usar los painters de Power Builder para crear, modificar, corregir y entregar
aplicaciones.
Entender los conceptos básicos y características en el desarrollo de aplicaciones
orientada a objetos.
Implementar técnicas efectivas para desarrollo de aplicaciones.

Power Builder es un software que se utiliza para desarrollar aplicaciones cliente/servidor


multicapa (n-tier) y aplicaciones Web, usa tecnologías RAD-Rapid Application Development
(Desarrollo rápido de aplicaciones).

Power Builder se usa como herramienta de desarrollo para manipular información almacenada
en bases de datos relacionales y aprovecha las capacidades de las aplicaciones manejadas
por eventos.

Una aplicación pude contener menús, ventanas y otros elementos para interactúar con el
usuario, adicionalmente cuenta con procesos lógicos en eventos y funciones, que le permiten
validar y controlar esa interacción, implentar las reglas del negocio y otros procesos
importantes. Por ejemplo, cuando selecciona una opción del menú, cuando activa un botón,
introduce texto, etc. Muchos eventos son activados y realizan acciones mediante comandos de
Power scripts.

Conceptos básicos de la Programación Orientada a Objetos

Un objeto es cualquier entidad o cosa con que se pueda representar o concebir con una serie
de características y comportamiento que lo definan. Podemos tomar ventaja de las técnicas de
la programación orientada a objetos como el encapsulamiento, herencia, polimorfismo para
crear objetos reusables, expandibles y poderosos.

Herencia
Permite crear una clase de otra heredando las características de su clase padre, pudiéndose
agregarle funcionalidad y características que la clase base no posee.

Polimorfismo
Es la capacidad que tienen los objetos de soportar métodos con un mismo nombre y actuar de
manera diferente según sea su tipo.

Agregación
La agregación es la propiedad por la cual un objeto puede estar compuesto por otros objetos,
los cuales funcionan de una manera independiente dentro del objeto contenedor, pero de una
manera cooperativa, se pueden considerar objetos independientes por ser unidades operativas
por si solas, pero que al unirse pueden conformar una unidad mas grande.

Encapsulamiento
Esta es una característica que presentan los objetos, por medio de la cual sólo dan a conocer a
los otros objetos, los atributos y métodos a los que los pueden acceder, siendo esta la forma
que el objeto se presenta para que los demás se comuniquen con él, esta se podría mencionar
como la interfaz del objeto.

Entre los resultados de todas estas poderosas características de los objetos tenemos una
potencial reusabilidad, usar una buena metodología de análisis y diseño, hace mucho más fácil
el desarrollo de la aplicación, ya que se trata de emular el mundo real representándolo a partir
de los objetos.
EnKontrol Fundamentos
s de Power Builder

Objetos de Power Builder


der
Una aplicación Power Builderr se construye en base a un grupo determinado
dete de
e objetos del
conjunto de objetos propios de Power Builder:

• Application (Objeto aplicación)


ación)
• Window (Objeto ventana))
• DataWindows (Objeto DataWindow)
ataWindow)
• Menú (Objeto Menú)
• Global Function (Objeto función)
unción)
• Query (Objeto Consulta)
• Structure (Objeto Estructura)
ura)
• User Object (Objeto Definido
nido por el usuario)
• Project (Objeto proyecto)

APPLICATION

El objeto Aplicación
cación es el punto de inicio, define y organiza las ventanas y otros
objetos que permiten
ermiten llevar a cabo actividades especificas. Ma antiene los valores
por defecto para
ara varias características de la aplicación.

WINDOW

El objeto Ventana
tana es aquel que proporciona el componente
com te principal de la
interface entre el usuario y la aplicación. Una ventana puede mostrar y/o solicitar
información, respon
sponder a una acción del teclado o ratón. Un objeto
jeto ventana tiene
controles que son objetos que se colocan dentro de ella y que permiten al
usuario interactuar
tuar con la aplicación

MENU

Un Menú es unana lista de comandos u tareas que el usuario puede


de realizar en la
ventana activa.

DATAWINDOW

Un objeto DataWindow
aWindow permite a la aplicación visualizar,
visualizar capturar
pturar y manipular
información proveniente
oveniente de una Base de datos o de cualquier er otra fuente de
datos. Combina a el acceso inteligente a los
l datos y la capacidad
ad de pres
presentarlos
en diversas formas
mas para hacer más amigable su interfac
interface con el usuario.

FUNCIONES
PowerBuilderr permite definir dos tipos de funciones:
Funciones a nivel de objeto
objeto, son definidas para un tipo particular
ticular de ventana,
menú u otro tipo de objeto; son encapsuladas dentro del objeto jeto en el cual se
definen.
Funciones Globales,
Globales no son encapsuladas dentro de un objeto, pero son
guardadas como
omo objetos independientes. A diferencia de las funciones a nivel
de objeto, las funciones globales no actúan sobre una instancia ia particular de un
objeto. Por el contrario, estas funciones ejecutan procesos de propósito general
como cálculoss matemáticos o manipulación de cadenas o fechas has.

QUERIES
Una consultaa es una sentencia SQL-Structured
SQL Query Language
anguage- que se
guarda con un nombre de tal forma que puede ser usada repetidamente
petidamente como
fuente de datos
atos en un objeto DataWindow. Las consultass incrementan la
productividad por que son codificadas una vez y pueden ser rehusadas tan
frecuentemente
nte como sean necesarias.
EnKontrol Fundamentos de Power Builder

STRUCTURES
Una estructura es una colección de una o más variables relacionadas de uno o
más tipos de datos agrupados bajo un mismo nombre. En algunos lenguajes,
como Pascal y Cobol, las estructuras son llamadas registros.
Las estructuras permiten agrupar a entidades relacionadas como una unidad
en lugar de hacerlo de manera individual, existen dos clases de estructuras:
Estructuras a nivel de objeto, están asociadas con un tipo particular de
objeto como una ventana o menú. Estas estructuras son usadas en scripts para
el mismo objeto. También se puede definir la estructura para que pueda ser
accesible desde otros scripts.
Estructuras Globales, no están asociadas con ningún objeto en su aplicación.
Podemos hacer referencia a estas estructuras desde cualquier parte de su
aplicación.
Fundamentos de programación en Power Builder
USER OBJECTS
Las aplicaciones, frecuentemente tienen características comunes. Por ejemplo,
usualmente se necesita un botón Cerrar que ejecute un conjunto de
operaciones y que cierre la ventana. O una lista desplegable que muestre todos
los departamentos.
Si se tienen objetos con las mismas características y repetitivos, entonces
deberá definir un objeto de usuario, el cual se crea una vez y se utiliza tantas
veces se necesite. Tenemos dos tipos de objetos del usuario:
Objetos del usuario Visuales, es un control o un conjunto de controles, que
se pueden reutilizar y tienen un comportamiento definido.
Clase de Objetos del usuario, son módulos de procesamiento reutilizables
que no tienen un componente visual.
LIBRARIES
Los objetos como ventanas y menús, se guardan en librerías Power Builder
(archivos PBL). Cuando se ejecuta una aplicación, PowerBuilder recupera los
objetos de la librería. Las aplicaciones pueden usar tantas librerías como se
necesiten. Cuando se crea una aplicación, se deben especificar las librerías se
van a utilizar.

PROJECTS
Para permitir que un usuario ejecute y distribuya su aplicación, se crea un
objeto Project donde puede empaquetar su aplicación en cualquiera de las
siguientes formas:
Como un archivo ejecutable individual que contiene todos los objetos de la
aplicación.
Como un archivo ejecutable y una o más librerías dinámicas de PowerBuilder
que contienen objetos que serán utilizados en tiempo de ejecución.
Cuando se empaqueta la aplicación, se podrá también proveer algunos
recursos adicionales, tales como mapas de bits o iconos. Estos recursos se
incluirán en los ejecutables o librerías dinámicas, o se distribuirán en forma
separada.
EnKontrol Fundamentos de Power Builder

El ambiente de desarrollo de Power Builder

Dentro del ambiente de desarrollo de Power Builder puede trabajar con varios objetivos
(Targets) al mismo tiempo, abrir y trabajar con varios objetos de las mismas. Los targets que se
pueden generar son de dos tipos:
Power Script, Una aplicación cliente/servidor, una aplicación multicapa o un servidor de
componentes para ambientes distribuidos.
Aplicación Web, donde se incluyen todos los elementos necesarios para construir un servidor
web, -archivos html, scripts, imágenes, conexiones a la base de datos, etc.

Cuando inicias Power Builder, abres una ventana que contiene una barra de menús, la barra de
herramientas de Power, un árbol del sistema y una ventana de portapapeles a la izquierda.

La ventana del sistema- es el centro de las actividades del desarrollador. Se usa para abrir,
ejecutar, depurar y construir los aplicativos.

La ventana de portapapeles, almacena los fragmentos de código que se usan frecuentemente.

La ventana de salida – se muestra en la parte de debajo de la ventana principal, se abre


automáticamente cuando se genera alguna salida, puede abrirse cuando se requiera mediante
el botón de Output window en la barra de herramientas.

Painters – Una vez que se crea un espacio de trabajo y un target, puedes construir los
componentes del target usando los painters, los cuales proveen una variedad de herramientas
para mejorar la apariencia de los elementos. Power Builder provee un painter para cada tipo de
objetos que construyamos. Por ejemplo, para construir una ventana en el Window painter,
podemos definir las propiedades de la ventana, adicionar controles como botones, cajas de
texto, etc.
EnKontrol Fundamentos de Power Builder

Wizards – Asistentes, Simplifican la creación de las aplicaciones, objetos, componentes, sitios


web y páginas web.

To-Do List – Muestra la lista de tareas que el desarrollador necesita hacer para el target actual.
Estas tareas pueden generarse automáticamente cuando se usan los Asistentes, se pueden
teclear o importar de un archivo tipo texto.

Browser – Permite ver todos los objetos, métodos, variables, and estructuras que están
definidas o disponibles en el PowerScript.

PowerBar – Es el principal punto de control para construir una aplicación de Power Builder.
PowerBuilder también muestra uno o varios Paintbars con botones para acceder fácilmente a
las herramientas disponibles en el painter.

StyleBar - Se muestra cuando abres cualquier painter que contenga controles con texto,
permite modificar las propiedades como el tipo, tamaño, apariencia y alineación del texto.

PowerTips – Cuando se deja el cursor del mouse arriba de un botón por uno o dos segundos,
se muestra un cuadro color amarillo con la descripción de la acción asociada a ese botón
(PowerTip), se puede deshabilitar esta característica seleccionando la opción Show PowerTips
desde el menú emergente de cualquier barra de herramientas.

Algunas áreas de Trabajo son las siguientes:

Area Descripción
Aplication Permite definir las características generales que tendrá la aplicación,
como son fuente de letra para las etiquetas, controles, librerías que la
conforman, acciones que se deben realizar al iniciar/terminar la
aplicación, etc.
Project Permite crear un archivo ejecutable, y especificar los componentes
que lo componen.
Window Permite trabajar con las ventanas que utilizara la aplicación. Las
ventanas se convierten en contenedores de los objetos visuales, es
decir, están puestos encima de esta; para que el usuario pueda
manipularlos.
User Object Permite definir nuevos tipos de objetos; a partir de los ya existentes o
bien creándolos con una programación C++. El primer tipo es el más
utilizado, ya que se puede formular código estándar, y de esa manera
disminuir el número de líneas de código. Los objetos aquí definidos
EnKontrol Fundamentos de Power Builder

pueden ser utilizados en cualquier ventana de la aplicación.


Menu Permite declarar los menús. Esto significa que pueden existir varios
menús en la aplicación.
Structure Permite definir las estructuras de datos que serán utilizadas por la
aplicación.
Function Permite definir funciones que serán utilizadas por la aplicación, y
podrán ser accedidas desde cualquier parte de la aplicación. Estás
funciones podrán o no retornar un valor, y pueden o no tener
parámetros.
Datawindow Permite definir los datawindows, en estas consultas el desarrollador
define el estilo de la presentación de los datos, define reglas de
validación para cada campo, argumentos, uniones, ordenamiento
criterios de selección y agrupamientos.
Query Es utilizado para definir y guardar una sentencia SQL en forma
gráfica, permitiendo su uso como fuente de datos en objetos
datawindows.
Pipeline Un objeto ‘Tubería’ es usada para administrar la transferencia datos
desde una Base de Datos a otra de forma masiva.
Configure Permite definir un profile (perfil) de conexión a una fuente de datos,
ODBC regularmente es a un manejador de base de datos relacional; el
ODBC – Open Database Connectivity deberá estar instalado en la
máquina.
DB Profile Permite seleccionar un profile, previamente definido, con el que se
conectara a la Base de Datos correspondiente. Para cada tipo de
Base de Datos los parámetros con los que se sirve para conectarse
podrían variar, infórmese.
Database Permite trabajar con la Base de Datos conectada actualmente al
seleccionar un perfil del área DB Profile. Aquí es posible
Crear/Modificar Tablas, Claves Primarias/Foráneas, Manipular datos.
Library Use está área de trabajo para crear y mantener las librerías, y los
objetos que la forman. Estos objetos pueden ser la Aplicación,

Ventanas, Menús, etc. Use el botón ‘Properties’ , o bien la misma


opción del menú al presionar el botón derecho del mouse; para
modificar la descripción dada a cada objeto. También es posible
copiar, eliminar, mover objetos de una librería a otra.
Run Permite ejecutar la aplicación desde su comienzo, si estuviera
trabajando en un Área de Trabajo, se le pedirá que guarde los
cambios antes de iniciar la ejecución de la aplicación.
Run window Permite ejecutar solamente la ventana actual, no es una pre
visualización de está; realmente se ejecutan el código contenido en
cada objeto. Es importante que la Base de Datos con la que uno esté
trabajando este conectada vía el objeto no visual de transacción para
que no se produzcan errores.
Exit Termina la ejecución del Ambiente Powerbuilder.
EnKontrol Fundamentos de Power Builder

Aprendiendo a construir una aplicación Cliente/Servidor

El ambiente de diseño de aplicaciones de Power está contenido en un MDI (Multiple


Document Interface), usaremos una compañía ficticia llamada Sports Wear, Inc. La
aplicación permitirá extraer información de los Clientes y productos de la Base de
Datos, y realizar Insert, Update y Delete a los registros.

La aplicación MDI incluye dos ventanas que permiten el acceso a las tablas de Clientes
y Productos de la base de datos EAS demo DB.

Estas ventanas están diseñadas bajo el esquema maestro-detalle, la cual permite el


despliegue en forma de lista de los registros contenidos en una tabla y en la parte
inferior observar la información detallada del registro seleccionado.

La aplicación MDI, incluye una ventana de login que permitirá validar el acceso a la
base de datos al momento de la ejecución.

Que debo de aprender


Este tutorial no te hará un experto en Power Builder, solo construyendo aplicaciones reales
puede darte esa experiencia y proporcionarte los fundamentos para seguir creciendo.
Aprenderás las técnicas y conceptos básicos de Power Builder incluyendo los siguientes:

Como usar el Para


Application painter Definir un objeto aplicación y el scripts a nivel apliación
Window painter Crear SingleLineEdit controls, StaticText controls, CommandButton
controls, DataWindow controls, window-level scripts, y control-level
scripts
DataWindow painter Definir opciones para la selección y despliegue.
Menu painter Definir menús, menu items, accelerators, and shortcut keys
EnKontrol Fundamentos de Power Builder

Layout view Diseñar como las ventanas, menús y datawindows se mostraran,


cuando la aplicación se ejecute.
Script view Definir el código para la aplicación, ventanas, controles de ventanas y
menús.
Debugger Identificar los errores lógicos que pueden causar problemas cuando se
ejecute la aplicación.
Project painter Crear el ejecutable de la aplicación.

Configurando el tutorial

Antes de que inicies el tutorial, asegúrate que puedes conectarte a la Base de Datos y tienes
los archivos necesarios para el tutorial.

Conectándote a la base de datos

El tutorial usa la base de datos EAS Demo DB V10 se instala con PowerBuilder. Esta es una
base de datos diseñada en Adaptive Server Anywhere por lo que requiere el motor de base de
datos de Sybase Adaptive Server Anywhere.

Si no tienes listo el Adaptive Server Anywhere en tu computadora o servidor, debes instalarlo


usado el CD de PowerBuilder.

Si Power Builder fue instalado en otra ubicación distinta a la de default, asegúrate que en el
odbc.ini en el registro que define al EAS Demo DB como una fuente de datos apunte a la
ubicación correcta del Motor del Adaptive Server Anywhere.

Cuando instalas PowerBuilder, estos archivos se instalan en el directorio C:\Archivos de


programa\Sybase9\PowerBuilder\Tutorial.

tutor_pb.pbl Librería que contiene muchos objetos que usaras en el tutorial.


pbtutor.hlp Archivo de ayuda de contexto sensitivo.
tutsport.bmp Un bitmap
tshirtw.jpg Un grafico
tutorial.ico Un icono
EnKontrol Fundamentos de Power Builder

Lección 1 - Iniciando con Power Builder


En esta lección aprenderás a:
Crear un espacio de trabajo
Crear un target
Especificar un ícono para la aplicación
Cambiar el tamaño de la ventana principal
Ejecutar la aplicación.

Crear un espacio de trabajo


1 Doble-click en el icono de PowerBuilder en la ruta Sybase>PowerBuilder o
Seleccciona INICIO- Programas>Sybase>PowerBuilder >PowerBuilder

Si se muestra la caja de dialogo de Bienvenida a PowerBuilder


Puedes seleccionar la caja que dice ‘Don’t Show This Dialog Again’ para que PowerBuilder no
muestre la pantalla de bienvenida cada vez que inicie.
Selecciona la caja de ‘Reload Last Workspace On Starting PowerBuilder’ para que se cargue el
area de trabajo recientemente usada cada vez que se inicie una sesión de PowerBuilder.
Selecciona el botón Close para cerrar la ventana.

El ambiente de desarrollo de PowerBuilder es desplegado.

Si es la primera vez que abres Power Builder en tu equipo, observa que el nivel superior del
árbol del sistema indica que no existe un área de trabajo abierta (No workspace), en caso
contrario, se mostrará el área de trabajo y los objetos que la componen.

2 Selecciona New del menú File o Click en el botón New en el PowerBar.


La caja de dialogo para el nuevo espacio de trabajo es desplegada.
EnKontrol Fundamentos de Power Builder

Crea un nuevo espacio de trabajo

3 Selecciona Workspace de la pestaña Workspace de la caja de dialogo New


Click OK.

Una nueva caja de dialogo es desplegada:

4 Navega a la carpeta donde se ubica el tutorial.


Originalmente la carpeta Tutorial se ubica en la carpeta de PowerBuilder.

5 Teclea MyWorkspace en la caja de texto del Nombre del archivo.


Click Guardar.

La caja de dialogo del nuevo espacio de trabajo se cierra y se crea el espacio de trabajo y
aparece como el primer elemento en el árbol del sistema.

Crear un target
Ahora vas a crear un nuevo target usando el asistente de plantillas para aplicaciones,
basándose en las opciones que elijas se crearan eventos, menús, ventanas y objetos de
usuario pre codificados adicionalmente al objeto de aplicación.

1 Selecciona New del menú File y selecciona la pestaña de Target


O click derecho en MyWorkspace en el árbol del sistema y selecciona New del menú
pop-up
y click en la pestaña de Target.

2 Selecciona el icono de Template Application y click OK.


EnKontrol Fundamentos de Power Builder

El asistente de aplicaciones se mostrará. La primera página de los asistentes explica para que
es usado, puedes presionar F1 para obtener ayuda en los campos.

3 Click en el botón Next hasta que se muestre la página donde se especifica el nombre de la
aplicación y la librería

4 Teclea pbtutor en la caja de texto del Nombre de la aplicación (Application Name)

El asistente automáticamente asigna los nombres para los archivos de la librería (.PBL) y el
target (.PBT).

5 Click Next.

Hay que especificar el tipo de plantilla (Template) a utilizar para el despliegue de las ventanas.

MDI – Multiple Document Interface


En una aplicación MDI, la ventana principal de la aplicación se llama MDI frame, usa una barra
de menú, puedes abrir ventanas adicionales conocidas como hojas que se muestran dentro de
la ventana principal.

SDI- Single Document Interface


Genera una aplicación con una ventana principal, un menú y una ventana de Acerca de …

Selecciona el tipo MDI Application with Microhelp.

6 Click Next 4 veces hasta que se muestre la ventana para asignar los nombres de las
hojas individuales.

El dar los cuatro Next seguidos se debe a que en este tutorial vamos aceptar los valores por
default de:
La ruta para búsqueda de las librerías
Los nombres de la estructura base (frame) y su menú
La ventana de la hoja base, el menú de la hoja y el servicio administrador de las hojas
EnKontrol Fundamentos de Power Builder

Si por error diste click en el botón Next muchas veces, puedes usar el botón Back para
regresarte y corregir cualquier ventana del Asistente.

7 En la página para los nombres de las hojas individuales, teclea:


w_customers para la Hoja 1.
w_products para la Hoja 2, y limpia la caja de texto de la Hoja 3

PowerBuilder generará dos ventanas tomando como base la hoja base (w_pbtutor_basesheet),
una para los clientes y otra para los productos. Deberás adicionar una tercera ventana en la
lección del manejo de excepciones.

8 Click Next.
Teclea Maintain Customers para que se muestre en la Hoja 1,
Teclea Maintain Products para que se muestre en la Hoja 2.

Los nombres que proporcionaste se mostraran en la barra del título de las hojas y en el Menú.

9 Click Next 2 veces.


No necesitamos cambiar los nombres de la barra de herramientas ni del Acerca de…

10 En la pantalla donde se Especifica la Conectividad, seleccionamos None.


Podemos adicionar un objeto de conexión más tarde.
EnKontrol Fundamentos de Power Builder

11 Click Next dos veces para mostrar la ventana que muestra que esta listo para crear
la aplicación.

Podemos crear un proyecto más tarde.


Esta es la última página del asistente, muestra un resumen de las selecciones que hiciste para
que las revises y uses el botón de Back para regresarte y cambiarlas si es necesario.

12 Asegurate que la caja de comprobación (Check Box) de Generate To-Do List este
seleccionada.

Click Finish.

El Asistente para la plantilla de la aplicación, crea el target pbtutor.pbt y la librería pbtutor.pbl y


configura la aplicación pbtutor como default.

Puedes expandir el árbol del sistema para ver todos los objetos que creó el asistente, observa
que no despliega la extensión del Target, pero muestra el directorio donde se guardo.
EnKontrol Fundamentos de Power Builder

La librería pbtutor.pbl aparece debajo del target, contiene el objeto de aplicación con el mismo
nombre que el target pero se ubica dentro de la librería junto con los demás objetos generados.

Asignar un icono a la aplicación


El icono que se asigne aparecerá cuando minimices la aplicación durante su ejecución.
PowerBuilder incluye el icono de manera automática cuando se crea el archivo ejecutable.
Para especificar el icono seleccionamos las propiedades de la aplicación.

1 Doble-click en el objeto Application pbtutor


o
Boton derecho en el objeto Application pbtutor y seleccionar la opción Edit del menú
pop-up

2 Asegurate que se muestren las Propiedades dentro del Application painter.

Si la vista de las propiedades no se abre, puedes abrirla seleccionando del menú View la
opción Properties. Si la opción de las Properties esta de color gris es porque la ventana de las
propiedades ya está abierta.

3 Click en el botón de Additional Properties.


EnKontrol Fundamentos de Power Builder

Se muestra una ventana con varias pestañas que agrupan las propiedades de la aplicación:

4 Selecciona la pestaña que indica el Icono (Icon).

5 Click en el botón Browse.


Navega al directorio donde está el Tutorial.

6 Selecciona el archivo tutorial.ico y Click en el botón Abrir.

7 Click en el botón OK.

Click en el botón Save de la barra de herramientas o selecciona File>Save.


Click en el botón Close de la barra de herramientas o selecciona File>Close.

Cambia el tamaño de la ventana principal.

Ahora vamos a cambiar el tamaño de la ventana principal de la aplicación. Cuando ejecutes la


aplicación la ventana principal se mostrara en la posición y tamaño que especifiques.

1 Doble-click a w_pbtutor_frame.
El Window painter abre la ventana principal de la aplicación.

2 Selecciona la caja de comprobación de Center en la pestaña General.


EnKontrol Fundamentos de Power Builder

Cuando la aplicación se ejecute, la ventana deberá centrarse.


3 Desplázate hacia abajo y selecciona la opción de normal! En el drop-down list box de
la propiedad WindowState.

4 Click en la pestaña de Other de las propiedades.


Teclea 3000 en la propiedad Width y 2400 en la propiedad Height .
EnKontrol Fundamentos de Power Builder

Presiona el Tabulador.

El tamaño del rectángulo que forma la ventana en la vista de diseño (Layout) cambia a los
valores que definiste, dichos valores están en Unidades de Power Builder (PBUs).

5 Cierra el Windows painter seleccionando la opción File>Close del menú.


Click en Yes cuando te pregunte si quieres salvar los cambios.

Cuando ejecutes la aplicación la ventana principal deberá centrarse y ajustarse al tamaño que
especificaste.

Ejecutar la Aplicación
Hasta este punto la aplicación no hace gran cosa, solo puedes ver los menús y las ventanas
que se crearon basándonos en las opciones que definimos en el asistente.

1 Click en el botón Run de la PowerBar.

Todas las aplicaciones MDI creadas con el asistente tienen un menú y barra de
herramientas con algunos elementos ya listos para usarse y con código pre cargado.
2 Selecciona del menú la opción File>New>Maintain Customers.

La aplicación abre una hoja, muestra en la barra del Titulo el nombre que asignamos en el
Asistente, en el titulo de la ventana aparece también un número 1 que indica el número de
instancias creadas de la ventana, el código que adiciona el número de la instancia a la barra
del título está ubicado en el evento ue_postopen del objeto base de la ventana
w_master_detail_ancestor.

3 Selecciona la opción File>New>Maintain Products.


EnKontrol Fundamentos de Power Builder

Una segunda ventana de la aplicación es mostrada.

4 Selecciona la opción Window>Tile Horizontal.


Las ventanas son organizadas de forma horizontal dentro del frame MDI ubicando la
ventana activa en la parte de arriba.

5 Selecciona la opción File>Toolbars


La aplicación muestra la caja de dialogo para la barra de herramientas

6 Selecciona la opción Floating


La barra de herramientas flota dentro de la ventana MDI, puedes necesitar mover la caja de
dialogo para observar la basrra de herramientas flotante.

7 Selecciona Top.
La barra de herramientas se ubicará en la parte superior del frame.

8 Click en Done para cerrar la caja de dialogo de la barra de herramientas.


EnKontrol Fundamentos de Power Builder

9 Selecciona File>Exit.

La aplicación se cierra y regresas al ambiente de desarrollo de PowerBuilder.

Cuando sales y regresas a Power Builder quizá quieras que Power Builder inicie en el mismo
en el que estaba antes de que salieras, con el espacio de trabajo y los painters donde estabas
trabajando.

10 Selecciona la opción Tools>System Options y elije la pestaña de Workspaces.

11 Asegurate de seleccionar las cajas de comprobación de las opciónes:


Reopen Workspace On Startup y el
Reload When Opening Workspace.
Click OK.
EnKontrol Fundamentos de Power Builder

Lección 2
Construyendo una ventana para validar el acceso
Las Ventanas son la interface principal entre los usuarios y las aplicaciones hechas con
PowerBuilder, las Ventanas pueden mostrar información, requerir información del usuario y
responder a las acciones del teclado y el mouse.

Las Ventanas son objetos separados que creas usando el Window painter, puedes crearlas en
cualquier momento del proceso del desarrollo.

En esta lección:

• Crearas una ventana


• Adicionaras controles a la ventana
• Cambiaras el tab order de los objetos de una ventana
• Codificaras algunos eventos como la Ayuda y el Preview.
• Escribir el script para abrir la ventana

Crear una nueva ventana


Vamos a crear una nueva ventana que permita al usuario introducir su ID y password para
conectarse a la Base de Datos. La ventana a crear es del tipo Response Window, son cajas
de dialogo que requieren información del usuario. Cuando se muestra es la ventana áctiva
(tiene el focus) por lo que ninguna otra ventana de la aplicación estará accesible hasta que el
usuario responda. Podra activar y trabajar en otra aplicación pero cuando regrese la ventana
de respuesta estará activa.

1 Click en el botón New. Se muestra la caja de dialogo


2 Click en la pestaña PB Object.
Selecciona el icono de Window y click en el botón de OK.

El painter de Ventanas se abre, nota que tienes 2 barras de herramientas nuevas la


Stylebar para tipos de letras y formato del texto

y la PainterBar3 para el color y bordes

3 Asegurate que puedas ver los elementos del Layout y las Propieades.
Puedes mostrarlos en el menú View.
EnKontrol Fundamentos de Power Builder

Para recuperar la vista por defaul del Painter


Selecciona la opción View>Layouts>Default.

El rectángulo que ves en el Layout representa la ventana que estas construyendo. Las
propiedades de visible y habilitada (enabled) están por default de la ventana y tiene el tipo de
Main, puedes revisar los tipos de ventanas que puedes definir en Power Builder.

4 Teclea Welcome en la caja de texto asignada para el Titulo de la ventana en la pestaña


de General.

5 Selecciona response! En el drop-down list box del tipo de Ventana.


Asegurate que los check boxes del TitleBar y el ControlMenu estén seleccionadas.
Selecciona el check box de ContextHelp.

La propiedad de ContextHelp adiciona un botón con un signo de interrogación al lado del


botón de cerrar en el titulo de la ventana. Los usuarios pueden seleccionarlo para activar el
evento de ayuda de la ventana, este botón solo es aplicable a las ventanas del tipo de
respuesta (Response), no puede asignarse a una ventana del tipo Main.

6 Para cambiar las dimensiones de la ventana


Click en la pestaña Other de las propiedades.
Teclea 2300 en el ancho (Width) y 1000 en lo alto (Height) .
Presiona la tecla de Tab.

Otros métodos para modificar el tamaño de la Ventana

Puedes usar los controles del tipo spin incrementando o


disminuyendo usando las flechas en lugar de introducir los valores.
De manera alternativa podemos cambiar el tamaño de la ventana si ubicamos el cursor del
mouse en las esquinas o los lados de las ventanas hasta conseguir que el cursor del mouse se
convierta en una flecha de dos puntas, para poder arrastrar la flecha y poder cambiar el tamaño
de la ventana.

7 Selecciona la opción File>Save. Como solo tenemos una librería se selecciona por default

8 Teclea el nombre la ventana w_welcome.


El prefijo w_ es un estándar para las Ventanas (ver Apendice de estándares).
9 (Opcional) Teclea las siguientes líneas en los Commentarios:
Esta es la ventana de Login, La aplicación requiere un ID del usuario y un Password antes
de continuar. Es importante ser explicitos al momento de crear los objetos.

10 Click OK.
PowerBuilder salva la nueva ventana, si expandes el árbol de la librería podras ubicar el
objeto w_welcome.

Adiciona controles a la ventana


Los controles permiten a los usuarios interactuar con los objetos de Power Builder, puedes
definir las propiedades de ess controles y posteriormente adicionar el código (script) para
controlar los eventos y su funcionalidad.

Seleccionando el control del tipo Botón del PainterBar

Al lado del control del tipo Botón hay una flecha al seleccionarla muestra un drop-down list de
los controles de este tipo, algunos de estos controles se describen a continuación.
EnKontrol Fundamentos de Power Builder

Botón Tipo Uso en el tutorial


CommandButton Icono de default.
Picture Para adicionar una imagen a la ventana.
PictureHyperlink No se usara. Provee una liga a un Web Site.
PictureButton No se usara. Es como un CommandButton, pero
muestra una imagen y texto.
StaticText Para adicionar texto estatico a la ventana.
StaticHyperLink Provee la manera de poner una liga a un Sitio Web.

Ahora vamos a modificar la ventana de Login que creamos y le vamos a adicionar algunos
controles y cambiar sus propiedades.

Adicionar un Picture control


1 Selecciona del drop-down list el botón Picture
o
Selecciona la opción Insert>Control>Picture del menú.

2 Click dentro del área de la ventana en la vista de diseño (Layout).


Un control del tipo Picture se muestra en la ubicación seleccionada, al momento que se
adiciono el control, las propiedades cambian y muestran las propiedades del control
seleccionado.

Como borro controles


Si adicionaste un control a la ventana y más tarde decides que no lo quieres, selecciona el
control y presiona la tecla DEL, esto borrará el control y sus scripts.

3 Selecciona el texto p_1 de la caja de texto del Nombre (Name) en las propiedades.
Teclea p_sports en la caja de texto.
El prefijo p_ se usa para los controles Picture

4 Click en el botón con los puntos suspensivos que se ubica delante del nombre de la
imagen (PictureName). Se mostrará una caja de dialogo para seleccionar la imagen.

5 Navega hasta el directorio del Tutorial y selecciona el archivo tutsport.bmp.


EnKontrol Fundamentos de Power Builder

6 Asegurate que el control Picture este seleccionado y click en la pestana de Other en


las propiedades. Teclea 40 en la X y 50 en la Y.

7 Teclea 300 en el Width y 250 en el Height.

Adicionando controles de texto estatico (StaticText controls)

Los usaremos para adicionar etiquetas descriptivas dentro de la ventana.

1 Selecciona el botón de Text del drop-down list de los controls


o
Selecciona la opción del menú Insert>Control>StaticText.

2 Click al lado de derecho de la Imagen para adicionarlo.

3 Click-Derecho en el control del StaticText y selecciona la opción Duplicate del menú


pop-up. Para crear un duplicado del control seleccionado..

4 Duplica nuevamente el control StaticText.


Tienes ahora tres controles de StaticText en la ventana.

5 Ajusta la ubicación de los controles para que haya al menos dos líneas punteadas
entre ellos.

Especifica las propiedades de los controles StaticText

Ahora vamos a especificr las propiedades de las etiquetas y como van a aparecer en la
ventana de Login.

1 Selecciona el primer StaticText que adicionamos haciendo click sobre él.

2 Selecciona el texto st_1 del Nombre en las propiedades y teclea st_welcome.


Ahora el control tiene un nombre más descriptivo y el prefijo st_ es el estándar para el
control StaticText.

3 Selecciona el texto none en la caja de Text y teclea Welcome to SportsWear, Inc.


Si presionas Enter, das click en otro campo o seleccionas otra pestaña el texto que
modificaste es aceptado automáticamente.

4 Click en la pestaña de Font de las propiedades.


Cambia el tamaño del texto (TextSize) a 18 puntos.
EnKontrol Fundamentos de Power Builder

Puedes usar la barra de estilo (StyleBar)


También puedes usar la StyleBar para cambiar los fonts.

5 Ajusta el tamaño del StaticText para que se ajuste al texto introducido.


Para ajustarlo arrastra las esquinas necesarias hasta obtener el tamaño deseado.

6 Selecciona el segundo StaticText que adicionaste.


En el texto de la propiedad Name en la pestaña General teclea st_userid.

En la propiedad Text del control teclea User ID: presiona la tecla de Tab.

7 Selecciona la tercera StaticText.


En el texto de la propiedad Name teclea st_password.

En la propiedad Text del control teclea Password: presiona la tecla de Tab.

Adiciona controles SingleLineEdit


Hay que adicionar dos controles SingleLineEdit en la ventana para permitir que el usuario
capture su user ID y password para conectarse a la Base de Datos. Este tipo de control es una
caja de texto donde el usuario puede introducir información, frecuentemente es usado para
introducir o mostrar datos.

1 Selecciona el botón SingleLineEdit del drop-down list de controles


o
Selecciona la opción Insert>Control>SingleLineEdit del menú.

2 Click a la derecha del control st_userid. Un SingleLineEdit es ubicado donde elegiste.

3 Incrementa el ancho del control (width).

4 Duplica el control usando el menú emergente que se abre cuando das Click-Derecho.

Ajusta la posición de este control para que se ubique justo a la derecha del control
st_password.

Define las propiedades de los controles SingleLineEdit.

1 Selecciona el primer control SingleLineEdit que adicionaste.

2 Cambia el texto de la propiedad Name del control sle_1 por sle_userid.


Quita el texto que asigna por default (none).
El prefijo sle_ es el estandard para los controles SingleLineEdit.

3 Selecciona el segundo control SingleLineEdit.


Teclea sle_password en la propiedad Name.
EnKontrol Fundamentos de Power Builder

Quita el texto asignado por default (none).


Activa la caja de comprobación (check box) de Password para que cuando el usuario
teclee su password aparezcan asteriscos para proteger su privacidad.

Adiciona controles CommandButton

1 Selecciona el control del tipo CommandButton button del drop-down list de controles
o
Seleccionar del menú la opción Insert>Control>CommandButton.

2 Click a la derecha del control SingleLineEdit sle_userid.


Un control del tipo CommandButton es insertado en esa posición.

2 Duplica el control CommandButton.

4 Ajusta la ubicación de los controles dejando un espacio entre ellos.

Definiendo las propiedades de los controles CommandButton

1 Selecciona el primer control CommandButton.

2 Asignale el nombre de cb_ok, teclea OK en la propiedad de Text.


Selecciona el check box de Default.

Con estas acciones cambiamos el nombre por default del control por algo más descriptivo y se
adiciona una etiqueta de texto (OK) al botón. Se activo el Check box de Default para que
cuando el usuario presione la tecla de Enter, se ejecute el evento Clicked de ese botón.

3 Selecciona el segundo botón.


Cambia el nombre del control por cb_cancel.
Asignale el texto Cancel a la propiedad Text.
Selecciona el check box Cancel.

Se activo el check box de Cancel, para que cuando el usuario presione la tecla de Esc, el
evento Clicked de este botón se active.

Cambiar el tab order en la ventana

Cuando se insertan controles en una ventana, PowerBuilder les asigna un orden (Tab Order).
El tab order determina la sequencia en la cual se mueve el focus de control en control cuando
el usuario presiona la tecla de Tab.

1 Selecciona la opción del menú Format>Tab Order.

PowerBuilder muestra el tab order por default. El número en rojo a la derecha de cada control
muestra la posición relativa en el tab order. Los controles con número 0 (Cero) son ignorados
cuando el usuario presiona la tecla Tab.
EnKontrol Fundamentos de Power Builder

2 Click en el número del tab order number para el control sle_userid.


Asignale el número 10.

Puedes cambiar el número del Tab Order cuando se muestre en color azul.

3 Realiza los cambios necesarios para que los controles tengan los siguientes valores:

Click this control Control name Has this value


sle_password 20
cb_ok 30
cb_cancel 40

4 Selecciona la opción del menú Format>Tab Order.


Para volver salir de la edición del Tab Order.

Codificar los eventros de ayuda y vista preliminar de la ventana.

Usando la vista de los Script La vista de los Script tiene tres drop-down list boxes.
El primer drop-down list box muestra la lista de los controles disponibles para el objeto actual
más 2 elementos especiales Functions y Declare. El contenido del segundo drop-down list
box depende de la selección del primer drop-down list box. El tercer drop-down list box
contiene todos los ancestros (ancestor objects) del objeto actual.

1 Doble-click en el SingleLineEdit sle_userid.


El nombre del objeto (sle_userid), aparece en el primer drop-down list box en el Script.

2 Selecciona el evento Help en el segundo drop-down list box.

El evento Help tiene asignado un prototipo base: help (integer xpos, integer
ypos) returns long [pbm_help]

3 Teclea la siguiente línea de código en el área de edición del script:

ShowPopupHelp("pbtutor.hlp", this, 100)

Esta función muestra una ventana emergente de ayuda para el control especificado. Puedes
encontrar el archivo pbtutor.hlp en el directorio donde se ubica el Tutorial. El segundo
argumento se refiere al control para el que se mostrara la ayuda, y el último argumento se
refiere al context ID a mostrar del archivo pbtutor.hlp.

Cuando introduces texto en el Script, nota que PowerBuilder cambia los colores del texto
mostrándolos en diversos colores según el tipo de sintaxis (palabras reservadas, variables y
comentarios)
EnKontrol Fundamentos de Power Builder

4 Selecciona el elemento sle_password del drop-down list box.


Selecciona el evento Help en el segundo drop-down list box.

5 Teclea la siguiente línea en el área del script:


ShowPopupHelp("pbtutor.hlp", this, 200)

6 Selecciona la opción File>Run/Preview


o
Click en el botón Run/Preview en la PowerBar.

Una caja de dialogo es mostrada, asegurate que el tipo de objeto de la opción Objects of
Type sea Windows y selecciona el objecto w_welcome.

Presentación preliminar de la Ventana

Puedes hacer el preview de la ventana sin ejecutar los scripts, selecciona la opción
Design>Preview o usa el botón del PainterBar1, (no te confundas ya que usa el mismo
icono que el objeto Run/Preview de la PowerBar). Esta opción es muy útil en la etapa de diseño
de la ventana, si deseas ver los resultados de los eventos Help y que los scripts se ejecuten
usa el botón Run/Preview.

7 Click OK. Salva los cambios cuando se te pregunte..


8 Click Yes.

La ventana de Login aparecerá de la misma manera cuando ejecutes tu aplicación, si no te


gusta el diseño, puedes cambiar el tamaño, la ubicación y las fuentes de los controles cuando
regreses al área de trabajo del Window painter.

9 Click en el botón con el signo de interrogación ubicado en la barra del titulo de la


ventana de Login. Observa como cambia la forma del cursor del mouse.
Da Click dentro de la caja de texto del control SingleLineEdit sle_userid.
EnKontrol Fundamentos de Power Builder

Aparece el mensaje: Type your user ID here. Este texto esta asociado con el context ID 100
en el archivo pbtutor.hlp.

10 Click en cualquier lugar de la ventana para cerrar el mensaje.


Click dentro de la caja de texto del control sle_password.
Presiona F1.

Se muestra el mensaje: Type your password here. Este texto esta asociado al context ID 200
en el archivo pbtutor.hlp.

11 Click en cualquier lugar de la ventana para cerrar el mensaje.


Click en el botón close en la barra del titulo de la ventana.

Regresas al área de trabajo del Window painter.


Más adelante adicionaras el código para el evento Clicked del botón Cancel para cerrar la
aplicación.

12 Cierra el Window painter dando click en el botón cerrar del PainterBar 1.

Escribe el script para abrir la ventana

Ahora vas a adicionar un script de una línea para que se abra la ventana de Login al inicio de la
aplicación. Podemos cambiar el script en el evento Open del objeto Application;
Como la aplicación fue generada usando el asistente, se genero código en el evento Open de
la aplicación para abrir el frame de las ventanas MDI.
Es necesario desplegar la ventana de Login antes del frame, recordemos que la ventana de
Login es del tipo de respuesta (response window) temporalmente bloqueara la ejecución de los
demás scripts hasta que se valide el acceso a la aplicación.

En este ejercicio aprenderas a:


• Modificar el evento Open del frame de la aplicación.
• Compilar el script

Modifica el evento Open y del frame.

Script generado por el Asistente.


El script del evento Open llama al evento ue_postopen.
El evento ue_postopen registra las hojas (sheet) que se abren con ayuda del administrador de
hojas (sheet manager). El evento es colocado al final de la Cola de Mensajes de la Ventana y
no es procesado hasta que el resto del código (script) del evento Open se ejecute.

1 Abre la ventana w_pbtutor_frame, seleccionando la opción File>Open.


2 Para ver el script selecciona el icono de la barra de herramientas o doble click
dentro del área del objeto.
3 Mueve el cursor al inicio del inicio del Script.
EnKontrol Fundamentos de Power Builder

4 La barra del titulo del script debe ser

5 Asegurate que el evento Open se despliegue en el script.


Observa que el script empieza con comentarios.

Usando comentarios
Un comentario en PowerScript se pone de dos maneras distintas usando dos
diagonales (//) al inicio de cada línea que será comentada o una diagonal y un asterisco (/*)
para indicar el inicio del comentario y un asterisco y una diagonal (*/) al final de la línea o
líneas comentadas, los comentarios son omitidos por el compilador.

6 Click después de los aparentesis de la siguiente línea: this.Post Event ue_postopen ( )


Observa que el evento ue_postopen no tiene argumentos.

7 Presiona Enter 2 veces.


Estas líneas en blanco en el script es para darle legibilidad.

8 Teclea Open the login window en la nueva línea.


Click en el botón para comentarios en la barra PainterBar2.
Dos diagonales aparecen al inicio de la línea transformándola en comentario

9 Mueve el cursor al final del comentario. Presiona Enter para adicionar una línea.
Teclea open (w_welcome). Para llamar la función Open para abrir la ventana de Login.

Accesando a la ayuda de contexto-sensitivo Help

Para accesar a la ayuda de alguna función o palabra reservada (como Open), selecciona la
función o la palabra reservada en el Script y presiona Shift+F1. Puedes abrir la ventana
principal de la yuda presionando en cualquier momento F1.

Compilando el script

Ahora hay que compilar el script que generaste, en este ejercicio vas a usar la opción de
Compile del menú emergente que aparece cuando presionas el botón derecho en cualquier
lugar del área de edición de Scripts.

Manejando errores en los scripts


Cuando hay un error en el script, una ventana de error se muestra debajo de la venta del script
indicando el número de línea, el número de error y el mensaje de error.

Para encontrar un error Click en un mensaje de error y el cursor se ubica en la línea que
contiene el error, después de corregir el error trata de compilar el script nuevamente.

Comentando los errores Como PowerBuilder no salva scripts que tengan errores. Si deseas
salvar un script con errores, seleciona todo el script y da click en el botón de comentarios,
puedes regresar más tarde, quitar los comentarios y resolver el problema.

Selecciona la opción File>Save del menú.


Selecciona la opción File>Close para cerrar el Window painter.
EnKontrol Fundamentos de Power Builder

Lección 3 - Conectandose a la Base de Datos


(BD)
Esta lección muestra como la aplicación se conecta a la EAS Demo DB (Enterprise Application
Sample demonstration database) al momento de la ejecución y como usar el Database Painter
para observar la definición de las tablas y el perfil (profile) para esta base de datos.

En esta lección aprenderas a:

• Observar la base de datos EAS Demo DB


• Ejecutar el Asistente para el Objeto de Conexión (Connection Object)
• Declarar variables globales
• Modificar la información de la conexión
• Terminar los scripts para el login y logout.
• Ejecutar la aplicación

En muchas empresas hay especialistas que le dan mantenimiento a la base de datos, si este
es tu caso, no vas a tener la necesidad de crear y mantener tablas. Puedes tomar la ventaja de
Power Builder para aprender como trabajar con ellas.

Definiendo una fuente de datos. Usa el administrador de ODBC u otras utilerías para
conectarte y definir una BD como fuente de datos para una aplicación.
Puedes accesar al Administrador de ODBC desde la caja de dialogo de DataBase Profiles .
Las definiciones de los ODBC data sources son almacenados en el archivo odbc.ini.

Usando los database profiles para conectarte Una vez que defines un data source, puedes
crear un database profile. Un database profile es un conjunto de parámetros específicos para
establecer una conexión con una fuente de datos o una base de datos en particular.

Los Database profiles proveen la manera mas fácil para administrar las conexiones a las bases
de datos que usas frecuentemente. Cuando estas desarrollando una aplicación puedes
cambiar de database profiles para conectarte a un data source diferente.

Cuando se conecta a la Base de Datos PowerBuilder puede establecer una conexión a la


base de datos en cualquiera de estos ambientes: al momento del diseño o al tiempo de la
ejecución.
PowerBuilder se conecta a una base de datos cuando abre ciertos painters, cuando compilas o
salvas un Script que contenga secuencias SQL incrustadas, o cuando ejecutas una aplicación
que accese a la base de datos.

Se usará el Database painter, para:

• Crear, alterar y dar de baja tablas


• Crear, alterar y dar de baja llaves primarias y foráneas (primary and foreign keys)
• Crear y dar de baja indices
• Definir y modificar atributos extendidos de las columnas
• Dar de baja vistas

Observa el database profile para la Base de Datos EAS Demo DB


Si instalaste PowerBuilder con sus opciones estándares, están listos el data source y el
database profile para la EAS Demo DB Database es una BD de Adaptive Server Anywhere
accesada a través de ODBC.

1 Click en el botón Database Profile


o
Selecciona la opción Tools>Database Profile del menú.
EnKontrol Fundamentos de Power Builder

PowerBuilder muestra una caja de dialogo con todas las interfaces instaladas para las bases
de datos y el profile para cada interface, puedes expandir o contraer los nodos del tree view
dando click en los signos + o doble click en los íconos.

2 Expande el nodo ODB ODBC y selecciona EAS Demo DB V10.

Vamos a definir el data source, selecciona ODB ODBC y da click en el botón NEW.
En la caja de dialogo, selecciona del drop-down list del data source la opción EAS Demo DB
V10 y teclea en el nombre del profile (Profile Name) EAS Demo DB V10, en el user ID dba y
sql para el password y da click en el botón OK.

3 Click Edit. Para mostrar la página de conexión del Database Profile

4 Selecciona la pestaña de Preview.


La sintaxis del PowerScript connection para el profile seleccionado se muestra en esta pestaña
si cambias alguna de las opciones de la conexión la sintaxis cambia.

5 Click en el botón Test Connection para probar la conexión.

Un mensaje te avisara cuando la conexión a sido exitosa.


EnKontrol Fundamentos de Power Builder

Si el menssje te dice que la conexión no ha sido exitosa.


Cierra la caja del mensaje y verifica que esta correcta la información en la pestaña de conexión
(Connection), Checa la configuración del data source en el ODBC Administrator.

6 Click OK para cerrar el mensaje


Click Cancel para cerrar el Database Profile

Que pasa cuando te conectas Para ver las definiciones de las tablas tienes que conectarte a
la Base de datos, en el ambiente de desarrollo PowerBuilder escribe los parámetros de
conexión en el registro de Windows.

Cada vez que te conectas a una base de datos diferente, los parámetros de la nueva conexión
se sobre escriben en el registro de Windows.

Cuando abres un painter de PowerBuilder que accese a la base de datos, se conecta de


manera automática a la última base de datos usada, para hacer esto PowerBuilder lee el
registro para determinar la base de datos a usar.

1 Click en el botón Database .


PowerBuilder se conecta a la base de datos y abre el Database painter, en la barra del titulo
podemos identificar la base de datos activa.

2 Expande el nodo ODB ODBC y el nodo EAS Demo DB V10


Observa todas las carpetas que hay para ese nodo

3 Expande la carpeta Tables.


Observa la lista de tablas de la Base de Datos
EnKontrol Fundamentos de Power Builder

Los nombres de las tablas pueden tener un prefijo


Los nombres de las tablas pueden tener un prefijo como dba o dbo depende del LoginID que
usaste, puedes ignorar este prefijo.

4 Localiza la tabla customer y da click en el botón derecho del mouse.


Selecciona la opción Add To Layout del menú pop-up.
o
Arrastra la tabla customer a la vista de Object Layout

Arrastrando un objeto de una vista a otra.


Cuando inicias el arraste de un objeto de una vista a otra, el cursor del mouse cambia a un
circulo de prohibido si continuas moviendo el cursor a una vista que pueda aceptar el objeto, el
circulo de prohibido cambia a un indicador con una flecha en un cuadro pequeño, cuando
observes este símbolo puedes soltar el objeto.

5 Repite el paso anterior pero ahora con la tabla product.


Puedes ampliar las vistas como lo requieras, siguiendo los métodos de Windows.

Observando los tipos de datos, comentarios, llaves e indices


En la vista Object Layout, puedes ver una descripción de cada columna como los iconos para
las llaves (Keys) y los índices.
Si no logras ver esto, da click derecho en cualquier área desocupada de la vista y selecciona:
Show Comments, Show Referential Integrity, y Show Index Keys del menú pop-up.
Si seleccionas Show Datatypes, podras ver los tipos de datos de cada columna en las tablas
seleccionadas.

6 Click-Derecho en la barra del titulo de la tabla customer y selecciona la opción Alter


Table
o
Click-Derecho en la tabla customer del árbol y selecciona la opción Alter Table

En la vista se muestra la definición de las columnas de la tabla.

7 Click-Derecho en una columna de la tabla customer en la vista Object Layout y


selecciona la opción Properties.
La vista Properties es también llamada vista de detalle de objetos (Object Details).

La barra del titulo y los encabezados de las pestañas para el detalle de los objetos cambia
dinámicamente dependiendo del objeto seleccionado. La barra del titulo nos muestra el tipo de
objeto, la conexión a la base de datos y el identificador del objeto.
La vista del detalle de los objetos tiene 5 pestañas: Propiedades Generales, información del
encabezado columna y las otras para atributos extendidos.

Acerca de los atributos extendidos


EnKontrol Fundamentos de Power Builder

PowerBuilder almacena información sobre los atributos extendidos en tablas del sistema de la
base de datos, los atributos extendidos incluyen encabezados y etiquetas para las columnas,
sus valores iniciales, reglas de validación, formatos de visualización, puedes definir nuevos
atributos extendidos o cambiar los existentes.

8 Cierra el Database painter.

Ejecutar el asistente para el Objeto de Conexión.

Ahora vamos a ejecutar el Asistente para el objeto de Conexión para crear un administrador de
servicios de conexión, el cual vas a usar para establecer la conexión a la base de datos al
momento de la ejecución, el administrador de servicios de conexión es un objeto del usuario no
visual, por que no tiene una representación gráfica; es un objeto del usuario por que es un
objeto personalizado.

1 Click en el botón Lista de Tareas (To-Do List) .


Observa el To-Do List generado por el Asistente de Aplicaciones.

2 Doble-click para ejecutar el asistente del Objeto de Conexión


o
Click-derecho en la opción y seleccionar Go To Link del menú emergente.
Esta es una de las tareas que necesitas para terminar la aplicación, también puedes usar la
lista para hacer comentarios propios o de otros desarrolladores que estén trabajando en el
proyecto. Otra forma de ejecutar el asistente del Objeto de conexión es desde la página de los
EnKontrol Fundamentos de Power Builder

objetos de Power Builder, del menú selecciona File-New-icoono del asistente del objeto de
conexión.

La página inicial del asistente te explica que puedes hacer.

3 Click Next hasta que aparezca la página para elegir el perfil de la base de datos.
Debes de aceptar las opciones por default para la ubicación de los objetos generados
(pbtutor.pbl) y de las opciones de conectividad a la base de datos (SQL).

La página de los perfiles de conexión a la Base de Datos (Database Connection Profile) lista
todos los perfiles almacenados en el registro.

4 Selecciona EAS Demo DB V10 de la lista de perfiles de la Base de Datos.

5 Click Next hasta que estes listo para crear la conexión.

Acepta los parámetros de default para los siguientes elementos:

Página Opción Valores por Defecto


Specify Connectivity Información como Archivo INI de la aplicación
Source Info fuente de conexión

Objeto del servicio n_pbtutor_conncetservice


De conexión

Name Application Archivo INI pbtutor.ini


INI File para la aplicación

El asistente crea un servicio de conexión (n_pbtutor_connectservice)


Si cambias una variable de instancia en este objeto debes cambiar en el registro o en el script
la información de la fuente de conexión, en caso contrario, el archivo pbtutor.ini —creado por el
asistente—es usado para que la aplicación pueda concectarse.

La última ventana del asistente contiene un resumen con las opciones que seleccionaste:
EnKontrol Fundamentos de Power Builder

6 Click Finish.
El asistente creo on objeto de sericio de conexión que se abre en el painter para Objetos del
usuario (User Object painter), en el árbol de objetos encontraras el servicio
n_pbtutor_connectservice.

7 Cierra la lista de las tareas (To-Do List).

Declarar variables globales

A continuación debes de examinar el administrador de servicios de conexión y crear una


variable global para instanciarlo, una variable global es disponible para todos los objetos de la
aplicación.

En aplicaciones mas complejas, puedes preferir hacer referencia al administrador de servicios


de conexión con variables locales, esto liberara mas memoria tan pronto como la variable local
salga de su ámbito, en este caso en particular vamos a mantener al administrador de servicios
de conexión disponible mientras la conexión a la base de datos este abierta.

Estableciendo una conexión Para hacer posible que una aplicación al momento de su
ejecución,se conecte a la base de datos, el administrador de conexiones llama a una función
generada por el asistente para establecer los parámetros del objeto de transacción que servirá
como área de comunicaciones entre la aplicación y la base de datos.

SQLCA Transaction object El administrador del servicio de conexiones usa un objeto no


visual integrado al sistema llamado objeto SQL Communications Area (SQLCA- Área de
Comunicación con SQL) es el objeto de transacciones por default, El objeto SQLCA tiene
muchas propiedades (incluye nombre de la base de datos, un login ID, y contraseña). Si una
aplicación se comunica con varias bases de datos, puedes crear tantos objetos de transacción
como necesites, uno por cada conexión a base de datos.

Que se requiere y que no


Debes tener un objeto de transacción conectado a la base de datos, el Administrador del
Servicio de Conexión no es requerido, pero lo usaremos por que generamos con el Asistente
un script con las propiedades del objeto de transacción, en caso contrario tenemos que generar
código para esta acción en la aplicación.

1 Abre el objeto n_pbtutor_connectservice en el User Object painter.

2 Asegurate que el n_pbtutor_connectservice este seleccionado en el primer dropdown


EnKontrol Fundamentos de Power Builder

list box. El evento Constructor debe de estar seleccionado en el segundo drop-down list
box.

El script llama a la función of_GetConnectionInfo para obtener información de la conexión,


vamos a echarle un vistazo al script de esta función.

3 Selecciona la opción Functions en el primer drop-down list box.


Selecciona of_GetConnectionInfo en el segundo drop-down list box.

El script para esta función pasa información de la conexión a la base de datos al evento
Constructor del Administrador de Servicios de Conexión, la información que pasa depende de
una variable de instancia. En este caso, el valor de is_connectfrom variable es 1. La variable
de instancia esta disponible ara todas las funciones y eventos del objeto
n_pbtutor_connectservice.

Por que la variable is_connectfrom es 1, el Administrador del Servicio de Conexión a Base de


Datos observa la sección identificada como archivo INI para obtener información de la conexión
a la Base de Datos, el archivo pbtutor.ini se creo con el Asitente de Conexión.

Posteriormente se modificará el archivo pbtutor.ini y la función of_GetConnectionInfo para


asegurarnos que la información que se proporcione en la Ventana de Login para el ID y
password se ubique en el archivo .INI.

4 Selecciona of_ConnectDB en el segundo drop-down list box.


Este es el Administrador de Servicios de Conexión, se conecta a la base de datos usando el
objeto de transacción SQLCA. Nota que el script generado valida el resultado de las llamadas a
las funciones en este caso muestra un Mensaje si falla la conexión a la Base de Datos.

5 Selecciona of_DisconnectDB en la segunda drop-down list box.


Esta es la función del Administrador del servicio de conexión que se desconecta de la base de
datos, esta función debe de llamarse en el evento Close de la Aplicación.

6 Click en la pestaña Declare Instance Variables.


Asegurate que Instance Variables este seleccionada en el segundo drop-down list box.
EnKontrol Fundamentos de Power Builder

Verificar que la variable de instancia is_connectfrom tiene asignado el valor de 1.

7 Selecciona las variables globales (Global Variables) del segundo drop-down list box.
Arrastra el objeto n_pbtutor_connectservice del árbol del sistema a la vista del script.
El arrastarar los objetos al área del script ahorra tiempo y ayuda a evitar errores de
captura.

8 Completa la línea donde ubicaste el nombre del objeto como se indentica:


n_pbtutor_connectservice gnv_connect
A pesar de que declaramos esta variable en la vista del script del objeto de usuario
n_pbtutor_connectservice, por ser del tipo global estará disponible en cualquier
lugar de la aplicación.

Reglas para asignar nombres a variables


Para que los scripts que generas se entiendan fácilmente, es recomendable apegarse a los
estándares para asignar nombres de variables. Los estándares recomendados para cada
variable es: 2 o 3 letras seguidas de un guión bajo (_). La primera letra del prefijo identifica el
alcance (scope) de las variables:

Prefijo Tipo de variable


l Local
s Shared
g Global
i Instance
a Argumentos

La siguiente letra o letras identifican el tipo de datos (s para String, nv para objeto no-visual,
etc).
Si deseas consultar la lista de todos los prefijos, consulta el anexo “Estandares para asignación
de Nombres”.

9 Click en el botón de Salvar


o
Seleccionar File>Save del menú.
PowerBuilder compila el script y lo salva.

Modifica la información de la conexión


Podemos ahora invocar al Administrador del Servicio de Conexión para establecer una
conexión con la Base de Datos, solo se abrirá dicha conexión si el usuario introduce un ID y un
password válido en la ventana de Login, por lo tanto deberas adicionar una llamada al servicio
de conexión al evento Clicked del botón OK, y sustituir la información que el usuario
proporcione por la que esta almacenada en el archivo pbtutor.ini

Antes de hacer esto, debes eliminar o comentar todas las llamadas al ProfileString que realiza
el Administrador del servicio de conexión para obtener el ID y password del usuario del archivo
.INI
Entonces podemos modificar los parámetros del área DBParm en el archivo pbtutor.ini, por
que este tiene codificado los valores del ID y password del usuario que serán copiados al
archivo pb.ini.
EnKontrol Fundamentos de Power Builder

Modifica la función of_GetConnectionInfo


Abre el script de la función of_GetConnectionInfo , recuerda el ejercicio anterior, vamos a
comentar las funciones que recuperan la información del ID y password del usuario:

1 Selecciona y convierte en comentarios las líneas siguientes:


as_userid = ProfileString (...)
as_dbpass = ProfileString (...)

Los cuatro parámetros de la función ProfileString son: Nombre del archivo .INI o variable,
Sección del archivo INI, llave del archivo INI, y el valor por default a ser usado si el archivo INI,
la sección o la llave son correcta.

2 Asegurate que el user ID y el Password no tengan información en el archivo pbtutor.ini

3 Click en cualquier línea que inicie con as_dbparm = ProfileString ( ... ) y comentala
El parámetro DBParm en el archivo ptutor.ini incluye los valores del user ID y password así
como el nombre de la base de datos.

No uses estos valores, en su lugar asigna los parámetros del DBParm con la información del
user ID y password que el usuario proporcione.

El parámetro SQLCA DBParm


A pesar de que el user ID y password no son requeridos por el ConnectString del DBParm, si
los asignamos en ConnectString van a sobreescribir cualquier valor de la definición del data
source de la base de datos del Adaptive Server Anywhere. Para este DBMS, los parámetros
del DBParm toman prescedencia sobre los parámetros UserID y DBPass del SQLCA.

4 Salva los cambios dando Click en el botón de Salvar.


Cierra el painter dando Click en el botón de Close.

Invocando al Administrador de servicios de conexión.

Un objeto es considerado padre de los objetos que se le adicionan. La ventana de Login es


padre del botón OK. Cuando hacemos referencia a un objeto padre en un script, es la mejor
manera de calificar al padre en lugar de nombrar al objeto de manera explicita. Esto permite
que el código pueda ser reutilizado más fácilmente por controles ubicados en un objeto
diferente. En el script para el evento Clicked refiérete a la ventana de Login, como padre.

1 Abre la ventana w_welcome.

2 Abre el script del botón cb_ok

3 Teclea las siguientes líneas, explican brevemente lo que va a realizar este evento:

// 1) Crea una instancia del Objecto de Transacción


// 2) Cierra la ventana de Login si la conexión es exitosa

4 Teclea la siguiente asignación debajo de los comentarios.


gnv_connect = CREATE &
n_pbtutor_connectservice
EnKontrol Fundamentos de Power Builder

Si quieres combinar el script en una sola línea, puedes eliminar el ampersand (&), este carácter
indica que la línea del script continua en la siguiente línea.

La expresión CREATE crea una instancia del objeto de transacción SQLCA con los valores que
extrae la función of_GetConnectionInfo del archivo pbtutor.ini. Excepto el user ID y el password
por que en pasos anteriores comentamos esas líneas.

Para una lectura más fácil del código generado puedes adicionar líneas en blanco entre los
comentarios la expresión de asignación de la variable gnv_connect.

5 Teclea las siguientes líneas después de la expresión CREATE:


IF gnv_connect.of_ConnectDB ( ) = 0 THEN
Close (parent)
END IF

La función of_ConnectDB conecta a la aplicación a la Base de Datos. Como vimos en la


sección anterior si la conexión falla (el SQLCode es diferente de 0) y un mensaje de error es
mostrado, en caso contrario la conexión es exitosa cuando of_ConnectDB regresa un 0 (cero),
para este caso la ventana padre del botón cb_ok ((w_welcome) es cerrada.

6 Compila el script, debe de compilarse sin errores, si no es el caso revisa el código.

Complete the login and logout scripts

Debemos de adicionar código al evento Clicked en el objeto de transacción con la información


que proporcione el usuario. También debemos de adicionar código al botón de Cancel en su
evento Clicked para que la aplicación se cierre.

Minimizando los errores de captura en los scripts.


Si tu oprimes el botón derecho del mouse en el área deI script, aparece un menú que incuye la
opción Paste Special. Puedes usar estos comandos para insertar templates predefinidos en el
script, reduciendo con esto errores de captura.

Podras también utilizar la opción de acompletar código de manera automática con el


AutoScript.

Configurando las teclas rápidas para el AutoScript


Cuando generas scripts, el AutoScript te proporciona ayuda para acompletar la expresión,
desplegando una lista con los elementos apropiados para ser insertados en la ubicación del
cursor.

1 Selecciona la opción Design>Options del menú y click en la pestaña de AutoScript.

2 Asegurate que todas las cajas de confirmación de los tres primeros bloques estén
seleccionadas.
EnKontrol Fundamentos de Power Builder

3 Asegurate que las opciones Activate Only After A Dot y Automatic Popup no estén
seleccionadas y click en OK.

4 Selecciona la opción Tools>Keyboard Shortcuts del menú y expande el nodo Edit.

5 Desplazate hacia abajo y selecciona la opción Activate AutoScript.


Click en la caja de texto de Press Keys For Shortcut box, y presiona Ctrl+space.

6 Expande el nodo Edit>Go To y selecciona Next Marker.


Teclea en la caja de texto Ctrl+M y click en OK.
EnKontrol Fundamentos de Power Builder

Ahora cada vez que quieras ayuda para acompletar código presiona Ctrl+space y aparecerá
una lista con las opciones posibles, Si deseas pegar una declaración o función que este
comentada con Ctrl+M te ubicas en el próximo comentario.

Adicionar código al evento Clicked del botón OK

1 Abre el script para el evento Clicked del control cb_ok.

2 Click antes de la sentencia IF-THEN y presiona Enter


Teclea las siguientes líneas de código:
//Local variable declarations
string ls_database, ls_userid, ls_password
//Assignment statements
ls_userid = Trim ( sle_userid.text )
ls_password = Trim ( sle_password.text )
ls_database = "ConnectString='DSN=EAS Demo DB V105;"

Con estas líneas declaras variables locales y les asignas valores. No insertes espacios en
blanco a los signos de igual (=) en el texto de ConnectString. No te preocupes de que en la
línea solo haya un apostrofe en el próximo paso vamos acompletar el script para la conexión.

Usa el AutoScript para ayudarte a codificar las declaraciones


Cuando estes tecleando nombres de variables antes del guión bajo (_) presiona Ctrl+space, el
AutoScript te mostrará una lista con las posibles opciones, usa las flechas para moverte entre
las opciones y con la tecla de tab puedes pegarla en el script. Si ya tecleaste el guión bajo y la
primera letra de la variable después de el, presiona Ctrl+space, AutoScript pegara el elemento
correcto directamente en el script.

La función Trim elmimina todos los espacios de los valores que se capturen en los controles
SingleLineEdit del user ID y password en la ventana de Login y que se pasan como
argumentos a la función.

3 Click después de las líneas que adionaste y antes de la sentencia IF-THEN.


Teclea las siguientes líneas:
//Instantiate with user-entry values
SQLCA.userid = ls_userid
SQLCA.dbpass = ls_password
SQLCA.dbparm = ls_database + "UID=" + ls_userid + ";PWD=" + ls_password + "'"

Estas líneas inicializan los parámetros SQLCA con valores de los SingleLineEdit.
Las líneas se adicionaron al script después de la sentencia CREATE para garantizar que se
utilicen estos valores antes de intentar hacer la conexión cuando llamemos a la función
of_ConnectDB
EnKontrol Fundamentos de Power Builder

4 Compila el script, no debe de tener erorres si los hubiese revisa el código.

Adiciona código al evento Clicked del botón Cancel


Vamos a adicionar el código necesario para que al momento de presionar el botón Cancel se
termine la ejecución de la aplicación.

1 Doble-click en el botón Cancel


o
Selecciona cb_cancel en el primer drop-down list box del script.

2 Teclea esta línea:


HALT
Esta declaración termina inmediatamente con la ejecución de la aplicación, cuando el
usuario da click en el botón Cancel en la ventana de Login.

3 Salva los cambios y cierra el painter

Adiciona el código para el evento Close de la aplicación

Como el Administrador del servicio de conexión fue declarado en una variable global, no es
necesario instanciarlo nuevamente, esta disponible en todo momento y durante la ejecución de
la aplicación por esto vamos a llamar a la función que nos desconectará de la Base de Datos y
cerrará su conexión.

1 Doble-click en el ícono de la aplicación pbtutor en el System Tree.

2 Selecciona el evento close ( ) returns (none) del segundo drop-down list box

3 Teclea las siguientes líneas para en evento Close y comentalas:


Application Close script:
Disconnect from the database

4 Teclea la siguiente línea después del último comentario


gnv_connect.of_DisconnectDB ( )
EnKontrol Fundamentos de Power Builder

Liberamos memoria al poner todas las variables globales en nulos (null)


Si este no fuera un evento Close para la aplicación y no necesitaras más una variable de
instancia, puedes liberar la memoria que ocupa invocando a la función SetNull.
PowerBuilder tambén provee una instrucción DESTROY para destruir una instancia de un
objeto.
No debes de usar el DESTROY para variables globales o locales para objetos no visuales,
PowerBuilder desecha automaticamante cualquier residuo de variables locales cuando salen
de su ámbito de acción.

5 Compila el Script y cierra el painter.


Un mensaje te preguntará si quieres salvar los cambios realizados.

6 Click Yes.

Ahora vamos a ejecutar la aplicación

1 Click en el botón Run de la barra de herramientas.


2 Teclea dba en la caja de texto del User ID.
Teclea sql en la caja de texto del Password.

El texto del password se muestra con asteriscos por que cuando establecimos el tab order
seleccionamos la opción de Password.

3 Click OK.
Se establece la conexión a la base de datos y el MDI Frame de la aplicación se muestra.

Si introduces un user ID o password invalido


Se muestra la caja de dialogo de conexión al Adaptive Server Anywhere (ODBC Configuration)
donde tienes una segunda oportunidad para introducir un user ID y password valido, Si das
Click en el botón Test Connection en la caja de dialogo del ODBC sin cambiar la información se
mostrará un mensaje indicándote que el user ID o password no son correctos.

4 Selecciona la opción File>Exit del menú.


La aplicación termina y regresas al ambiente de desarrollo.
EnKontrol Fundamentos de Power Builder

Lección 4 – Modificando la ventana Predecesora (Ancestor)


En esta lección crearemos una ventana que se heredará de la ventana base (basesheet)
generada con el Asistente de aplicaciones. Le adicionaremos objetos predefinidos por el
usuario que contienen controles Datawindow. Crearemos nuevas ventanas a partir de esta
ultima (w_customers and w_products) y finalmente nos aseguraremos que estas ventanas
tengan el tamaño que definimos en su diseño al momento de su ejecución.

Primero vas adicionar una librería que contenga los objetos predefinidos del usuario con
controles DataWindow, en esta lección aprenderás a:

• Adicionar una librería a la ruta de búsqueda.


• Crear una ventana predecesora
• Adicionar eventos de usuario y event scripts
• Adicionar scripts para recuperar datos para DataWindow controls
• Ajustar el tamaño de las ventanas al momento de ejecución

Adicionar una librería a la ruta de búsqueda

Debemos de adicionar todas las librerías de las que dependa la aplicación.


La librería que vamos adicionar a la aplicación contiene algunos objetos predefinidos.

1 Click-Derecho al target pbtutor (No al objeto de aplicación pbtutor)


El target pbtutor contiene el pbtutor.pbl y la aplicación pbtutor.
2 Selecciona la opción Properties del menú pop-up.
3 Asegúrate que la pestaña Library List este seleccionada.
Click Browse. Se muestra la caja de diálogo para que selecciones la Librería
4 Navega a la carpeta donde se ubica el tutorial.
Selecciona tutor_pb.pbl y click en Open.
Regresaras a la Lista de las librerías observa que el archivo tutor_pb.pbl fue incluido.

5 Click OK.
EnKontrol Fundamentos de Power Builder

Crear un nuevo Predecesor de ventana

Los objetos del usuario que vamos a necesitar están incluidos en el archivo PBL que acabamos
de adicionar, es un control personalizado Datawindow incluye scripts y realiza el chequeo
básico a errores de la base de datos.

Porque un objeto de usuario


En PowerBuilder puedes construir objetos de usuario para realizar procesos que uses
frecuentemente en tus aplicaciones, una vez que lo tengas definido puedes reusarlo cuantas
veces lo necesites.
En este ejercicio:
• Crearas una ventana heredada
• Adicionaras un DataWindow control para el DataWindow Maestro
• Adicionaras un DataWindow control para el DataWindow Detalle
• Veras los scripts heredados del user object

Creando una ventana heredada

1 Selecciona la opción File>Inherit del menú. Aparece una caja de diálogo


2 Selecciona la librería pbtutor.pbl y en la lista de los tipos de objetos (Objects of Type)
selecciona Windows.
3 Selecciona w_pbtutor_basesheet de la lista y click OK.
4 Selecciona File>Save Window, y asignale el nombre w_master_detail_ancestor.
5 (Opcional) Teclea los siguients Comentarios: Nuevo ancestro para las ventanas
w_customers y w_products
6 Selecciona la librería pbtutor.pbl de la lista de librerías y click OK.
Cierra la nueva ventana ancestro (File>Close).
No puedes crear una ventana descendiente si su ancestro está siendo editado en el
Painter.
7 Selecciona la opción File>Inherit del menú.
8 Selecciona la librería pbtutor.pbl y de los objetos tipo Windows.
Selecciona w_master_detail_ancestor y click OK.
9 En las propiedades sobre la pestaña de General teclea Maintain Customers en la caja
de
texto del Tag
Selecciona la opción File>Save As del menú y selecciona la ventana w_customers .
10 Cambia los comentarios a: Customer sheet window inheriting from
w_master_detail_ancestor.
11 Cuando pregunte si queremos reeplazar la ventana existente click en Yes
La ventana es heredada de w_master_detail_ancestor en lugar de w_pbtutor_basesheet.
12 Repite los pasos 7-11, with the following modifications:
9 Teclea Maintain Products en el Tag de las Propiedades. Opción File>Save As del
menú y selecciona la ventana w_products
10 Cambia el texto de los comentarios a: Product sheet window inheriting from
w_master_detail_ancestor.
11 Reemplaza la ventana w_products window
13 Cierra las nuevas ventanas de w_customers y w_products.
No podrás abrir una ventana ancestor si alguna ventana descendiente esta en el painter.
14 Del menú de PowerBuilder, selecciona la opción Run>Full Build Workspace.
Esta acción deberá reconstruir el área de trabajo (workspace) después de que cambiamos
la jerarquía de la herencia y antes de empezar a modificar la ventana Ancestro, puedes
observar el resultado de la reconstrucción en la ventana de salida (Output window) se muestra
en la parte baja de la ventana principal.
15 Cierra la ventana de salida (Output window).
EnKontrol Fundamentos de Power Builder

Adicionar un DataWindow control para el DataWindow Maestro


Adiciona un DataWindow control (objeto de usuario ya definido u_dwstandard) a la ventana
w_master_detail_ancestor para que sea el DataWindow Maestro para el Ancestro y sus
descendientes.

Como creó un objeto de usuario como u_dwstandard


Puedes crear un objeto de usuario basándote en un control DataWindow, dando click en el
botón New, después selecciona de la pestaña PB Objects el ícono Standard Visual después
OK.

Esto abrirá una caja de dialogo con los tipos visuales estándares de PB, en seguida selecciona
el tipo Datawindow.

1 Abre la ventana w_master_detail_ancestor.


Esta ventana al ser generada por el Asistente le adjunto el menú m_pbtutor_sheet. El menú
que va a utilizar la ventana se indica en las propiedades de la ventana.
2 Checa que la vista de Diseño (Layout) este visible en el painter.
3 Expande la librería tutor_pb.pbl.
Arrastra el objeto u_dwstandard al área de diseño de w_master_detail_ancestor
4 Expande la ventana hasta que el control este completamente visible dentro de ella.
PowerBuilder crea un DataWindow que hereda su definición del user object.
5 Selecciona el control que adicionaste.
Unos pequeños cuadros negros en las esquinas indican que el control esta seleccionado, la
vista de las propiedades muestran las propiedades del objeto seleccionado.
6 Selecciona el texto dw_1 del nombre del objeto y teclea dw_master.
Selecciona la opción VScrollBar.
PowerBuilder adicionara la barra de desplazamiento vertical al control.
El prefijo dw_ es el estándar para el control DataWindow.
EnKontrol Fundamentos de Power Builder

Adiciona un DataWindow control para el DataWindow Detalle

1 Agranda la ventana para que haya espacio para el segundo datawindows ubícalo
debajo del primero.
Arrastra u_dwstandard abajo del control dw_master

2 Mueve el DataWindow para que este completamente visible dentro de la ventana.


3 Selecciona el control que insertaste.
4 Reemplaza el texto del nombre dw_1 por dw_detail.

Revisa las scripts heredados del user object u_dwstandard.

1 Double-click en dw_detail
Se abre por default la vista de los scripts en el evento ItemChanged, los eventos que no
tienen script son separados de los que si tienen, son ordenados alfabéticamente y
ubicados hasta abajo de la lista de eventos. Abre el evento dberror observa que tiene al
lado izquierdo un ícono de color rosa que indica que tiene código heredado del
ancestro (u_dwstandard).

3 Selecciona la opción Edit>Go To>Ancestor Script del menú


o
Selecciona u_dwstandard en el tercer drop-down list box.
PowerBuilder muestra el script del evento DBError.
El script Ancestro es de solo lectura cuando accedamos desde el script de sus
descendientes.

4 Desplázate hasta encontrar la lógica para el manejo de errores de la Base de Datos


El script suprime los mensajes de error que normalmente despliega el evento DBError.
En su lugar muestra un mensaje apropiado para cada error que ocurra, haciendo llamadas
a eventos del usuario que fueron declarados en el Ancestro.

5 Selecciona del menú Edit>Go To>Descendant Script


or
Click en Boton derecho en cualquier área del script y selecciona Go To>Descendant
Puedes también seleccionar del tercer drop-down list box w_master_detail_ancestor

Adicionando eventos del usuario y scripts.

Las ventanas, los objetos del usuario y los demás controles tienen eventos predefinidos y
asociados a ellos, muchas de las veces estos objetos predefinidos son todo lo que necesitas
pero hay ocasiones en que es necesario crear tus propios eventos, estos son conocidos como
eventos del usuario (user events).

Cuál es el propósito de los eventos del usuario. Una de las razones es reducir código en
situaciones donde una aplicación brinde diversas formas para realizar una tarea en particular.

Por ejemplo, para actualizar la base de datos podemos dar click en un botón, seleccionar una
opción del menú o cerrando una ventana, en lugar de escribir código para actualizar la base de
EnKontrol Fundamentos de Power Builder

datos en cada uno de esos lugares, puedes definir un objeto de usuario y disparar (trigger) este
evento en cada lugar donde se requiera actualizar la base de datos.

Vamos a definir algunos eventos del usuario para recuperar, insertar, actualizar y borrar
información de la base de datos.

1 Selecciona w_master_detail_ancestor en el primer drop-down list box


2 Selecciona del menú Insert>Event
o
Selecciona la opción New Event del segundo drop-down list box.
Se muestra la ventana prototipo para definir un nuevo evento.

El primer botón a la derecha del tercer drop-down list box es un interruptor que muestra o
esconde la ventana de Prototipos.

3 Teclea ue_retrieve en el nombre del evento.


Click dentro del área del script y teclea estas líneas:
IF dw_master.Retrieve() <> -1 THEN
dw_master.SetFocus()
dw_master.SetRowFocusIndicator(Hand!)
END IF
Puedes usar el AutoScript en lugar de teclear

El script ejecuta la función Retrieve y pone la información que recupero en el DataWindow


control dw_master si la operación es exitosa, ubica el focus en el primer renglón del
DataWindow y establece una mano como indicador del renglón actual

Si el retrieve falla PowerBuilder dispara el evento DBError la lógica se maneja en el objeto


u_dwstandard como lo vimos en el ejercicio anterior.
4 Salva los cambios File>Save

En la ventana de definición del prototipo da Click-Derecho y selecciona la opción New


Event
Debe mostrar otra ventana Prototipo vacía para un nuevo evento del usuario.
EnKontrol Fundamentos de Power Builder

5 Repite los pasos 3 y 4 para las siguientes entradas:

Evento Script
ue_insert dw_detail.Reset()
dw_detail.InsertRow(0)
dw_detail.SetFocus()

ue_update IF dw_detail.Update() = 1 THEN


COMMIT using SQLCA;
MessageBox("Save","Save succeeded")
ELSE
ROLLBACK using SQLCA;
END IF

ue_delete dw_detail.DeleteRow(0)

Que hacen los scripts

ue_insert Limpia el Datawindow dw_detail


Inserta un renglón al final (0 – ultimo renglón)
Activa el focus en dw_detail

ue_update Si la función Update() regresa un 1


Guarda los cambios a la BD
Muestra mensaje
En otros casos
No realiza cambio alguno.
Fin del Si

ue_delete Elimina el renglón actual (argumento 0)

Los eventos ue_insert y ue_delete trabajan con los buffers del DataWindow, no en la base de
datos, cuando estos eventos son disparados, el renglón no se inserta o se borra de la base de
datos al menos que la función Update sea ejecutada (el evento ue_update llama a esta función)

6 Salva los cambios realizados

Adiciona los scripts para recuperar información a los DataWindow

Los scripts que adicionaste no tienen ningún efecto sobre el dw_master, solo necesitamos
disparar este evento para que puede recuperar la información de la base de datos. Podemos
disparar el evento ue_retrieve desde el evento Open de la ventana para que recupere la
información tan pronto como la ventana o alguna de sus descendientes se abra.

Podemos adicionar un script para el evento RowFocusChanged del dw_master para que
obtenga información cada vez que cambie de renglón y la muestre en dw_detail.

El evento RowFocusChanged también se dispara cuando el Datawindow es mostrado por


primera vez, permitiendo recuperar y desplegar información para el primer registro recuperado
en el Datawindow Maestro.

Como trabaja una ventana del tipo Maestro-Detalle y sus descendientes:

• Cuando una ventana de este tipo se abre, una lista (Clientes, empleados, productos,
etc) es mostrada en el Datawindow de arriba. El detalle de la información del primer
elemento se muestra en el Datawindow de abajo.
• Cuando uno se desplaza a través de la lista usando las flechas de arriba o abajo o
dando click en un renglón, la información detallada del renglón seleccionado se
muestra en el Datawindow de abajo.
EnKontrol Fundamentos de Power Builder

1 Selecciona el evento open en el script de w_master_detail_ancestor.


El evento Open tiene un icono rosa que indica que su Ancestro tiene un script.
Si checas el script del ancestro este llama al evento ue_postopen el cual es puesto al final
de la cola de mensajes de la ventana.

2 Teclea estas líneas en el evento Open.


dw_master.settransobject ( sqlca )
dw_detail.settransobject ( sqlca )
this.EVENT ue_retrieve()

Las primeras dos líneas indican que los Datawindow dw_master y dw_detail van a utilizar los
valores de las variables del objeto de transacción SQLCA. La tercera línea dispara el evento
ue_retrieve, el pronombre This se refiere al objeto actual, en este caso es
w_master_detail_ancestor.

3 Selecciona el evento rowfocuschanged de dw_master


Asegurate que sea el evento RowFocusChanged y no el evento RowFocusChanging.
Este script envía una solicitud de información para el dw_detail con el ID del renglón
seleccionado.

4 Teclea estas líneas en el script del evento RowFocusChanged:


long ll_itemnum
ll_itemnum = this.object.data[currentrow, 1]
IF dw_detail.Retrieve(ll_itemnum) = -1 THEN
MessageBox("Retrieve","Retrieve error-detail")
END IF

Declara una variable local ll_itemnum del tipo de datos long.


Utiliza una expresión para obtener el numero del elemento en la columna 1 del renglón
actual de dw_master y lo almacena en la variable ll_itemnum.
CurrentRow es un argumento pasado al evento RowFocusChanged event que especifica el
renglón actual en el DataWindow control.
Las siguientes líneas envían una solicitud para traer datos para dw_detail tomando como
argumento el ID almacenado en la variable ll_itemnum. Las sentencias en el IF checan que
la solicitud haya sido exitosa, si la operación falla se muestra un mensaje de error.

4 Salva los cambios y cierra el painter


5 Reconstruye el espacio de trabajo, del menú Run - Full Build Workspace.
Es una buena práctica reconstruir todos los objetos cuando modifiques un Ancestro.
6 Cierra la ventana de salida

Ajusta el tamaño de la ventana al momento de la ejecución

El Asistente de aplicaciones crea un administrador de ventanas que invoca a la función


OpenSheet para abrir una ventana, esta función tiene un argumento que puede afectar el
tamaño de la ventana al momento de la ejecución, por default el asistente pone este argumento
con el valor de Cascaded! el cual prevalece por encima del tamaño que se establece al
momento de su diseño.

1 Abre el administrador de ventanas n_pbtutor_sheetmanager


2 En el Script, selecciona (Functions) del primer drop-down list box
Selecciona of_opensheet del segundo second drop-down list box.
3 Ve a la siguiente línea del script:
li_rc = OpenSheet ( lw_sheet, as_sheetname, w_pbtutor_frame, 0, Cascaded! )
4 Cambia el argumento Cascaded! por Original!
li_rc = OpenSheet ( lw_sheet, as_sheetname, w_pbtutor_frame, 0, Original! )
5 Salva los cambios y cierra el Painter.
EnKontrol Fundamentos de Power Builder

La próxima vez que ejecutes la aplicación las ventanas deberán abrirse en el tamaño que
estableciste al momento de diseñarlas. Deberán permanecer en cascada en relación a las otras
ventanas previamente abiertas.
EnKontrol Fundamentos de Power Builder

Lección 5 - Creando Menús para la Aplicación


Los menus son objetos separados que se crean con la ayuda del Menu painter, una vez creado
puedes adjuntarlo a tantas ventanas como tu quieras.

Modificando la estructura del menú

La estructura del menú fue creado por Asistente de aplicaciones, el menú m_pbtutor_frame es
el ancestro de todos los menus con que trabajaremos, por lo que cualquier cambio que
hagamos se propagara a los menús descendientes.

El menú painter tiene la capacidad del WYSIWYG (What You See Is What You Get), vas a
visualizar los menus tal y como aparecerían en la aplicación al momento de su ejecución.

Modificando el menú File de m_pbtutor_frame.

1 Abre el menú m_pbtutor_frame.

En el painter aparece el menú asociado al MDI frame.


En la vista WYSIWIG el menú aparece a lo largo de la ventana.

2 Click en el menú File en la vista WYSIWYG de m_pbtutor_frame.

3 Del menú File en la opción New, click en botón derecho


Selecciona del menú pop-up la opción Edit Menu Item Text.
Teclea &Report y presiona Enter.
Con esto tu cambiaste el nombre a mostrar de la opción New por Report, el nombre del
menú permanece intacto m_new.

El carácter del ampersand (&) define una tecla rápida para esa opción.
El carácter que le sigue al ampersand es la tecla rápida y aparece subrayada en la vista
WYSIWYG, dentro de la aplicación para poder acceder rápidamente a la opción
File>Report presiona Alt+F+R.

4 Checa que el texto &Report aparezca en la propiedad Text.


Click en la pestaña de Toolbar, el texto para este elemento es New,Open New Sheet. En la
propiedad ToolbarItemName no hay ningún elemento seleccionado, por lo que no habrá
ningún botón en la barra de herramientas para esta opción al momento de la ejecución.

No debes de adicionar ningún botón a la barra de herramientas, por que la opción de Report
solo es accesible cuando se abre una nueva hoja.

5 Abre la opción Open del menú File en la vista WYSIWIG.


Click en la pestaña de General de las Propoedades.
Limpia las cajas de confirmación de Visible y Enabled.

Con esto escondimos la opción Open de todos los menus, cuando quitas la propiedad de
Visible en la vista WYSIWYG la opción del menú se muestra con apariencia punteada, cuando
EnKontrol Fundamentos de Power Builder

eliminas la propiedad de Enabled la opción se muestra con apariencia desvanecida y con


relieve invertido, si esta Visible pero no Enabled, se muestra en gris.

6 Click en la pestaña de Toolbar en las Propiedades.


Quita la marca de ToolbarItemVisible.
Para prevenir que el botón asignado a esta opción aparezca en la barra de herramientas.
Cada botón en la barra de herramientas corresponde a una opción del menú no importando
el estado Visible o Enabled.

7 Click en la opción Exit del menú File en la vista WYSIWYG.


La pestaña Toolbar de las Propiedades se mantiene abierta, observa como los valores de
ToolbarItemText y ToolbarItemName cambian dinámicamente para mostrar los valores
asociados a la opción m_exit.

Habilitando la ayuda para las opciones del menú.

El menú Help tiene tres opciones, pero solo una esta habilitada Help>About, habilita las otras
opciones.

1 Click en el menú Help y doble-click en la opción Help Index.


Puedes darle doble click aun cuando no este habilitada, el nombre completo de la opción
del menú es m_help.m_helpindex, es mostrado en la vista del Script, se incluye el prefijo
m_help para indicar que esta dentro del menú Help.
2 Selecciona el evento Clicked
3 Ubica el cursor en la línea que tiene la función ShowHelp y quitale los comentarios.
Cambia myapp.hlp por pbtutor.hlp: ShowHelp ("pbtutor.hlp", Index!)
Para mostrar el tema por default del archivo de ayuda.
4 Habilita la opción en las propiedades
5 Repite los pasos anteriores para la opción Search For Help On y usa la siguiente
función para la ayuda ShowHelp ("pbtutor.hlp", Keyword!, "")

Si el tercer argumento contiene una palabra clave que este dentro de la ayuda, el tema que
la contenga se muestra, si el argumento es una cadena de caracteres vacia la ventana de
búsqueda de ayuda se muestra.

6 Salva los cambios y cierra el menú painter.

Crear un menú para las hojas

Vamos a crear un menú que se muestre cada vez que el usuario abra una hoja MDI, lo
usaremos para ver información de los clientes y productos, el menú tiene que ser descendiente
de m_pbtutor_sheet y este a su vez es heredado de m_pbtutor_frame, pero tiene algunas
opciones adicionales habilitadas, en el menú que vas a crear adicionaras opciones que no
tienen sus ancestros.

Hereda y salva el nuevo menú

Una buena practica es que salves el nuevo menú inmediatamente después de heredarlo y
después modificalo.

1 Click en el botón Inherit

2 Asegurate de seleccionar de la lista de los tipos de objetos los Menus


Selecciona el objeto m_pbtutor_sheet y click OK.
PowerBuilder muestra un menú sin nombre (untitled) con las características de
m_pbtutor_sheet.

Checa los cambios que hicimos al menú del MDI frame en el paso anterior
EnKontrol Fundamentos de Power Builder

3 Salva el menú File>Save


4 Asigna el siguiente nombre m_my_sheet
Teclea el siguiente comentario
New sheet menu for w_master_detail_ancestor and its descendants.
5 Click OK.

El prefijo m_ es el estándar para los menus.

Adiciona opciones al menú

1 Click en el menú Edit en la vista WYSIWYG.


Todas las opciones están visibles pero deshabilitadas

2 Click-Derecho en cualquier opción del menú Edit.


Selecciona la opción Insert Menu Item At End del menú pop-up.
El cursor se ubica al final de la lista con un cuadro en blanco

3 Tecela un - (guion) y presiona Enter.


El guion se cambia por un separador de línea y en las propiedades puedes ver el nomnre de
la opción m_-. Al igual que los menus las líneas de separación tienen nombres únicos, las
otras líneas de separación tienen un índice único precedido por el prefijo m_-.

4 Deshabilita la línea de separción

5 Click-Derecho en la línea de separación


Selecciona del menú la opción Insert Menu Item At End
Teclea &Insert y presiona Enter.
El nombre de la opción se asigna automáticamente m_insert.
Si PowerBuilder asigna un nombre incorrecto, te sugiero que uses un nombre alternativo.

6 Teclea Insert a row en la propiedad Microhelp del menu.


Por default la nueva opción es visible y habilitada.
El texto asignado a la propiedad MicroHelp se muestra en la línea de debajo de la ventana
de aplicación cada vez que el usuario selecciona la opción
.
7 Repite los pasos 5 y 6 para las siguientes opciones:
Menu item Microhelp text
Upd&ate Actualiza la Base de Datos
&Delete Elimina el renglón actual

Observa que la opción Undo usa la letra n como tecla aceleradora, por esta razón no podemos
usar la misma tecla para la opción Update, usamos la letra A.

Adicionar botones a la barra de herramientas para las nuevas opciones

1 Click en la opción Insert.


2 Click en la pestaña Toolbar en las propiedades.
Teclea Insert en el texto de ToolbarItemText.
Teclea o selecciona Insert! Para el ToolbarItemName.
Esto define el botón a usar en la barra de herramientas para esta opción, cuando habilitas
la opción Show Text en la barra de herramientas aparece el texto Insert sobre el botón.
3 Teclea 1 en el ToolbarItemSpace.
Teclea 1 en el ToolbarItemOrder.
Teclea 2 en el ToolbarItemBarIndex.
Cuando se muestra la nueva barra de herramientas el botón Insert es el primer elemento.
4 Click en la opción Update.
5 Click en la pestaña Toolbar en las propiedades.
Teclea Update en el ToolbarItemText.
Teclea o selecciona Update! Para el ToolbarItemName.
6 Teclea 2 en el ToolbarItemOrder.
EnKontrol Fundamentos de Power Builder

Teclea 2 en el ToolbarItemBarIndex.
Este botón debe aparecer después del botón de Insert en la barra de herramientas.
7 Click en la opción Delete.
8 Click en la pestaña Toolbar en las propiedades.
Teclea Delete en el ToolbarItemText.
Teclea o selecciona DeleteRow! Para el ToolbarItemName.
9 Teclea 3 en el ToolbarItemOrder.
Teclea 2 en el ToolbarItemBarIndex.
Este botón debe aparecer después del botón de Update en la barra de herramientas.
10 Salva los cambios

Adiciona un script para llamar los eventos del usuario


Anteriormente adicionamos esos eventos en la lección “Moficando la ventana ancestro”

1 Selecciona la opción m_edit.m_insert en el primer list box


2 Selecciona el evento Clicked en el segundo drop-down.
Teclea estas líneas en el evento Clicked
w_master_detail_ancestor lw_activesheet
lw_activesheet = w_pbtutor_frame.GetActiveSheet()
lw_activesheet.EVENT ue_insert()
Las primeras dos líneas determinan cual hoja en el MDI frame esta actualmente activa.
La tercera invoca el evento ue_insert de la hoja activa.
3 Repite los pasos 1 y 2 para las demás opciones:

Nombre del menú Script for Clicked event


m_edit.m_update w_master_detail_ancestor lw_activesheet
lw_activesheet=w_pbtutor_frame.GetActiveSheet()
lw_activesheet.EVENT ue_update()

m_edit.m_delete w_master_detail_ancestor lw_activesheet


lw_activesheet = w_pbtutor_frame.GetActiveSheet()
lw_activesheet.EVENT ue_delete()

4 Salva los cambios y cierra el Painter.

Adjunta el nuevo menú y ejecuta la aplicación

1 Abre la ventana w_master_detail_ancestor


2 Selecciona el botón que esta a la derecha de la propiedad MenuName
3 Selecciona el menú m_my_sheet y click OK.
4 Salva los cambios.
Ejecuta la aplicación Click en .
5 Teclea dba en el User ID y sql en el Password y click OK.
6 Selecciona la opción File>Report>Maintain Customers.
7 Selecciona el menú Edit.
El menú edit tiene las opciones de Insert, Update, y Delete que fueron adicionadas, estas
opciones no tienen funcionalidad todavía por que los controles DataWindow en la ventana
de Customer no tienen objetos DataWindow asociados a ellos.
8 Selecciona el menú Window.
Nota que hay una opción nueva que se adiciono al abrir la hoja.
9 Selecciona la opción File>Report>Maintain Products.
EnKontrol Fundamentos de Power Builder

Se abre una segunda hoja MDI, se cascadea en una posición relativa con respecto a la
primera, la barra del menú no cambia por que el menú m_my_sheet is the menú es el
mismo para ambas ventanas.
10 Selecciona el menú File>Exit para terminar la aplicación.
11 Cierra el Window painter.
EnKontrol Fundamentos de Power Builder

Lección 6 - Construyendo objetos DataWindow


El DataWindow object e uno de los componentes más poderoso y usual de PowerBuilder. Un
DataWindow object puede conectarse a la base de datos recuperar información y mostrar esos
renglones en varios estilos permitiendo además actualizar la Base de Datos.

En esta lección aprenderas a:


• Crear y previsualizar un objeto DataWindow
• Salvar el objeto DataWindow
• Hacer cambios para cambiar la apariencia del DataWindow
• Crear un segundo DataWindow
• Cambiar la apariencia del segundo DataWindow

Crear y previsualizar un objeto DataWindow

La vista de diseño del DataWindow es muy similar a la de otras painters, esta dividida en cuatro
areas llamadas bandas: header, detail, summary y footer. Puedes modifivar el contenido de
esas bandas, por ejemplo, puedes cambiar tamaños, adicionar objetos (controles, texto, lineas,
cajas u ovalos) cambiarles el color y el tipo de letra. En la vista preliminar puedes ver como se
establece la apariencia del Datawindow con información de las tablas.

1 Click en el botón New .


2 Click en la pestaña DataWindow .
3 Selecciona el estilo de presentación Tabular.

4 Click OK.

Es necesario elegir una fuente de datos (Data Source) para el DataWindow Tabular por lo tanto
aparece un Asistente para DataWindows.

5 Selecciona como data source a un Quick Select y selecciona la opción Retrieve On


Preview
Click Next.
PowerBuilder se conecta a la base de datos EAS Demo DB Database, y aparce la ventana
de dialogo para el Quick Select.
6 Click en la tabla customer de la lista.
Esto abre la tabla y muestra las columnas que la definen, deberás seleccionar cuatro de
ellas.
EnKontrol Fundamentos de Power Builder

7 Click en los campos id, fname, y lname, desplazate hacia abajo y selecciona
company_name.

Determina en orden en que se van a mostrar


El orden en el que seleccionaste las columnas determinan su posición de izquierda a derecha
en el Datawindow, si seleccionaste una columna por error, puedes volver a darle click para
deseleccionarla.

Puedes usar el área cuadriculada que esta en la parte de debajo de la ventana para especificar
un criterio de ordenamiento (para la sección ORDER BY de la sentencia SQL) y un criterio de
selección (para la sección WHERE de la sentencia SQL), por el momento solo vamos a
especificar el criterio para ordenar los datos usando la columna id y en orden ascendente.

8 Click en la celda que forman el renglón Sort y la columna id.


9 Selecciona Ascending del drop-down list box.
10 Click OK.
El asistente de DataWindow permite que seleccionemos los colores y bordes.
11 Click Next. Aceptamos los valores por default.
12 Click Finish.

PowerBuilder crea el DataWindow object y lo abre en el painter


En la vista de diseño se muestran las bandas de encabezados (heading) y detalle (detail) con
las columnas que seleccionamos, en la vista preliminar aparece el Datawindow como se verá al
momento de la ejecución y muestra los datos de todos los clientes ordenados por el ID de
manera ascendente tal y como lo definimos.
EnKontrol Fundamentos de Power Builder

Salvando el DataWindow object

1 Selecciona el menú File>Save.


2 Asegurate de seleccionar la librería pbtutor.pbl
Nombrala d_custlist.
El prefijo estándar para los nombres de los DataWindow objects es d_
3 (Opcional) Teclea el siguiente comentario:
This DataWindow object retrieves customer names and company associations.
4 Click OK.

Cambiando la apariencia del primer DataWindow

1 Selecciona el menú Edit>Select>Select All o Presiona Ctrl+A.


Todos los controles del DataWindow en la vista de Diseño son seleccionados.
2 Ubica el cursor del mouse sobre cualquiera de los objetos seleccionados.
Arrastra los objetos a la derecha aproximadamente una pulgada.
3 Click en un área vacia en la vista de Diseño para deseleccional los objetos.
4 Click en el encabezado de Customer ID en la bande Header.
Manten presionada la tecla de Ctrl y click en la columna id del detalle
Libera la tecla Ctrl y arrastra la columna Id a la izquierda media pulgada.

5 Click en el botón de Centrar en la barra de estilo .


Click en un área limpia de la vista de diseño.
6 Click en el encabezado del First Name.
Manten presionada la tecla de Ctrl y click en los encabezados de Last Name y
Company Name.
Click en el botón Left de la barra de estilo.
7 Selecciona la opción del menú File>Close. Y salva los cambios Click Yes.

Crea un segundo DataWindow object

Para construir en segundo Datawindow usaremos el Select painter, necesitas definir un


argumento de recuperación y usarlo durante la ejecución en la sección WHERE, en este caso
usaremos el customer ID.

En esta sección vas a:


• Seleccionar el data source y su estilo
• Seleccionar la tabla y columnas
• Definir el argumento de recuperación
• Especificar la clausula WHERE

Seleccionar el data source y su estilo

1 Click en el botón de New.


2 Click en la pestaña de DataWindow
Selecciona en la lista de los estilos de presentación la Freeform y click OK.
3 Selecciona como data source SQL Select y activa la opción Retrieve On Preview.
Al activar la opción Retrieve On Preview te permite visualizar los datos que obtenga una
consulta (query) en el ambiente de desarrollo.
4 Click Next.

Seleccionar la tabla y las columnas

1 Selecciona la tabla customer y click Open.


2 Click-Derecho en el área del encabezado (header) de la tabla Customer
Selecciona Select All del menú pop-up.
EnKontrol Fundamentos de Power Builder

Los nombres de las columnas aparecen en el área Selection List


El orden de las columnas es idéntico al orden en el cual fueron seleccionadas.
Como seleccionaste todas las columnas a la vez, se muestran en el orden en que se
encuentran en la base de datos, también puedes ver el orden de las columnas en la pestaña de
Syntax, muestra la generación de la declaración Select .

Define un argumento de recuperación

1 Selecciona la opción Design>Retrieval Arguments


Se muestra la caja de dialogo para especificar los argumentos.

2 Teclea cust_id en el nombre y dejamos el tipo de dato por default Number.


3 Click OK.

Ahora hay que especificar una sentencia WHERE que use el argumento de recuperación para
recuperar un cliente en particular.

1 Click en la pestaña de Where.


2 Click en la caja de texto abajo de Column.
Aparece una flecha para acceder a un drop-down list box.
3 Selecciona "customer"."id".
Al hacer la selección aparece inmediatamente debajo de la columna Operator un signo =,
es correcto no lo cambies.
4 Click-Derecho en la caja de texto debajo de la columna Value.
EnKontrol Fundamentos de Power Builder

Selecciona Arguments del menú, selecciona :cust_id, y click Paste.


5 Click en la pestaña de Syntax, muestra los cambios a la sentencia Select

Pre visualizar del Datawindow

1 Click en el botón Return


El asistente del DataWindow preguntara que asignes los colores y bordes.
2 Para las columnas selecciona el borde tipo Raised
Click Next.
Solo asignaste los bordes a las columnas no a las etiquetas del Datawindow
3 Click Finish.
Como activamos la opción Retrieve On Preview y la vista preliminar es parte del
esquema de diseño, aparece la caja de dialogo de argumentos para que especifiques un
valor al argumento en el script el parámetro se asignará de manera automática.

4 Teclea un customer ID (puede ser 101, 102, or 103) y Click OK.

Si quieres consultar otro registro, click en el botón , mostrara una caja de dialogo
donde puedes especificar un parámetro diferente.
EnKontrol Fundamentos de Power Builder

Salva el DataWindow object

1 Selecciona File>Save del menú.


2 Checa que la librería pbtutor.pbl este seleccionada.
Teclea en nombre de la Datawindow d_customer.
3 (Opcional) Teclea el siguiente comentario
This DataWindow retrieves all columns for the Customer table. It is useful as a detail
DataWindow.
4 Click OK.

Haciendo cambios en la apariencia del segundo DataWindow

1 Click en la etiqueta Address:


Manten preionada la tecla de Ctrl y click en la columna address.
2 Permanece con la tecla Ctrl presionada y click en las siguientes etiquetas y columnas
Label Column
City: city
State: state
Zip Code: zip

3 Libera la tecla Ctrl.


Ubica el cursor en uno de los objetos seleccionados y arrástralos a la esquina
superior derecha del DataWindow object.
4 Usa la técnica del Ctrl+click para mover las etiquetas y columnas restantes.
Company Name: company_name
Phone Number: phone

5 Arrastra la banda del detalle para que quede por debajo de la ultima etiqueta.
Eliminamos los espacios extras de la banda de detalle.

Alinea las columnas y las etiquetas.

1 Selecciona la etiqueta Zip Code:


Muévela tan cerca como sea posible de la columna company_name

2 Mientras la etiqueta Zip Code: esta seleccionada, usa la técnica del Ctrl+click para
seleccionar las etiquetas de Address:, City:, y State:
3 Selecciona la opción Format>Align del menú.
EnKontrol Fundamentos de Power Builder

4 Selecciona la primera opción (Align left edges).


PowerBuilder alinea al borde izquierdo todos los objetos seleccionados tomando como
referencia el primer objeto que seleccionaste. Puedes acceder el botón desde la barra de
herramientas.
5 Mueve la columna zip para que este cerca de la etiqueta Zip Code:
Alinea las columnas address, city, y state a la columna zip column, asi como alineaste
las etiquetas

Despliega una flecha para los estilos de edición drop-down Datawindow


La columna state para el cliente tiene un estilo de edición del tipo DropdownDataWindow
Este es un atributo extendido asociado a la columna State en la base de datos EAS Demo DB .
El (drop-down) DataWindow con el que la columna está asociado tiene una lista de los estados
y dos letras del código postal, puedes hacer que la lista de selección este visible en todo
momento de la aplicación o desplegar una flecha que indica la disponibilidad de una lista de
selección.

Cambia la propiedad de la columna state para que muestre la flecha.

1 Click en la columna state


2 Click en la pestaña de Edit en las propiedades.
Observa que el estilo de edición para esta columna es un DropDownDW.
3 Selecciona la opción Always Show Arrow.
Observa como en la columna state en la vista de diseño se observan dos caracteres y
la flecha
4 Salva los cambios y cierra el Painter
EnKontrol Fundamentos de Power Builder

Lección 7 - Adjuntando el DataWindow Objects


Después de crear y guardar los DataWindow object (d_custlist y the d_customer), podemos
usarlos en la ventana w_customers

Adjuntando el DataWindow object al control datawindow Maestro

1 Expande la librería pbtutor.pbl.

2 Abre la ventana w_customers


3 Selecciona el DataWindow control dw_master
En las propiedades click en el botón a la derecha de la propiedad DataObject
4 Selecciona de la lista el DataWindow d_custlist y click OK.

PowerBuilder asocia el DataWindow object d_custlist con el DataWindow control dw_master.


Ahora se muestran los encabezados del Datawindow d_custlist dentro del control dw_master,
pero no se ven los datos todavía, el DataWindow no ejecutara la sentencia SELECT hasta que
corras la aplicación.

Adjuntando el Datawindow object al detalle

1 Selecciona el dw_detail.
En las propiedades click en el botón a la derecha de la propiedad DataObject
Selecciona de la lista el DataWindow d_customer y click OK.
2 Ajusta el tamaño del dw_detail hasta que puedas ver todas las columnas y los
datawindow tengan el mismo tamaño

Ejecutando la aplicación

Prueba las características de insertar, actualizar y borrar que adicionamos al segundo


DataWindow
EnKontrol Fundamentos de Power Builder

1 Click en el botón Run.


PowerBuilder te preguntará si quieres salvar los cambios.
2 Click Yes.
La aplicación se ejecuta y la ventana de Login es mostrada.
3 Teclea dba en el User ID y sql en el Password y click OK.
4 Selecciona del menú la opción File>Report>Maintain Customers.
Se muestra la ventana de los clientes (Customer).

El primer DataWindow control (dw_master) muestra todos los registros recuperados de la


tabla Customer en apuntador en forma de mano muestra cual renglón esta seleccionado. El
DataWindow control (dw_detail) muestra la información a detalle del cliente seleccionado.
5 Click en el botón Insert en la barra de herramientas
Esto limpia (resets) el dw_detail permitiendo que adiciones información a un nuevo registro
que se inserto al data source. El cursor se ubica en el campo Customer ID del dw_detail.

6 Adiciona un nuevo cliente capturando la información del Datawindow Detail


El número para el Customer ID debe de ser único, para evitar números duplicados usa
números de cuatro dígitos o consulta la lista de los clientes y usa un número de tres dígitos
que no aparezca en la lista.
Captura la información de los campos restantes, los campos de phone number y zip code
usan una máscara de edición para mostrar la información que proporcionas, para
especificar el estado donde reside el cliente deberás dar click en la flecha y seleccionarlo
de la lista.

7 Click en el botón de Update


Envíamos los datos del nuevo cliente a la base de datos y mostramos un mensaje de
confirmación codificado en el evento ue_update. El nuevo cliente no se muestra todavía en
el Datawindow maestro (Puedes incluir esta característica si adicionas código), sin embargo,
puedes abrir otra instancia de la ventana w_customer y los datos serán visibles para ambos
DataWindow controls.

8 Click OK en la caja del mensaje.


Click en un cliente del DataWindow master.
9 Cambia la dirección del Cliente en el detalle
10 Click en el botón Update
Esta acción envía los datos del cliente ya corregidos a la base de datos y muestra otro
mensaje de confirmación.

11 Click Aceptar en el mensaje


Selecciona otro cliente del Datawindow master.
12 Click en el botón Delete
EnKontrol Fundamentos de Power Builder

El cliente es eliminado inmediatamente del Datawindow por no se elimina de la base de


datos, hasta que se seleccione la opción Update del menú Edit o de la barra de
herramientas. En esta situación en particular esta acción puede fallar por que puede haber
más registros de otras tablas en la base de datos EAS Demo DB que están haciendo
referencia al registro que quieres borrar.
13 Seleccionar la opción File>Exit
Para terminar la aplicación
14 Cierra el Window painter.

Adicionando DataWindow objects a la ventana de Productos (Product)

Ahora adicionaras dos DataWindow objects a la ventana w_products. Estos objetos son
provistos en la librería tutor_pb.pbl.
1 Abre la ventana w_products
2 Selecciona el DataWindow control dw_master y asígnale el Data Object d_prodlist
3 Click en el DataWindow control dw_detail y asígnale el Data Object d_product
Click OK

Ejecuta la aplicación nuevamente


Para probar la venta de Productos.

1 Click el botón Run.


PowerBuilder preguntara si quieres salvar los cambios.
2 Click Yes.
3 Teclea en el User ID dba y sql en el Password y click OK.
4 Selecciona la opción File>Report>Maintain Products.
5 Selecciona la opción Edit>Insert
6 Captura la información necesaria para adicionar un producto
7 Actualiza los datos que capturaste con la copción Edit>Update
8 Click OK en la caj que muestra el mensaje.
Click en un producto del DataWindow master.
9 Cambiale al producto el precio unitario
Actualiza los cambios Select Edit>Update
10 Click OK en el mensaje
Selecciona otra producto del maestro.
11 Eliminalo usando Edit>Delete.
12 Salir de la aplicación usando la opción File>Exit
13 Cierra el Painter

You might also like