Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Entrenamiento PowerBuilder 9
Entrenamiento PowerBuilder 9
Destinos JSP:
PowerBuilder 9 provee un ambiente de desarrollo para creacin de JSP fcil de usar que
automatiza varias tareas de desarrollo y permite el desarrollo de aplicaciones Web
compatibles con JSP 1.2. Un modelo de objetos JSP duplica con muy pocas
modificacionesla funcionalidad de servidor disponible anteriormente para destinos web
ASP y PowerDynamo, incluyendo la extensin de modelo de eventos 4GL para
aplicaciones PowerDynamo.
Pgina 1 de 2
Una aplicacin PowerBuilder puede actuar como un cliente utilizando un servicio Web
(Web Service) que se accede por medio de Internet. Utilizando SOAP y WSDL, un
conjunto de funciones publicadas remotamente como una sola entidad pueden llegar a
hacer parte de su aplicacin PowerBuilder. Un servicio Web acepta y responde solicitudes
enviadas por aplicaciones u otros servicios Web.
El lenguaje OrcaScript:
OrcaScript permite escribir guiones (scripts) por lotes para procesar aplicaciones y
archivos PowerBuilder sin utilizar el ambiente de desarrollo de PowerBuilder.
Mejoras en el DataWindow:
Mejoras en la impresin, recuperacin de DataWindows Hijos, Desplazamiento (scrolling)
en reportes de grupo.
Mejoras en el depurador
Pgina 2 de 3
Objetos.
Eventos.
Un objeto es una forma de comunicacin con el usuario, por ejemplo una ventana o un men.
Nombres de objetos PowerBuilder:
F Application object
F Window
F DataWindow
F Menu
F Global functions
F Queries
F Structures
F User objects
F Libraries
F Projects
Un evento puede ocurrir cuando un usuario ejecuta una accin con el ratn, el teclado, por una
orden del lenguaje PowerScript de PowerBuilder o por el mismo sistema.
Algunos de los eventos ms comunes son:
F Clic (clicked)
F Doble clic (DoubleClicked)
F Modificacin (Modified)
F Abrir (Open)
F Cerrar (Close)
F Tomar el foco (GetFocus)
F Perder el foco (LoseFocus)
F Cambiar la seleccin (SelectionChanged)
Scripts.
Pgina 3 de 4
F
F
F
F
F
F
F
F
RichTextEdit
RoundRectangle
SingleLineEdit
StaticText
Tab
TreeView
UserObject
VscrollBar
Focus.
Identifica el lugar de la pantalla donde va a suceder la siguiente accin. Para establecer el foco
en un sitio deseado, el usuario puede:
F Mover con el ratn el apuntador a un control y hacer clic.
F Presionar la tecla del tabulador hasta el control deseado.
Un control puede perder el foco cuando el usuario:
F Hace clic en otro control.
F Hace clic en otra ventana donde no hay controles.
F Presiona la tecla del tabulador y pasa a otro control.
Atributos.
LENGUAJE POWERSCRIPT
Es un lenguaje de alto nivel basado en objetos con el cual se pueden construir scripts.
PowerScript tiene:
w Comandos, por ejemplo IF ... THEN.
w Funciones predefinidas para manipular objetos, nmeros, textos, para procesar
fechas y datos de tiempo, imprimir reportes, ejecutar DDE (Dynamic Data
Exchange), manejar archivos; por ejemplo SHOW, MOVE, OPEN, MAX, HIDE.
w Las funciones regresan un valor (return value) que puede ser utilizado o ignorado.
w Proposiciones SQL, por ejemplo SELECT, INSERT, UPDATE.
w Variables:
F Locales en un script.
F A nivel de una ventana/objeto.
F Globales.
Convenciones aconsejadas por PowerBuilder para dar nombre a los objetos:
Pgina 4 de 5
Cuando se estn creando los objetos, PowerBuilder sugiere un nombre para el objeto utilizando
el prefijo de la tabla anterior y un nmero. Ellos aconsejan cambiar este nmero por algo
significativo para el usuario que est elaborando el aplicativo.
Pgina 5 de 6
EJERCICIO PRCTICO
El ejercicio deben hacerlo de forma individual y presentarlo funcionando perfectamente,
desde ejecutable y desde PowerBuilder. En grupo deben presentar un informe, indicando
sus comentarios sobre este documento, errores encontra dos, sugerencias para mejorarlo
y utilidad al realizar el ejercicio.
Elaborar una Aplicacin sencilla, que permita manipular informacin del personal de una
empresa as: a) Listar todos los empleados, b) Buscar los empleados que concuerden con el
nombre y/o el primer apellido digitado por el usuario, c) Buscar los empleados de un
determinado Departamento. Una vez obtenida la lista, al hacer la seleccin de un empleado ver
sus datos detallados. La aplicacin tambin debe estar en capacidad de ejecutar las acciones de
impresin, adicin, modificacin y borrado de datos de empleados. Como un servicio adicional de
la Aplicacin, se debe proporcionar una Calculadora que est en capacidad de ejecutar las cuatro
operaciones aritmticas bsicas: suma, resta, multiplicacin y divisin de dos valores dados por
el usuario.
Estructura de la aplicacin:
VENTANA
PRINCIPAL
Ventana para
Bsqueda
Ventana para
Mantenimiento
Calculadora
Los pasos indica dos a continuacin corresponden a un procedimiento que se puede seguir
utilizando PowerBuilder 9.0 y Sistema Operativo Windows 98 (de forma similar en Windows 95,
NT, 2000 y XP):
1. Entrar a Windows.
2. Escoger un directorio exclusivo para dejar todos los archivos del ejercicio
(recomendado).
3. Copiar en este directorio:
Tres (3) archivos tipo *.bmp
Tres (3) archivos tipo *.ico
4. Activar PowerBuilder.
Pgina 6 de 7
Pgina 7 de 8
Pgina 8 de 9
Workspace
Target
Library
rbol de Sistema
Application
F
F
Pgina 9 de 10
8. rbol de sistema:
La ventana rbol de sistema (System Tree) sirve como el centro de sus actividades de
desarrollo. Esta se utiliza para abrir, ejecutar, depurar y construir (build) sus destinos
(targets), y para realizar operaciones de programacin arrastrando y soltando.
En esta se pueden visualizar y seleccionar: el rea de trabajo (workspace), los destinos
(targets), las libreras .pbl existentes, los objetos respectivos, sus propiedades, eventos,
funciones y estructuras.
rbol de
sistema
Pgina 10 de 11
New
PB Object
Window
OK.
9.2. Para manejar el objeto creado PowerBuilder 9.0 abrir por omisin dos vistas bsicas en
una ventana: Layout (donde podr visualizar la forma del objeto) y Properties. Por
medio de unas solapas ubicadas en la parte inferior de las dos vistas bsicas mencionadas
es posible acceder a otras vistas tales como script (en el diagrama aparece como open),
Event List, Control List; en este caso las propiedades de una ventana son agrupadas bajo
tres grupos de caracterstica s: General, Scroll, Toolbar y Other.
Pgina 11 de 12
Pgina 12 de 13
9.4.2. En la ventana, hacer clic en el sitio donde se desea ubicar el control seleccionado.
9.4.3. Mirar, comprobar y/o modificar las caractersticas del control (hay que tener seleccionado
el control deseado):
En barra de herramientas F Properties, o,
En la vista de Properties..., o
Con botn derecho dentro del control F Properties..., o
Doble clic dentro del control
9.4.4. En la vista de Properties, las caractersticas de un ComandButton estn agrupadas en:
General, Font y Other. Dar al control CommandButton las caractersticas del control,
tales como:
Nombre del control (cb_salir).
Texto deseado dentro del control. (&Salir)
Caractersticas de aparicin.
Caractersticas de las fuentes.
Posicin dentro de la ventana.
Pgina 13 de 14
Pgina 14 de 15
Esta ventana debe heredar las propiedades de la ventana anterior (ICF -Pantalla bsica). Por
lo tanto se puede seguir un procedimiento similar, con las siguientes particularidades:
10.1. Cierre la ventana anterior y Cree la nueva ventana:
En el men F File F Inherit... (si la ventana de la cual hereda est abierta esta
seleccin no funcionar)
En la ventana Inherit From Window seleccionar la ventana que da las caractersticas
a heredar.
F OK
10.2. Mirar y/o cambiar las caractersticas de la ventana heredada.
10.3. Aadir los otros controles mostrados en la figura (un CommandButton y un RadioButton).
10.4. Cambiar el texto del CommandButton heredado &Salir por &Cancelar.
10.5. Los controles deben quedar con las caractersticas de visible y enabled
10.6. Grabar el trabajo adelantado (Guardar la ventana en la librera; nombre sugerido:
w_icf_busqueda)
10.7. Ver cmo va quedando el diseo y si es necesario hacer las modificaciones que estime
convenientes.
11. Elaborar una ventana como la siguiente:
Esta ventana debe heredar las propiedades de la ventana anterior (ICF - Pantalla bsica
para bsqueda), con las siguientes particularidades:
11.1. Mirar y/o cambiar las caractersticas de la ventana heredada.
Cambiar el texto del RadioButton heredado &Otro por &Todos
11.2. Aadir los otros controles mostrados en la figura:
Dos SingleLineEdit, uno para Nombre y otro para Primer Apellido.
Tres StaticText: Nombre, Primer Apellido y Departamento.
Un DropDownListBox, con la lista de los siguientes Departamentos:
Contabilidad
Personal
Ventas
Mercadeo
Desarrollo
Recursos
Administracin
Sistemas
En el tipo de caractersticas (solapa) General colocar: ShowList y VScrollBar.
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 15 de 16
Pgina 16 de 17
Pgina 17 de 18
Pgina 18 de 19
Se sugiere que la calculadora efecte por lo menos las operaciones aritmticas bsicas
(suma, resta, multiplicacin y divisin) y permita algunas facilidades de manejo de
memoria.
15.1. Seleccionar la ventana de la calculadora.
15.2. Elaborar un programa, asociado con el evento modified (modificar), del control que recibe
el primer operando, similar al siguiente:
// modified sle_operando1
If not IsNumber(This.text) Then
MessageBox ("Error", "Se debe dar un nmero", StopSign!, OK!)
This.text = ""
This.SetFocus()
End if
15.3. Para el control que recibe el segundo operando, escrib ir un programa similar al que recibe
el primer operando.
15.4. Elaborar un programa, asociado con el evento clicked, del botn que va a ejecutar la
operacin de suma, similar al siguiente:
// clic cb_suma
Double oper1, oper2, oper3
oper1 = Double(sle_operando1.text)
oper2 = Double(sle_operando2.text)
oper3 = oper1 + oper2
st_resultado_n.text = String(oper3)
15.5. Elaborar programas similares para las operaciones de resta, multiplicacin y divisin.
15.6. Dejar el resultado en blanco, cuando se pase el curs or al campo que recibe el primer o
segundo operando (programar el evento getfocus: st_resultado_n.text = ).
15.7. Probar la aplicacin.
16. Seleccionar el botn Salir de la ventana bsica: w_icf_basica y asociarle un
programa que cierre la ventana (programar el evento clicked), con un programa
como el siguiente:
// clic cb_salir
If MessageBox("Salir", "Cerrar esta ventana?", Question!, YesNo! ) = 1 then
Close( Parent )
End If
17. Correr la ventana para probar su funcionamiento:
En barra de herramientas F File F Run/Preview F Objects of Type: Windows
F Object: nombre de la ventana, en este caso: w_icf_basica F OK
18. Seleccionar la ventana donde se pueden hacer bsquedas.
18.1. Seleccionar el control Todos (RadioButton) y elaborar un programa para que cuando este
control sea el seleccionado, desactive los controles que piden datos. Puede ser un
programa como el siguiente:
// Ventana: w_icf_pordepto_nom, Objeto: rb_todos, Heredado de:
// w_icf_busqueda:rb_otro
// Evento: Clicked
ddlb_departamento.visible = false
sle_nombre.visible = false
sle_primer_apellido.visible = false
st_nombre.visible = false
st_primer_apellido.visible = false
st_departamento.visible = false
dw_datos_empleados.visible = false
18.2. Correr la ventana para probar su funcionamiento.
18.3. Seleccionar el control Por Nombre (RadioButton). Escribir un programa para que active
los campos que piden los datos de nombre. Puede ser un programa como el siguiente:
// Ventana: w_icf_pordepto_nom, Objeto: rb_nombre
// Evento: Clicked
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 19 de 20
ddlb_departamento.visible = false
sle_nombre.visible = true
sle_primer_apellido.visible = true
st_nombre.visible = true
st_primer_apellido.visible = true
st_departamento.visible = false
dw_datos_empleados.visible = false
18.4. Correr la ventana para probar su funcionamiento.
18.5. Seleccionar el control Por Departamento (RadioButton). Escribir un programa para que
active el control que pide el dato de Departamento. Puede ser un script como el siguiente:
// Ventana: w_icf_pordepto_nom, Objeto: rb_departamento
// Evento: Clicked
ddlb_departamento.visible = true
sle_nombre.visible = false
sle_primer_apellido.visible = false
st_nombre.visible = false
st_primer_apellido.visible = false
st_departamento.visible = true
dw_datos_empleados.visible = false
18.6. Correr la ventana para probar su funcionamiento.
19. Crear una funcin que sirva para ejecutar las cuatro operaciones bsicas
aritmticas: sumar, restar, multiplicar y dividir.
19.1. En barra de herramientas o en el men seleccionar: F New
F PB Object
F Function.
19.2. Llenar los datos solicitados:
19.2.1. Valor a retornar (Return Type): string.
19.2.2. Nombre de la funcin.
19.2.3. Dar los argumentos: primer operando (arg_operando1, tipo string, paso por valor),
segundo operando (arg_operando2, tipo string, paso por valor) y operador
(arg_operador, tipo integer, paso por valor)
20. Escribir las instrucciones que van a conformar la funcin. Puede ser un programa
como el siguiente:
// Nombre de la funcion: f_operaciones
// Objetivo: Hacer un clculo aritmtico
// Parmetro 1: Primer operando
// Parmetro 2: Segundo operando
// Parmetro 3: Operacin a realizar as:
// 1 Sumar
// 2 Restar
// 3 Multiplicar
// 4 Dividir
Double oper1, oper2, oper3
IF arg_operando1 = "" OR arg_operando2 = "" THEN
Messagebox ("Error","Los operandos deben ser aritmticos",StopSign!, OK!)
return ""
END IF
oper1 = Double(arg_operando1)
oper2 = Double(arg_operando2)
Choose Case arg_operador
Case 1
oper3 = oper1 + oper2
Case 2
oper3 = oper1 - oper2
Case 3
oper3 = oper1 * oper2
Case 4
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 20 de 21
If oper2 = 0 Then
Return "Divisin por cero"
Else
oper3 = oper1 / oper2
End If
Case else
Return "Operacin no vlida"
End Choose
Return String (oper3)
21. Cambiar los programas asociados con los botones de operaciones de la ventana de
la calculadora para que utilicen la funcin anterior.
21.1. Para el botn de Resta (-) puede ser un programa como el siguiente (para el evento clic):
// clic para cb_resta
st_resultado_n.text = f_operaciones ( sle_operando1.text, sle_operando2.text, 2 )
21.2. Proceder de manera similar para la suma, multiplicacin y divisin.
21.3. Probar su funcionamiento.
21.4. Comprobar el funcionamiento de la Calculadora para valores con punto decimal. En caso
que no funcione, hacer las modificaciones necesarias.
22. Crear una base de datos que implemente lo mostrado en la siguiente figura:
Pgina 21 de 22
22.1. Crear localmente una nueva base de datos. Dejar el archivo fsico en el directorio donde se
estn dejando todos los archivos de este ejercicio:
En barra de herramientas: F Database, o,
En el men: F File F New F Database F Database Painter, o,
Shift + F7
Pgina 22 de 23
Aparece la ventana Create Adaptive Server Anywhere Database, se deben llenar los
datos all pedidos:
w Database Name: Camino y nombre del archivo en Windows donde se va a
guardar el archivo fsico. Se sugiere:
F Browse,
Llegar al directorio deseado, y
Dar el nombre al archivo.
w User ID: Identificacin del usuario. Valor por omisin: DBA
w Password: Clave. Valor por omisin: SQL.
w F OK
Pgina 23 de 24
Pgina 24 de 25
Pgina 25 de 26
En caso de algn problema, hay que arreglarlo o sino la base de datos queda
inalcanzable. En casos extremos: borrar la base de datos recin creada, revisar la
Configuracin ODBC, revisar los Profile, y ver las entradas que puedan estar causando
conflicto (si es del caso borrarlas F Remove).
24. Crear las tablas (Estando la base de datos activa) Definir las columnas y sus
caractersticas: nombre, tipo de datos, aceptacin o no de nulos, valor por
omisin.
Colocar letreros significativos para encabezamientos de columnas, rtulos identificadores de
campos y comentarios a nivel de tabla y columna. Para ello:
En la barra de herramientas F Create Table, o,
Conectarse a la base de datos, clic para desplegar sus componentes dentro de ellos
se encuentran Tables y me diante clic derecho con el ratn F New Table F Definir
las columnas F Save Table as
25. Seleccionada una tabla: definir la llave primaria, crear los ndices y llenar datos.
Definir llave primaria: clic derecho sobre la cualidad Primary key F New Primary
key
Crear ndices: clic derecho sobre la cualidad Index F New Index
Crear llaves forneas: clic derecho sobre la cualidad Foreign key F New Foreign
key, en la solapa General F Columns seleccionar la columna que es llave fornea y
en la solapa Primary Key seleccionar la tabla y las columnas que estn asociadas con
la llave fornea.
Llenarla de datos:
w Clic derecho sobre la tabla F Edit Data (grid, tabular o freeform)
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 26 de 27
w
w
w
Insert Row
Digitar los datos
En Barra de Herramientas
Save Changes
Una vez creadas y llenas todas las tablas de la base de datos cerrar la vista de
DataBase Painter, en barra de herramientas F Close o, en el men, F File
F Close.
Si se le quiere hacer un cambio posterior a la tabla es posible posicionndose sobre la
tabla y mediante clic derecho con el ratn escoger la opcin F Alter table.
26. Preparar el sitio donde se van a mostrar los datos de los empleados. Para ese fin,
definir los DataWindows Object necesarios. Como primer paso definir un DataWindows que
presente en forma tabular los siguientes datos: Nombre y Apellido del empleado y nombre
del Departamento donde trabaja. La salida se debe presentar en orden alfabtico por
Apellido del empleado. Se puede seguir un procedimiento similar al siguiente:
26.1. En barra de herramientas : F New F DataWindow F Tabular F OK, o,
En men: F File F New F DataWindow F Tabular F OK
26.1.1. En la ventana Choose Data Source for Tabular DataWindow (seleccin de la fuente de
datos para el DataWindow escogido): F SQL Select F Next
26.2. En ventana Select Tables, seleccionar las tablas Empleado y Departamento F Open
26.3. En tabla Empleado: Cdigo del empleado (id), Nombre del empleado, Apellido del
empleado.
26.4. En tabla Departamento: F Nombre del departamento
26.5. En la solapa Sort: Apellido del empleado (hacer drag and drop).
Pgina 27 de 28
Si se quiere cambiar algo en la sintaxis del cdigo SQL, esto se puede ver con la opcin del
men F Design F Convert To Syntax.
26.6. Pasar a diseo de la salida: En barra de herramientas: F Return
26.7. En la ventana Select Color and Border Settings se escogen las opciones de borde y color
para el DataWindow. En la ventana Ready to Create Tabular DataWindow aparecen las
selecciones dadas con opcin de Regresar (para cambiar alguna opcin) o Finalizar.
26.8. A continuacin aparece la vista de diseo Design del DataWindow, y la de vista previa
Preview, acompaadas (por omisin) de la vista de propiedades Properties y, en la
parte inferior, de la especificacin de columnas, datos y la lis ta de controles Control List,
aparecern los datos de las tablas seleccionados. En la vista de diseo se pueden colocar
encabezados apropiados, cambiar color de fondo y otras cuantas propiedades. Tener en
cuenta de que a pesar de haber seleccionado el cdigo del empleado, no se desea en la
salida!!
Pgina 28 de 29
Pgina 29 de 30
28. Elaborar un tercer DataWindow que muestre los empleados que tengan el Nombre
y/o el Apellido digitado por el usuario.
28.1. Seguir un procedimiento similar a la elaboracin del DataWindow anterior. En este caso es
necesario especificar dos argumentos (por ejemplo: nombre de tipo String y apellido de
tipo String).
28.2. F OK
28.3. En carpeta Where: especificar la condicin deseada, por ejemplo:
Pgina 30 de 31
30. Cambiar el Punto de Inicio del Aplicativo, para que active la ventana que muestra
las opciones de bsqueda de personal y adicionalmente conecte la base de datos
que se va a utilizar. Elaborar un programa similar al siguiente (evento abrir la
aplicacin):
// open icf_1
// Punto inicial del aplicativo.
// -----------------------------------------------------------------------------------------------------------------// CONEXIN AL MOTOR DE BASE DE DATOS
// Conexin a un motor de Base de Datos SQL Anywhere con ODBC
sqlca.DBMS = "ODBC"
sqlca.DbParm="ConnectString='DSN=Entrenamiento;UID=dba;PWD=sql'"
MessageBox ("Motor de Base de Datos conectado:",sqlca.dbparm)
connect;
// Prueba para ver si qued conectado
if sqlca.sqlcode <> 0 then
MessageBox ("No se pudo Conectar a la Base de Datos", &
"Mensaje enviado por el sistema:~n~r'"+sqlca.sqlerrtext+"'")
return
end if
// -----------------------------------------------------------------------------------------------------------------open (w_icf_pordepto_nom)
//Nombre de la ventana que se desea activar, en este caso la de bsqueda
31. Correr la aplicacin y comprobar que funciona el nuevo punto de entrada.
32. En la ventana donde se presentan las opciones de bsqueda, programar el botn
de Buscar para que de acuerdo con la seleccin hecha (Todos, Por Nombre o Por
Departamento), muestre el resultado de la bsqueda.
32.1. Seleccionar el evento clic del botn Buscar y elaborar un programa como el siguiente:
// clic para cb_buscar
IF rb_otro.checked THEN
// Seleccionado todos
dw_datos_empleados.visible=true
dw_datos_empleados.dataobject='d_lista_empleados'
dw_datos_empleados.SetTransObject(SQLCA)
dw_datos_empleados.retrieve ()
END IF
IF rb_nombre.checked THEN
// Seleccionado Por Nombre
dw_datos_empleados.visible=true
dw_datos_empleados.dataobject='d_empleados_dado_nombre'
dw_datos_empleados.SetTransObject(SQLCA)
dw_datos_empleados.retrieve (sle_nombre.text,sle_primer_apellido.text)
END IF
IF rb_departamento.checked THEN
// Seleccionado Por Departamento
dw_datos_empleados.visible=true
dw_datos_empleados.dataobject='d_empleados_depto'
dw_datos_empleados.SetTransObject(SQLCA)
// Obtener el dato numrico xxx de la instruccin para pasrselo como entrada al
// datawindow:
dw_datos_empleados.retrieve(DOUBLE(ddlb_departamento.selectitem(
ddlb_departamento.text,1)))
END IF
32.2. Correr la aplicacin y comprobar su correcto funcionamiento.
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 31 de 32
Pgina 32 de 33
35. Escribir los programas asociados con el evento clic para cada una de las opciones
de los mens, por ejemplo:
35.1. Para: F Calculadora
// click m_servicios.m_calculadora
open ( w_icf_calculadora )
Pgina 33 de 34
36.
37. Modificar el punto de Inicio para arranque con la ventana recin diseada.
38. Agregar facilidades de men a la ventana de la calculadora, ver ejemplo presentado
en las siguientes tres grficas:
39. Escribir los programas asociados con el evento clic para cada una de las opciones
de los mens, por ejemplo:
39.1. Para: F Archivo F Cerrar Ventana
// click m_archivo.m_cerrarventana
Close( ParentWindow )
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 34 de 35
40.1.2. F Next
40.1.3. Si no est seleccionado el archivo pbl correcto seleccionarlo F Next
40.1.4. Escribir el nombre del proyecto, o utilizar el por defecto F Next
40.1.5. Escribir la direccin y el nombre del archivo ejecutable que se generar F Next
40.1.6. Asegurarse de que la opcin Incremental Build est seleccionada F Next
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 35 de 36
40.1.7. Asegurarse de que la opcin No, do not generate machine code est seleccionada
F Next
Nota: la opcin No, do not generate machine code se recomienda mientras el aplicativo
est en desarrollo. La generacin definitiva se recomienda hacerla con Yes, generate
machine code EXE and DLLs.
40.1.8. F Next
40.1.9. Llene la informacin de versin (y copyright) del aplicativo F Next
40.1.10.
Verifique que la informacin ingresada sea correcta F Finish
40.1.11.
PowerBuilder crea un objeto Project para su aplicacin y lo muestra en la vista
Project:
40.1.12.
Cerrar la vista Project.
40.2. Crear el archivo ejecutable
En barra de herramientas : F Deploy Workspace, o,
En men: F Run F Deploy Workspace
Pgina 36 de 37
El DropDown
DataWindow es til en
caso de que se
requiera hacer
referencia a datos de
otras tablas.
ltima Fila
Siguiente Fila
Anterior Fila
Primera Fila
Pgina 37 de 38
Pgina 38 de 39
43.2.7. Crear un DataWindow Object para actualizar los datos relacionados con los empleados.
En la barra de herramientas F New F DataWindow: Grid
w Data Source F SQL Select F Next
En la ventana Select Tables seleccionar la tabla Empleado F Open
Seleccionar todas las columnas de la tabla empleado.
Pasar a diseo de salida o vista de diseo: F Return
Seleccionar colores y bordes F Aceptar selecciones F Finalizar
Elegir Properties (con el botn derecho sobre el DataWindow, vista de diseo)
w En la pgina General: Color F ButtonFace
Para los encabezados de todas las columnas, en la pgina general:
Border F Raised
Text F modificar el texto
Para la columna emp_depto_id (cdigo de departamento): Elegir Properties :
w En la pgina General: Borde F Lowered.
w En la pgina Font: Background Color F WindowBackground.
w En la pgina Edit:
Style Type F DropDownDW
DataWindow F ddd_depto (el que se cre en el paso 43.2.6.)
Display Column F depto_nombre (nombre de departamento)
Data Colum F depto_id (cdigo de departamento)
Width of DropDown(%) (ancho del DropDown) F 300%
Seleccionar VScrollBar
w OK
File F Save. En la ventana Save DataWindow:
w Name: d_act_empleados
w OK
w Cerrar la ventana de edicin del DataWindow
43.2.8. Abrir w_actualizaciones y seleccionar el DataWindow dw_act_empleados en la pgina
Empleados. Hacer clic con el botn derecho y seleccionar la opcin properties del men
popup.
DataObject F browse... F d_act_empleados (el que se cre en el apartado
anterior:43.2.7)
OK
43.3. Para agregar una nueva pgina al control Tab, se hace clic con el botn derecho sobre e l
control. En el men popup F Insert TabPage
43.3.1. Hacer clic con el botn derecho dentro de la nueva pgina (la que tiene el texto none) y
elegir propiedades en el men popup, F General:
Name: tabpage_actividades
TabText: Actividades
OK
43.3.2. Insertar los dems controles en la ventana (como lo muestra la figura)
Un DataWindow control. En las propiedades del nuevo DataWindow elegir name:
dw_act_actividades y seleccionar VscrollBar.
Los botones Nuevo (cb_nuevo_a), Borrar (cb_borrar_a), Actualiz ar (cb_actualizar_a),
Cargar Datos (cb_cargar_a). Los nombres de los botones deben ser diferentes a los
utilizados en la pgina Empleados.
Los botones para desplazarse por las filas del DataWindow: Primero (cb_primero_a),
Siguiente (cb_siguiente_a), Ante rior (cb_anterior_a), Ultimo (cb_ultimo_a).
43.3.3. Crear un DataWindow Object en el que se relacionen el cdigo y nombre de los
empleados. (se usa el botn DataWindow de la barra de herramientas PowerBar)
En la barra de herramientas F New F DataWindow: Grid
w Data Source F SQL Select F Next
En la ventana Select Tables seleccionar la tabla Empleado F Open
Seleccionar las columnas cdigo de empleado, nombre y apellido del empleado.
Pasar a diseo de salida o vista de diseo: F Return
Seleccionar colores y bordes F Aceptar selecciones F Finalizar
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 39 de 40
Pgina 40 de 41
OK
File
w
w
w
Pgina 41 de 42
//seleccionada actualmente
dw_act_empleados.ScrollToRow(l_fila_actual - 1) //se desplaza a la
//fila anterior
dw_act_empleados.SetColumn(1) //se selecciona la primera columna
Para el botn que de desplazamiento hasta la ultima fila (cb_ultimo), evento clicked:
//-------Evento: clicked-------------//-------Control: cb_ultimo---------long l_numfilas
dw_act_empleados.SetFocus()
l_numfilas = dw_act_empleados.RowCount() //se obtiene el nmero de
//filas en el datawindow
dw_act_empleados.scrolltorow(l_numfilas) //se desplaza hasta la ltima
dw_act_empleados.setcolumn(1) //se selecciona la primera columna
Para el botn Cargar Datos (cb_cargar), evento clicked:
//-------Evento: clicked-------------//-------Control: cb_cargar---------long l_numfilas
//se recibe la informacin de la base de datos en el datawindow
// tab_actualizaciones.tabpage_empleados.dw_act_empleados
tab_actualizaciones.tabpage_empleados.dw_act_empleados.retrieve()
l_numfilas=tab_actualizaciones.tabpage_empleados.dw_act_empleados.RowCount()
tab_actualizaciones.tabpage_empleados.dw_act_empleados.ScrollToRow(l_numfilas)
//Si el nmero de filas en el datawindow es 0 entonces se deshabilita
//el botn de borrar, de lo contrario, se habilita.
if l_numfilas = 0 then
cb_borrar.enabled = false
else
cb_borrar.enabled = true
end if
Para el botn de insertar un nuevo empleado (cb_nuevo), evento clicked:
//-------Evento: clicked-------------//-------Control: cb_nuevo-----------tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetTransObject(SQLCA)
long fila_nueva
//la nueva fila se inserta al final del datawindow
fila_nueva = tab_actualizaciones.tabpage_empleados.dw_act_empleados.InsertRow(0)
//el datawindow toma el foco
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetFocus()
//se desplaza hasta la nueva fila
tab_actualizaciones.tabpage_empleados.dw_act_empleados.ScrollToRow(fila_nueva)
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetColumn(1)
cb_actualizar.enabled = true
Para el botn de borrar un empleado (cb_borrar), evento clicked:
//-------Evento: clicked-------------//-------Control: cb_borrar----------long l_fila_actual
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (false)
//se guarda el nmero de la fila seleccionada, que es la que se
//eliminar
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 42 de 43
l_fila_actual = tab_actualizaciones.tabpage_empleados.dw_act_empleados.getrow()
//se elimina la fila seleccionada
tab_actualizaciones.tabpage_empleados.dw_act_empleados.DeleteRow (l_fila_actual)
//si despus de borrarla no quedan filas en el datawindow,
//se deshabilita el botn de borrar
if tab_actualizaciones.tabpage_empleados.dw_act_empleados.RowCount()=0 then
cb_borrar.enabled = false
else
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetColumn(1)
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetFocus()
end if
cb_actualizar.enabled = true
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (true)
Para el botn de actualizacin de datos, despus de haber realizado inserciones y/o borrados
(cb_actualizar), evento clicked:
//-------Evento: clicked-------------//-------Control: cb_actualizar----------tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (false)
//si la actualizacin de la base de datos no es exitosa, se deshacen
//todos los cambios con la orden rollback.
//De lo contrario, se realizan todos los cambios con la orden commit.
if tab_actualizaciones.tabpage_empleados.dw_act_empleados.Update() = -1 then
rollback;
else
commit;
end if
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SetRedraw (true)
//Si despus de actualizar la base de datos no quedan filas en el
//datawindow, se deshabilita el botn de actualizar.
if tab_actualizaciones.tabpage_empleados.dw_act_empleados.RowCount() = 0 then
cb_actualizar.enabled = false
else
cb_actualizar.enabled = true
end if
43.6. Los scripts para los eventos de los controles de las pginas restantes (actividades, niveles
y departamentos) son similares a los descritos en el apartado anterior: 39.5 , modificando
los nombres de los controles y los datawindows.
43.7. Se agregar un nuevo botn, que permitir exportar los datos del datawindow a diferentes
formatos. La apariencia de la ventana ser la siguiente:
Pgina 43 de 44
Agregar un nuevo botn, hacer click derecho sobre l y elegir la opcin Properties
del men popup.
w Name F cb_exportar
w Text F Exportar.
w OK
Hacer click derecho sobre el botn Exportar y elegir la opcin Script del men popup.
Elegir el evento clicked en la parte superior izquierda de la ventana del editor y
escribir el siguiente programa:
//--Evento clicked--//--cb_exportar-----integer i_tab
i_tab = tab_actualizaciones.SelectedTab
//la funcin SelectedTab retorna el nmero del tabpage seleccionado.
CHOOSE CASE i_tab
CASE 1 //el tabpage seleccionado es el 1 (empleados)
tab_actualizaciones.tabpage_empleados.dw_act_empleados.SaveAs("",EXCEL!, TRUE)
//la funcin SaveAs permite guardar los datos que estn en un datawindow
//en diferentes formatos de archivo. Esta funcin utiliza el cuadro de
//dilogo "guardar archivo" y permite al usuario elegir el formato al que
//desea exportar los datos. En este caso el formato por defecto es el de
//la hoja de clculo EXCEL
CASE 2 //el tabpage seleccionado es el 2 (actividades)
tab_actualizaciones.tabpage_actividades.dw_act_actividades.SaveAs("",EXCEL!, TRUE)
CASE 3 //el tabpage seleccionado es el 3 (departamentos)
tab_actualizaciones.tabpage_departamentos.dw_act_departamentos.SaveAs("", EXCEL!,
TRUE)
CASE 4 //el tabpage seleccionado es el 4 (niveles)
tab_actualizaciones.tabpage_niveles.dw_act_niveles.SaveAs("", EXCEL!, TRUE)
END CHOOSE
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 44 de 45
43.8. De manera similar, agregar un botn adicional para cerrar la ventana de actualizaciones
(w_actualizaciones)
Properties F Name F cb_cancelar
Properties F Text F Cancelar
OK
El script para el evento clicked de este botn es:
Close (parent)
44. Crear una ventana como la siguiente:
Explorador
En esta ventana se utilizar un nuevo control: TreeView. El TreeView es un control que permite
desplegar informacin jerarquicamente. Cada item en un TreeView consiste de texto y una
imagen, los cuales pueden ser manipulados durante una rutina de programa.
El aspecto de la ventana ser similar al siguiente:
Como puede verse, este TreeView tendr cuatro niveles. El primer nivel solo constar de un tem
con el texto empresa. Los tems del segundo nivel corresponden a los departamentos de la
empresa, el tercero a los empleados de cada departamento, y el cuarto a las actividades
asignadas a los emp leados.
44.1. En la barra de herramientas:
File F New F Object F Window
Con el botn derecho sobre la nueva ventana, modificar las propiedades de la ventana vista de
Properties:
Window Type F Popup.
Las opciones Resizable y Maximize Box no debern seleccionarse.
44.2. Insertar un control TreeView en la ventana y darle el tamao adecuado. Seleccionar el
control insertado y hacer click con el botn derecho del mouse sobre l.
En la barra de herramientas: Desplegar controles y seleccionar: F Treeview
En el menu Insert FControl F Treeview
w Name Ftv_depto_empleado
w Seleccionar la opcin Lines at Root
w Indent F10
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 45 de 46
w OK
44.2.1. Insertar los dems controles en la ventana (como lo muestra la figura)
Tres botones: Expandir Todo (cb_expandir), Contraer todo (cb_contraer), Cerrar
(cb_cerrar)
44.2.2. Guardar el trabajo: File F Save. El nombre de la nueva ventana ser w_explorador.
44.2.3. Modificar la opcin actualizar del men, para que se abra la nueva ventana:
En la barra de herramientas abrir el menu principal: Open F Object Type:Menu
FSeleccionar menu principal (p.ej. m_entrenamiento) F OK
Agregar la opcin Explorar en el men Personal
Click derecho con el ratn sobre el treeview y seleccionar la opcin Script
Escribir open(w_explorador)
Guardar las modificaciones hechas al men.
44.2.4. Correr la aplicacin y probar el funcionamiento del men y la nueva ventana.
44.2.5. Crear un DataWindow Object en el que se relacionen el nombre de los departamentos.
(se usa el botn DataWindow de la barra d e herramientas PowerBar)
En la barra de herramientas F New F DataWindow: Tabular
w Data Source F SQL Select F Next
En la ventana Select Tables seleccionar la tabla departamento FOpen
Seleccionar las columnas cdigo de departamento y nombre de departamento.
Pasar a diseo d e salida o vista de diseo: F Return
Seleccionar colores y bordes F Aceptar selecciones F Finalizar
Colocar los encabezados apropiados.
File F Save. En la ventana Save DataWindow:
w Name: d_depto
w OK
w Cerrar la ventana de edicin del DataWindow
44.2.6. Crear un DataWindow Object en el que se relacionen el nombre de los empleados de un
departamento determinado. (se puede usar uno de los ya existentes si cumple con esta
condicin).
En la barra de herramientas F New F DataWindow: Tabular
w Data Source F SQL Select F Next
En la ventana Select Tables seleccionar la tabla empleado FOpen
Seleccionar las columnas cdigo de empleado, apellido y nombre de empleado.
Pasar a diseo de salida o vista de diseo: F Return
Seleccionar colores y bordes F Aceptar selecciones F Finalizar
Colocar los encabezados apropiados.
En el men Design elegir la opcin Retrieval Arguments...
En la ventana Specify Retrieval Arguments: name Fdept_id, type Fnumber
OK
Oprimir el Tab "Where" en la parte inferior de la pantalla:
w Column F"empleado"."dept_id" (Al hacer click en el espacio en blanco se
puede elegir la columna deseada)
w Operator F= (Al hacer click en el espacio en blanco se puede elegir el
operador deseado)
w Value : Hacer click con el boton derecho sobre el espacio en blanco, elegir
arguments en el men popup, y luego elegir :dept_id, que es el mismo
argumento que se definin en Retrieva Arguments.
Pasar a diseo de salida: En la barra de herramientas es el cono que dice "SQL"
File F Save. En la ventana Save DataWindow:
w Name: d_empleados_por_depto
w OK
w Cerrar la ventana de edicin del DataWindow
44.2.7. Crear un DataWindow Object en el que se puedan almacenar las actividades de un
empleado dado. (se puede usar uno de los ya existentes si cumple con esta condicin)
En la barra de herramientas F New F DataWindow: Tabular
w Data Source F SQL Select F Next
En la ventana Select Tables seleccionar la tabla actividad y la tabla empleado FOpen
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 46 de 47
Pgina 47 de 48
//se declara un objeto TreeViewItem para manipular los valores del item
//que se agregar
TreeViewItem ltvi_Nuevo
// Se agrega cada item
For li_Cont = 1 To ai_filas
// Se llama a la funcin lf_config_item para asignar los valores
//del nuevo item a partir de los datos almacenados en el
//DataStore
lf_config_item(ai_nivel, li_Cont, ltvi_Nuevo)
// Se agrega el item despus del ltimo hijo
If tv_depto_empleado.InsertItemLast(al_Parent, ltvi_Nuevo) < 1 Then
// Si hay Error
MessageBox("Error", "Error al insertar item", & Exclamation!)
Return -1
End If
Next
Return ai_filas
Cerrar la ventana del editor y guardar el trabajo adelantado
Nota: Si se quieren modificar los argumentos de una funcin ya declarada, se debe en la
vista de Script desplegar la lista de objetos, elegir el objeto function y escoger la funcin a
modificar.
44.4.2. Funcin lf_config_item
En la vista de Scipt del treeview desplegar la lista de objetos y seleccionar
F (Functions)
Aparecer debajo un espacio (como el que se mostr en la figura) para que sea
declarada la funcin y las variables respectivas.
La nueva funcin tiene las siguientes especificaciones:
w Name F lf_config_item
w Access F Public
w Return 4 (None)
w Arguments:
Name F ai_nivel, Type F Integer, Pass By F Value
F Oprimir Add
Name F ai_fila, Type F Integer, Pass By F Value F Oprimir
Add
Name F atvi_nuevo, Type F TreeViewItem, Pass By
F Reference F OK
El cdigo para esta funcin es el siguiente:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Se configuran los atributos para el nuevo item a partir de los datos
// en el DataStore.
// Los atributos de TreeViewItem que se usan son:
// Label (el texto que se despliega en el TreeView)
// Data (es la informacin que contiene dicho item)
// Los argumentos de esta funcin son:
// integer ai_nivel = el nivel del TreeViewItem en el TreeView
// integer ai_fila = # de la fila del DataStore de la que se obtendr
// la informacin
// atvi_nuevo = TreeViewItem que se agrega al TreeView. Los valores de
// sus atributos. (Label y Data) son los que se determinan a
// continuacin
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Choose Case ai_nivel
Case 1
// El nico item de primer nivel tiene como Label la
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 48 de 49
Pgina 49 de 50
Pgina 50 de 51
End if
li_filas = ids_datos[li_nivel].Retrieve(li_DeptID)
// Actividades X Empleado
If li_nivel = 4 Then
li_EmpID = Integer(ltvi_actual.Data)
ids_datos[li_nivel].Reset()
ids_datos[li_nivel].SetTransObject(sqlca)
// Se cargan los datos en el DataStore usando el argumento cdigo
// de empleado
li_filas = ids_datos[li_nivel].Retrieve(li_EmpID)
End If
lf_agregar_items(handle, li_nivel, li_filas)
Compilar el script (Ctrl + L) y cerrar la ventana del editor.
44.5.3. En el botn Expandir Todo (cb_expandir):
Hacer click con el botn derecho sobre cb_expandir y seleccionar la opcin script en
el men popup.
En el editor, seleccionar el evento clicked. El siguiente es el cdigo para dicho
evento:
-------Evento: clicked--------------------Control: cb_expandir--------Long ll_handle
ll_handle = tv_depto_empleado.FindItem ( RootTreeItem!, 0 )
tv_depto_empleado.ExpandAll ( ll_handle )
Compilar el script: en el men Edit F Compile Script (Ctrl+L).
44.5.4. En el botn Contraer Todo (cb_contraer):
Hacer click con el botn derecho sobre cb_contraer y s eleccionar la opcin script en
el men popup.
En el editor, seleccionar el evento clicked. El siguiente es el cdigo para dicho
evento:
-------Evento: clicked--------------------Control: cb_contraer--------Long ll_handle
ll_handle = tv_depto_empleado.FindItem ( RootTreeItem!, 0 )
tv_depto_empleado.CollapseItem ( ll_handle ).
Compilar el script: en el men Edit
Cerrar la ventana del editor.
44.5.5. Para el botn Cerrar (cb_cerrar)
-------Evento: clicked--------------------Control: cb_cerrar---------
close(w_explorador)
Compilar el script: en el men Edit F Compile Script (Ctrl+L).
44.6. Guardar el trabajo adelantado y correr la aplicacin para comprobar el funcionamiento
del TreeView.
45. Modificar la ventana creada en el paso 40 de la siguiente forma:
Pgina 51 de 52
Explorador
Pgina 52 de 53
Aparecer debajo un espacio (como el que se mostr en la figura) para que sea
declarada la funcin y las variables respectivas.
La nueva funcin tiene las siguientes especificaciones:
w Name 4wf_lv_agregar_items
w Access 4Public
w Return 4Integer
w Arguments:
Name 4ai_nivel, Type4Integer, Pass By 4Value 4 Oprimir Add
Name 4ai_filas, Type4Integer, Pass By 4Value 4OK
En la vista de Script colocar el siguiente cdigo para esta funcin:
-------funcin wf_agregar_lv_items-------------//////////////////////////////////////////////////////////////////////////////////
//
//Funcin para agregar items al ListView
//usando los datos del DataStore
//
// Argumentos:
// integer ai_nivel (el nivel en que se insertar)
// integer ai_filas (nmero de items a insertar)
//
//////////////////////////////////////////////////////////////////////////////////
Integer li_Cont
ListViewItem llvi_Nuevo
// Se borran todas las columnas existentes en el
// ListView
For li_Cont = 1 To ii_columnas
lv_dept_empleados.DeleteColumn(1)
Next
// Se agregan las columnas al ListView
Choose Case ai_nivel
Case 2
lv_dept_empleados.AddColumn("Nombre", Left!, 500)
lv_dept_empleados.AddColumn("ID", Right!, 150)
ii_columnas = 2
Case 3
lv_dept_empleados.AddColumn("Apellido", Left!, 700)
lv_dept_empleados.AddColumn("Nombre", Left!, 700)
lv_dept_empleados.AddColumn("ID", Right!, 150)
ii_columnas = 3
Case 4
lv_dept_empleados.AddColumn("Descripcin", Left!, 900)
lv_dept_empleados.AddColumn("ID Nivel", Right!, 250)
ii_columnas = 2
End Choose
// Se agrega cada item al ListView
For li_Cont = 1 To ai_filas
// Se llama a la funcin para configurar los valores de los
// items del ListView a partir de los datos del DataStore
wf_config_lv_item(ai_nivel, li_Cont, llvi_nuevo)
// Se agrega cada item after the last child
If lv_dept_empleados.AddItem(llvi_nuevo) < 1 Then
MessageBox("Error", "Error al agregar item",
Exclamation!)
Return -1
End If
Next
Return ai_filas
ENTRENAMIENTO EN P OWERB UILDER 9.0
Ing. Ismael Castaeda Fuentes
Pgina 53 de 54
Pgina 54 de 55
Pgina 55 de 56
Pgina 56 de 57
Pgina 57 de 58
Nombre de archivo:
EntrenamientoPowerBuilder9_0.doc
Directorio:
C:\OODB\PB_9
Plantilla:
C:\WINDOWS\Application Data\Microsoft\Plantillas\Normal.dot
Ttulo:
Entrenamiento en PowerBuilder 9
Asunto:
Ejercicio de entrenamiento
Autor:
Ismael Castaeda Fuentes
Palabras clave:
PowerBuilder, Bases de Datos, Aplicativo
Comentarios:
Herman Sandoval M. colabor en la edicin de esta versin.
Fecha de creacin:
30/08/03 11:03 A.M.
Cambio nmero:
4
Guardado el:
30/08/03 11:10 A.M.
Guardado por:
Ismael Castaneda Fuentes
Tiempo de edicin:
57 minutos
Impreso el:
30/08/03 12:08 P.M.
ltima impresin completa
Nmero de pginas:
58
Nmero de palabras:
12,899 (aprox.)
Nmero de caracteres:
73,529 (aprox.)