Professional Documents
Culture Documents
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.
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
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
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
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.
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
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.
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
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.
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.
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.
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 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.
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.
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.
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
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.
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.
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ú.
11 Click Next dos veces para mostrar la ventana que muestra que esta listo para crear
la aplicación.
12 Asegurate que la caja de comprobación (Check Box) de Generate To-Do List este
seleccionada.
Click Finish.
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.
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.
Se muestra una ventana con varias pestañas que agrupan las propiedades de la aplicación:
1 Doble-click a w_pbtutor_frame.
El Window painter abre la ventana principal de la aplicación.
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).
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.
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.
7 Selecciona Top.
La barra de herramientas se ubicará en la parte superior del frame.
9 Selecciona File>Exit.
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.
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:
3 Asegurate que puedas ver los elementos del Layout y las Propieades.
Puedes mostrarlos en el menú View.
EnKontrol Fundamentos de Power Builder
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.
7 Selecciona la opción File>Save. Como solo tenemos una librería se selecciona por default
10 Click OK.
PowerBuilder salva la nueva ventana, si expandes el árbol de la librería podras ubicar el
objeto w_welcome.
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
Ahora vamos a modificar la ventana de Login que creamos y le vamos a adicionar algunos
controles y cambiar sus propiedades.
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 Ajusta la ubicación de los controles para que haya al menos dos líneas punteadas
entre ellos.
Ahora vamos a especificr las propiedades de las etiquetas y como van a aparecer en la
ventana de Login.
En la propiedad Text del control teclea User ID: presiona la tecla de Tab.
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.
1 Selecciona el control del tipo CommandButton button del drop-down list de controles
o
Seleccionar del menú la opción Insert>Control>CommandButton.
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.
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.
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.
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
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:
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.
El evento Help tiene asignado un prototipo base: help (integer xpos, integer
ypos) returns long [pbm_help]
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
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.
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.
Aparece el mensaje: Type your user ID here. Este texto esta asociado con el context ID 100
en el archivo pbtutor.hlp.
Se muestra el mensaje: Type your password here. Este texto esta asociado al context ID 200
en el archivo pbtutor.hlp.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
objetos de Power Builder, del menú selecciona File-New-icoono del asistente del objeto de
conexión.
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.
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.
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.
list box. El evento Constructor debe de estar seleccionado 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.
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.
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”.
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
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.
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.
3 Teclea las siguientes líneas, explican brevemente lo que va a realizar este evento:
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.
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.
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.
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.
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.
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
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.
2 Selecciona el evento close ( ) returns (none) del segundo drop-down list box
6 Click Yes.
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.
Primero vas adicionar una librería que contenga los objetos predefinidos del usuario con
controles DataWindow, en esta lección aprenderás a:
5 Click OK.
EnKontrol Fundamentos de Power Builder
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.
Esto abrirá una caja de dialogo con los tipos visuales estándares de PB, en seguida selecciona
el tipo Datawindow.
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
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).
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.
El primer botón a la derecha del tercer drop-down list box es un interruptor que muestra o
esconde la ventana de Prototipos.
Evento Script
ue_insert dw_detail.Reset()
dw_detail.InsertRow(0)
dw_detail.SetFocus()
ue_delete dw_detail.DeleteRow(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)
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.
• 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
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.
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
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.
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.
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.
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
El menú Help tiene tres opciones, pero solo una esta habilitada Help>About, habilita las otras
opciones.
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.
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.
Una buena practica es que salves el nuevo menú inmediatamente después de heredarlo y
después modificalo.
Checa los cambios que hicimos al menú del MDI frame en el paso anterior
EnKontrol Fundamentos de Power Builder
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.
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
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
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.
4 Click OK.
Es necesario elegir una fuente de datos (Data Source) para el DataWindow Tabular por lo tanto
aparece un Asistente para DataWindows.
7 Click en los campos id, fname, y lname, desplazate hacia abajo y selecciona
company_name.
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.
Ahora hay que especificar una sentencia WHERE que use el argumento de recuperación para
recuperar un cliente en particular.
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
5 Arrastra la banda del detalle para que quede por debajo de la ultima etiqueta.
Eliminamos los espacios extras de la banda de detalle.
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
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
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