Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Power Builder 7.0. Nivel Básico
Power Builder 7.0. Nivel Básico
pe
La Pontificia
PowerBuilder 7.0
Definición. PowerBuilder es un entorno gráfico de programación que está compuesto de
diferentes herramientas que permiten el desarrollo rápido de aplicaciones. Con estas
herramientas se pueden desarrollar aplicaciones Cliente / Servidor a través de ODBC (Open
DataBase Connectivity) o Drivers Nativos para la Base de Datos.
Una apliación Cliente / Servidor pone en comunicación una estación de trabajo con un
Servidor de Base de Datos Central. Este modelo consiste en utilizar una Base de Datos que
reside en una máquina separada denominada Servidor. El Software de gestión de Base de
Datos se ubica en las estaciones de trabajo remotas (Clientes). Las aplicaciones que se
ejecutan en las estaciones cliente, acceden a los datos que se encuentran en el servidor.
Estacion
Servidor Estacion
Servidor (Cliente
(Base (Cliente
(BasededeDatos)
Datos)
Nombre de la Aplicación
Nombre de la
Ventana creada.
Ventana
de
USO DE CONTROLES
Los controles son objetos que se ubican dentro de una ventana. Loas controles muestran
datos, aceptan datos o validan datos. Los controles responden a una acción del usuario como
por ejemplo un clic de ratón.
Los controles como cualquier otro objeto tiene sus propios atributos y eventos, alguno
controles son objetos Estándar Windows, otros son particulares de PowerBuilder .
Ejemplo:
Desarrollar una aplicación que permita el ingreso del nombre de usuario y su
respectiva clave de acceso.
1. Crear una nueva aplicación dando un clic en el icono New del PowerBar1.
2. En la ventana de diálogo New, seleccionar la ficha Objects y dentro de esta
seleccionar Window, luego pulsar el botón OK.
3. Ubicar en la ventana los siguientes controles y cambiar las propiedades respectivas.
Tres Controles StaticText.
Dos Controles SingleLineEdit
Un Control Picture.
Cambiar las propiedades siguientes.
Control Propiedad Valor
Window Title Seguridad de Sistema
Tipos de Datos. Los identificadores en PowerScript, identifican objetos tales como variables,
etiquetas, funciones, ventanas, controles y menús. Un identificador debe comenzar con una
letra y utilizar como máximo cuarenta caracteres, también debe tenerse en cuenta lo siguiente.
No debe contener espacios en blanco.
Puede incluir algunos caracteres no alfabéticos como:
Subrayado _
Signo de Dólar $
Signo de Número #
Signo de tanto por ciento %
Los identificadores no diferencian las mayúsculas ni minúsculas, el identificador Lib_nombre
es igual a lib_nombre.
Tipos de Datos Estandar. Cierto tipo de datos son intrínsicos al lenguaje PowerScript, pero
la mayoría son tipos de datos que son reconocidos en otros lenguajes de programación.
La siguiente tabla muestra los tipos de datos estándar.
Tipo de Dato. Descripción.
Blob (Binary Large Object) Datos sin formato, Por ejemplo una imagen o un párrafo.
Boolean True o False
Char o Character Un único carácter.
Date Fecha
DateTime Combinación de una fecha y una hora.
Decimal Números decimales con signo hasta una longitud de 18
dígitos, el punto decimal no se cuenta como dígito.
Double Números en como flotante, tiene hasta 15 dígitos de
precisión y su rango va desde 2.2253-308 a 1.7976-308
Integer, Int Son enteros con signo de 16 bits.
Long Son enteros con signo de 32 bits, el rango va desde –
2,147,483,648 a +2,147,483,647
Real Números en coma flotante con una precisión de hasta 6
dígitos. Rango desde 1.1754-38 a 3.4028+38
String Contiene desde 0 hasta 60000 caracteres ASCII
Time Hora-
Declaración de Variables. Para declarar una variable se requiere solamente de dos partes: El
tipo de dato y El nombre de la variable.
Inicialización de Variables
Literales. Se puede dar el valor inicial a la variable al declararla, por ejemplo:
Int GranTotal=3, SubTotal=0
String Metodo=”A34”
Date Hoy=1998-11-15
Cada uno de los valores utilizados en la expresión anterior para inicializar una
variable literal.
Matrices. Un Array es una colección de elementos indexados de tipos de datos simples.
Un Array puede tener uno o mas dimensiones, es una serie de valores con un único
nombre. Se especifica su tamaño al declararla. Por ejemplo.
Int A[5]={1,2,3,4,5}
A los valores contenidos en la matriz se accede por medio del índice.
Matrices Multi-dimensionales. Las matrices pueden tener múltiples dimensiones.
Codigo de la ventana
Cb_Aceptar / Clicked
MessageBox("Sistema de Seguridad","Gracias por su visita")
Close(w_ventana_01)
Cb_Cancelar / Clicked
Close(w_ventana_01)
Ejemplo
Crear una apliación que calcule el los descuentos de ley de un trabajador y el sueldo
neto.
Los Controles
sle_Haber, sle_Cts,
sle_Afp, sle_Totd y
sle_Neto tendrán
que estar
Cb_calcular / Clicked
Real Haber,Cts,Essalud,Afp,Totd,Neto
Haber=Real(sle_haber.Text)
Essalud=Haber * 0.03
Cts=haber * 0.06
Afp=haber * 0.06
Totd=Essalud + Cts + Afp
sle_Afp.text=String(Afp)
sle_Cts.text=String(Cts)
sle_Essalud.text=String(Essalud)
sle_Totd.Text=String(totd)
sle_neto.Text=String(Neto)
Cb_Otro / Clicked
sle_haber.Text="0"
sle_Afp.text="0"
sle_Cts.text="0"
sle_Essalud.text="0"
sle_Totd.Text="0"
sle_neto.Text="0"
IF … THEN ELSE.
Una estructura de control utilizada en el Script, que ejecuta una acción si la condición lógica
es verdadera.
Sintaxis 1
If condición Then
Bloque de instrucciones
Else
Bloque de instrucciones
Endif
En está sintaxis, primero se evalúa la condición lógica, y si el resultado de la
condición es verdadera, se ejecutarán las instrucciones que se encuentren entre If y
Else, y si el resultado es falso, se ejecutarán las instrucciones que se encuentren entre
Else y Endif.
Sintaxis 2
If condición Then
Bloque de instrucciones
Endif
En está sintaxis, primero se evalúa la condición lógica, y si el resultado de la
condición es verdadera, se ejecutarán las instrucciones que se encuentren entre If y
Endif.
CHOOSE CASE.
La estructura de control Cose Case, utiliza el valor de una expresión o de una variable para
decidir entre una serie de opciones. El valor de la expresión determina que opción seleccionar.
Sintaxis:
CHOOSE CASE Expresión.
CASE opción1
Bloque de Instrucciones.
CASE opción2
Bloque de Instrucciones.
CASE opciónn
Bloque de Instrucciones.
CASE ELSE
Bloque de Instrucciones.
END CHOSE.
DO … LOOP.
Ejecuta un bloque de instrucciones hasta que se produzca una condición de finalización.
Sitaxis:
1. Hacer Mientras la condición sea verdadera.
DO WHILE condición
Instrucciones.
LOOP
2. Hacer hasta que la condición llegue a ser verdadera.
DO UNTIL condicion
Instrucciones.
LOOP
3. Repetir mientras la condición sea verdadera.
DO
Instrucciones.
LOOP WHILE condición
4. Repetir hasta que la condición llegue a ser verdadera.
DO
Instrucciones.
LOOP UNTIL condicion.
FOR … NEXT.
La sentencia FOR … NEXT ejecuta un bloque de sentencias en un determinado numero de
veces, los argumentos que se especifican en la sentencia determina el numero de veces que se
ejecuta el bloque
Sintaxis:
FOR nom_var=Inicial TO final STEP (Incremento)
Bloque de Instrucciones
NEXT.
Controles
Código de la aplicación
Cb_aceptar / Clicked cb_otro / Clicked
Real haber,cts,afp,essalud,totd,neto sle_empleado.text=""
If rb_gerente.checked=true then sle_haber.text="0"
haber=2500 sle_cts.text="0"
end if sle_afp.text="0"
If rb_administrador.checked=true then sle_essalud.text="0"
haber=2000 sle_totald.text="0"
end if sle_neto.text="0"
If rb_secretaria.checked=true then
haber=1500
end if
cts=haber * 0.03
afp=haber * 0.06
essalud=haber * 0.06
totd=cts+afp+essalud
neto=haber - totd
sle_haber.text=string(haber)
sle_afp.text=string(afp)
sle_cts.text=string(cts)
sle_essalud.text=string(essalud)
sle_totald.text=string(totd)
sle_neto.text=string(neto)
MaskDataType. Especifica el tipo de dato para el control, los valores pueden ser:
DateMask!, DateTimeMask!, DecimalMask!, NumericMask!, StringMask!, TimeMask!
Min. Especifica el valor mínimo que se podrá ingresar en el control.
Max. Especifica el valor máximo que se podrá ingresar en el control.
Spin. Especifica si se desea mostrar un scroll de tipo spinner en el control.
Ejemplo
Realice una aplicación en donde se ingrese los datos de los alumnos mas las notas
respectivas del curso. Al momento de ingresar las notas, solo deberá de aceptar números.
Además deberá calcular el promedio y la condición.
El diseño deberá de quedar de la siguiente manera.
Controles EditMaskControl
em_nota1 y em_nota2
Propiedad (ficha mask)
Mask = ##
MaskDataType: numerickask!
Spin = Activado
Min = 0
Max = 20
Incremente = 1
Ejemplo
Desarrolle una aplicación en donde se registren nuevos productos, se ingresen la cantidad
y el precio, se calcule el subtotal y el total a pagar y esos se agreguen a unas listas.
El diseño del formulario tendrá que quedar de la siguiente manera.
Control Propiedad valor
sle_1 name sle_nuevop
ddlb_1 name ddlb_productos
sle_2 name sle_productos
em_1 name em_cantidad
em_2 name em_precio
lb_1 name lb_productos
lb_2 name lb_cantidades
lb_3 name lb_precios
lb_4 name lb_subtotales
sle_3 name sle_totalc
sle_4 name sle_totalp
sle_5 name sle_totals
sle_6 name sle_totalpagar
cb_aceptar / clicked
sle_productos.text=ddlb_productos.text
cb_agregar2 / clicked
Real Cantidad,Precio,SubTotal,Total
Cantidad=Real(em_cantidad.text)
Precio=Real(em_precio.text)
SubTotal=Cantidad * Precio
Total=Real(sle_totalpagar.Text)
Total=Total + SubTotal
lb_productos.AddItem(sle_productos.Text)
lb_cantidades.AddItem(em_cantidad.Text)
lb_precios.AddItem(em_precio.Text)
lb_subtotales.AddItem(String(SubTotal))
sle_totalpagar.Text=String(Total)
sle_totalc.text=String(real(sle_totalc.text)+Cantidad)
sle_totalp.text=String(real(sle_totalp.text)+Precio)
sle_totals.text=String(real(sle_totals.text)+SubTotal)
cb_eliminar / Clicked
Integer Indice
Real Cantidad,Precio,SubTotal,Total
Indice=lb_productos.SelectedIndex()
Cantidad=Real(lb_cantidades.text(Indice))
Precio=Real(lb_precios.text(Indice))
SubTotal=Real(lb_subtotales.text(Indice))
sle_totalc.text=String(real(sle_totalc.text) - Cantidad)
sle_totalp.text=String(real(sle_totalp.text) - Precio)
sle_totals.text=String(real(sle_totals.text) - SubTotal)
sle_totalpagar.Text=sle_totals.text
lb_productos.DeleteItem(Indice)
lb_cantidades.DeleteItem(Indice)
lb_precios.DeleteItem(Indice)
lb_subtotales.DeleteItem(Indice)
cb_limpiar / Clicked
lb_productos.Reset()
lb_cantidades.Reset()
lb_precios.Reset()
lb_subtotales.Reset()
ddlb_productos.Reset()
sle_productos.Text=""
em_cantidad.Text="0"
em_precio.Text="0"
sle_totalc.Text="0"
sle_totalp.Text="0"
sle_totals.Text="0"
sle_totalpagar.Text="0"
Este otro ejemplo es similar al anterior, con la diferencia de que tendrá que ir agregando
en las listas e ir sumando los totales en la parte inferior.
Minute. Retorna un entero que corresponde a los minutos de una hora dada.
Ejemplo :
Integer Hora
Hora=Minute(Now())
Now. Retorna la hora del sistema.
Ejemplo :
Time Hora
Hora=Now()
Second. Retorna el numero de segundos de una hora dada.
Ejemplo :
integer Hora
Hora=Second(Now())
Today. Retorna la fecha actual del sistema
Ejemplo :
Date Fecha
Fecha=Today()
Year. Retorna el año de una fecha dada
Ejemplo :
Integer Año
Año=Year(Today())
3. FUNCIONES NUMERICAS
Abs. Obtiene el valor absoluto de un numero
Ejemplo:
i=4
num = Abs(i)
num = Abs (4)
num = Abs (+4)
num = Abs (-4)
Abs (-4.2)
Esta sentencia retorna 4.2.
Desarrolle una aplicación que permita el ingreso de los datos personales de los
alumnos. Se debe de ingresar los nombres, apellido paterno, apellido materno, dirección,
especialidad, semestre, turno, sexo y fecha de registro.
El código deberá de ser autogenerado de la siguiente manera: Tomar el primer carácter
del apellido paterno mas un número consecutivo que tendrá que ir generándose.
El diseño del formulario deberá de ser de la siguiente manera.
cb_aceptar / Clicked
Integer Nregs
String Codigo
Nregs=Lb_Alumnos.TotalItems()+1
Codigo=Left(sle_apepat.text,1)+Left(sle_apemat.text,1)+Trim(string(Nregs))
Codigo=Right("000"+trim(Codigo),3)
Lb_Alumnos.AddItem(Sle_Apepat.text + " " + sle_apemat.text + ", " +
sle_nombres.text)
lb_codigos.AddItem(Codigo)
sle_codigo.Text=Código
cb_nuevo / Clicked
Realícelo ud.
Ejecute su ventana, ingrese los datos respectivos
Pulse el botón Aceptar para generar el código y agregar a la lista los datos.
El código ha sido generado con la primera letra del apellido paterno + la primera
letra del apellido materno + un número correlativo.
Cb_Aceptar / Clicked
Integer Nregs
String Codigo
Nregs=Lb_Alumnos.TotalItems()+1
Codigo=Left(sle_apepat.text,1)+Left(sle_apemat.text,1)+Trim(string(Nregs))
Codigo=Right("000"+trim(Codigo),3)
Lb_Alumnos.AddItem(Sle_Apepat.text + " " + sle_apemat.text + ", " +
sle_nombres.text)
lb_codigos.AddItem(Codigo)
sle_codigo.Text=Codigo
Limpiar_Controles();
Cb_nuevo / Clicked
Limpiar_Controles();
Ejecute la ventana llene los datos respectivos y pulse el botón Cancelar, deberá de
limpiar los controles.
Como trabajo práctico cree una función que permita
Desactivar los controles: (f_desactivar)
sle_codigo, em_fecha, sle_nombres, sle_apepat, sle_apemat, sle_direccion, ddlb_sexo,
ddlb_especialidad, ddlb_semestre, ddlb_turno y cb_aceptar
Otro Ejemplo
Realice una aplicación que permita calcular el sueldo neto de un trabajador y ademas los
descuentos respectivos.
Los descuentos y el sueldo neto se tendrán que ir calculando cada vez que se cambie la
categoría o algún descuento (para calcular los descuentos y sueldo neto crear una función)
El diseño del formulario es el siguiente:
Para dar nombre a los controles como práctica tendrá que fijarse el código de la aplicación
y de acuerdo a eso poner los nombres respectivos.
Código de la aplicación.
Crear una función con el nombre de Calcular
Para crear la función, seleccione la opción Insert de la barra de menú, y dentro de esta
seleccione Function.
Aquí se escribe el
código de la función Seleccione (None) Nombre de la función
cbx_cts – cbx_afp – cbx_essalud / Clicked (en los tres poner el mismo código)
Calcular();
Este control contiene una serie de páginas donde cada página podrá
contener a su vez controles
Propiedades.
Aligment. Especifica la alineación del texto en la etiqueta de cada página: Los valores son
: Left!, Center!, Right!.
BackColor. Especifica un valor numérico correspondiente al color del fondo.
Enabled. Activa o Desactiva el control.
Perpendicular Text. Especifica si el titulo de cada página se alineará en forma vertical.
SelectedTab. Especifica cual de las paginas se encuentra seleccionada.
Para insertar mas páginas dentro de este control, ubique el puntero del mouse en la parte
superior de este control, realice un click con el botón contrario y seleccione la opción
InsertTabPage.
Para eliminar una página, realice un click contrario sobre la página que desee eliminar y
seleccione la opción Delete. (no se olvide que tendrá que realizar click contrario dentro de
la página)
Ejemplo:
Desarrollar una aplicación que permita ingresar los datos de los trabajadores. Usar un
control Tab con dos páginas.
En la primera página se debe ingresar los datos generales del trabajador.
En la segunda página se debe seleccionar la condición del trabajador (Contratado o
Nombrado). Si es Contratado, su haber básico será 1500 y si es nombrado 2000.
Si es Nombrado realizar los descuentos de ley, de lo contrario es descuento será 0.
Nota: Para cambiar el nombre de la página dentro de un tab, realice un clic contrario
dentro de la página que quiere cambiar el nombre, luego en la ventana de propiedades
seleccione la propiedad name y ponga el nombre que desee.
El diseño del formulario tendrá que quedar de esta manera: (grabe con w_tabpage).
Diseño de la primera página
Control Propiedad Valor
Tab_1 Name Tab_Trabajador
tabpage_1 Name Tabpg_datos
Caption Datos del Trabajador
tabpage_2 Name Tabpg_sueldo
Caption Sueldo del trabajador
Dentro de Tabpg_datos va:
Sle_1 Name sle_codigo
Sle_2 Name sle_nombres
Sle_3 Name sle_apellidos
Sle_4 Name sle_direccion
Sle_5 Name sle_dni
em_1 Name em_fecha
cb_1 Name cb_aceptar
Caption Aceptar
Diseño de la segunda página
Dentro de tab_pg_sueldo va:
rb_1 Name rb_contratado
Caption Contratado
rb_2 Name rb_nombrado
Caption Nombrado
Sle_6 Name sle_haber
Sle_7 Name sle_afp
Sle_8 Name sle_cts
Sle_9 Name sle_essalud
Sle_10 Name sle_totald
Sle_11 Name sle_neto
cb_2 Name cb_otro
Caption Otro
cb_1 Name cb_cerrar
Caption Cerrar
Prof: Henry Salcedo Arriarán 37
henry_salcedo@warinet.com.pe
Instituto de Educación Superior Web-Site: www.warinet.com.pe
La Pontificia
DISEÑO DE MENUS
MENUS. Para añadir un menú, primero es preciso crearlo y después asociarlo a la ventana en
que va a aparecer. Esta asociación se realiza desde el Window Painter.
Ejemplo
Diseñar un menú con las siguientes características.
Alumnos
Registro de nuevos alumnos Alt + R
Matricula de alumnos Alt + M
Consulta por sección Alt + C
Cursos
Registro de nuevos cursos
Actualización Alt + A
Profesores
Registro de nuevos profesores Alt + P
Actualización de datos
Salir
Salir de la Aplicación
Solución
Propiedades
Ventana de Código
Seleccione untitled0 del TREE VIEW, realice un click con el botón contrario y
seleccione la opción Insert Sibmenu Item
Luego ingrese el título para la primera opción (en este caso escriba &Alumnos)
Seleccione la opción &Alumnos y realice un click con el botón contrario, en la ventana
que se despliega seleccione la opción Insert Submenu Item .
Para crear el siguiente elemento de Alumnos. Seleccione &Alumnos del Tree View,
realice un click con el botón contrario, en la ventana que se despliega seleccione la
opción Insert Submenu Item.
Escriba el título para el nuevo item. (&Matricula de alumnos).
Para crear los sub menus de Cursos, siga los mismos procedimientos realizados para los
sub menús anteriores.
Al final el diseño del menú tendrá que quedar de la siguiente manera.
el botón .
En la ventana que se activa seleccione el menú que desea asociar a la ventana (En este
caso seleccione m_principal).
Grabe la ventana con el nombre w_principal y cierre, ejecute la ventana.
ESCRIBIR EL CODIGO DE UN MENU
Abra el menú que se ha creado anteriormente (m_principal).
Seleccione la opción dentro del menú al cual desea asociar el código.
Realice un click con el botón secundario y seleccione la opción Script.
se desea mostrar al momento de ubicar el mouse sobre dicho icono ( en este caso escriba
: Registro de nuevos alumnos)
En la opción ToolbarItemName, seleccione el icono que desea mostrar en la barra de
barra de herramientas.
En la opción ToolbarItemDownName (es opcional), seleccione el icono que desea
mostrar cuando se pulsa sobre este en la barra de herramientas.
Barra de Herramientas
que se ha creado
Nota: No es necesario crear el código para la barra de herramientas, esto se debe a que
se los iconos de la barra de herramientas, se encentran enlazados a las opciones de
menú.
Para crear los otros iconos de la barra de herramientas, siga los mismos procedimientos
anteriores.
Para cambiar el tipo de ventana a mdi, realice lo siguiente:
Abra la ventana que desea modificar.
Si desea que todas la ventanas que se abran desde la barra de menú, se activen dentro de
la ventana principal, tendrá que cambiar la propiedad WindowType, de las otras
ventanas a Child!.
Este es un ejemplo de una ventana tipo child!.
La ventana que se activa, solo podrá moverse dentro de la ventana principal.
3. Seleccionar la opción Create ASA Database y realizar doble clic, se activará la siguiente
pantalla.
4. Seleccione el botón Browse, busque la carpeta en donde desea grabar su base de datos,
indique el nombre de la misma, y realice un clic sobre el botón Guardar.
10. En la ventana de diseño de tablas, ingresar el nombre del campo, tipo de dato y ancho del
mismo
11. Para grabar la nueva tabla de datos, seleccione el icono de guarda, en la ventana que se
activa, ingrese el nombre de la tabla y seleccione el botón Ok.
12. Expanda la carpeta Tables y verá que la nueva tabla se ha agregado a la lista de tablas.
13. Para crear un índice (Llave Principal) dentro de la tabla creada, seleccione la tabla, realice
un clic con el botón derecho, seleccione New, y luego Primary Key.
14. En la ventana de Primary Key (Conexión_Alumnos), Active el check del campo, del cual
desea crear el índice principal y luego grabe la tabla de datos.
15. Dentro de la ventana Object Layout, se mostrará la tabla de datos, con su clave creada, tal
como se muestra a continuación.
Campos Seleccionados
en la consulta
Tabla
seleccionada
5. Para realizar una presentación preliminar, realice un clic sobre el icono , para salir
Consulta con Parámetros o Argumentos. Son consultas que retornan datos de acuerdo a un
parámetro o argumento ingresado.
Crear una consulta que muestre los datos de tabla especialidades, de acuerdo al código
de especialidad ingresado.
argumento creado (en este caso Cod_Esp), luego pulse el botón Paste. Deberá de quedar
de la siguiente manera,
Crear una consulta relacionando dos tablas de datos. Cuando una tabla de datos contiene
campos de otras tablas (Llaves foráneas), como es el caso de la tabla Datos_Alumnos, es
recomendable relacionarla con la tabla principal (Especialidades) tal como se vio en clases
anteriores.
5. Al realizar una presentación preliminar , se mostrara que cada alumno aparece con
el nombre de la especialidad a donde pertenece, y no el codigo_especialidad que se
encuentra en la tabla Datos_Alumnos, esto se debe a la relación que existe entre las dos
tablas.
Practica Calificada.
Agregar a su base de datos las siguientes Tablas.
Indice
Normal
Datos Alumnos Datos Alumnos Datos Alumnos Datos Datos Alumnos Datos Alumnos Datos Alumnos
Alumnos