Sei sulla pagina 1di 58

http:// pbperu.iespana.

es

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 (Cliente
(Base de Datos)

Crear una nueva Librería (Proyecto)

1. Pulse sobre el icono New del PowerBar1


2. En la ventana de dialogo New, seleccionar la ficha Start Wizards y dentro de esta
seleccionar Application, luego pulsar el botón OK

Por: Luis Gabriel Vera Flores 1


ellucho_13@yahoo.es
http:// pbperu.iespana.es

3. Seguidamente se activará una ventana en donde se tendrá que ingresar el nombre de la


Librería y Aplicación con que se desea crear.
Luego pulsar el botón Finish.

Nombre de la Aplicación

Nombre de la Librería

4. Al terminar se activará la una pantalla en donde se comenzará a trabajar y crear nuestro


proyecto.
Crear una nueva ventana (Formulario)

1. Pulse sobre 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. Luego se activará la siguiente venta de diseño.

Por: Luis Gabriel Vera Flores 2


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Ventana creada.

Ventana de
Propiedade
s

Ventana donde se creará el código

4. Para grabar la ventana, pulse sobre el icono de Diskette , luego ingrese el nombre de

la ventana con que desea grabar y seleccione OK.

Por: Luis Gabriel Vera Flores 3


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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 .

Para activar e insertar un control, realizar un clic en la flecha .

Cuadro de Texto Estático. Se utiliza para mostrar títulos y


mensajes, este control muestra un texto que el usuario solo podrá seleccionar mas no
modificar.
Propieades.
Aligment. Especifica el alineamiento del texto en el control. Los valores que puede
seleccionar son: Left!, Center! Y Right!.
BackColor. Especifica un valor numérico correspondiente al color de fondo.
Text. Especifica el texto que se desea mostrar en el control.

Editar Línea Simple. Es una caja de texto, que el usuario


puede utilizar para ingresar una línea de texto o en todo caso para visualizar el contenido
de un campo de una tabla de datos.
Propiedades.
Name. Especifica el nombre que se le desea dar a este control.
BackColor. Especifica un valor numérico correspondiente al color de fondo.
Border. Especifica si el control tiene un borde. Los valores son: True (Tiene borde) o
False (No tiene borde)
BorderStyle. Especifica el estilo del borde del control, los valores son: StyleBox!
(Cuadro), StyleLowerred! (Cuadro 3d), StyleRaised! (3d con Sombra) Y StyleShadowBox
(Cuadro con sombra).
DisplayOnly. Especifica si el texto del control es solo de lectura y no permite realizar
cambios por parte del usuario. Los valores son: True (El usuario no podrá realizar
cambios) y False (El usuario podrá realizar cambios).
Enabled. Especifica si el control está habilitado (Activado).Los valores son: True (El
control está habilitado) y False (El control está dehabilitado).

Por: Luis Gabriel Vera Flores 4


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Limit. Especifica el máximo numero de caracteres (0 a 32,767) que se pueden ingresar en


el control (0 es sin límite)
Text. Especifica el texto que contiene el control
Password. Permite ocultar con una mascara los caracteres digitados.
TextCase. Especifica el formato de ingreso de datos en el cuadro de texto. Los valores
pueden ser: AnyCase! (Cualquier formato), Lower! (Letras minúsculas) y Upper! (Letras
mayúsculas)

. Muestra una imagen de mapa de bits.

Propieades.
Name. Especifica el nombre que se le desea dar a este control.
Border. Especifica si el control tiene un borde. Los valores son: True (Si tiene borde) o
False (no tiene borde)
PictureName. Especifica el nombre del archivo que contenga el gráfico.

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

P_1 Name P_llave


PictureName (buscar una imagen)
St_1 Text Ingrese su Nombre y Contraseña
Font 12, Bold
St_2 Text &Usuario
St_3 Text &Contraseña
Sle_1 Name Sle_Usuario
Text “”

Por: Luis Gabriel Vera Flores 5


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Sle_2 Name Sle_Clave


Text “”
Limit 5
Password (Activado)
Al final el diseño tendrá que ser el siguiente.

Para ejecutar la ventana ingresar a File de la barra de menú y seleccione Run


Preview, en la ventana de dialogo Run/Preview, seleccione el nombre de la
ventana que desea ejecutar y seleccione el botón OK.

Si desea salir de la ventana realice un clic sobre el icono

USO DEL LENGUAJE


Una Aplicación PowerBuilder es una aplicación dirigida por eventos. El usuario controla la
aplicación que se ejecuta provocando eventos. Por ejemplo: Cada acción que realiza el
usuario como abrir una aplicación provoca un evento. El lenguaje utilizado para escribir
procedimientos se denomina PowerScript, que es un lenguaje simple y fácil de aprender.
Uso de Comentarios. Si desea poner comentarios en el codigo de una aplicación utilizar
cualquiera de los dos siguientes símbolos.
/* Indica el inicio de un comentario y */ indica el final de un comentario.
// Indica comentario al final de una línea.

Por: Luis Gabriel Vera Flores 6


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Por: Luis Gabriel Vera Flores 7


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

. Es utilizado para ejecutar una acción cuando el usuario de

un clic sobre el.


Propieades.
Text. Especifica el texto que se desea mostrar en este botón.
Name. Especifica el nombre que se le desea dar a este control.
Cancel. Especifica si el control es el botón Cancelar (El botón Cancelar dispara el evento
Clicked, si el usuario pulsa la tecla ESC). Los valores son: True (El botón es el botón
Cancelar) y False (El botón no es el botón cancelar)
Ejemplo.
Desarrollar una aplicación que permita mostrar el nombre del usuario y su respectiva
clave de acceso. La clave de acceso tendrá una longitud de 5 caracteres, se debe mostrar
asteriscos (*) cuando el usuario ingrese la clave de acceso.
Abra una nueva ventana e inserte los siguientes controles.
Tres Controles StaticText.
Dos Controles SingleLineEdit
Un Control Picture.
Dos Botones de comando

Por: Luis Gabriel Vera Flores 8


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Cambiar las propiedades siguientes.


Control Propiedad Valor
Window Title Seguridad de Sistema

P_1 Name P_llave


PictureName (buscar una imagen)

St_1 Text Ingrese su Nombre y Contraseña


Font 12, Bold

St_2 Text &Usuario

St_3 Text &Contraseña

Sle_1 Name Sle_Usuario


Text “”

Sle_2 Name Sle_Clave


Text “”
Limit 5
Password (Activado)
Cb_1 Name cb_Aceptar
Text Aceptar

Cb_2 Name cb_Cancelar


Text Cancelar

Al final el diseño tendrá que ser el siguiente.

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)

Por: Luis Gabriel Vera Flores 9


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Ejemplo

Crear una apliación que calcule el los descuentos de ley de un trabajador y el sueldo
neto.

El diseño tendrá que quedar de la siguiente manera.

Los Controles

sle_Haber, sle_Cts,
sle_Afp, sle_Totd y
sle_Neto tendrán que
estar desactivados.

Codigo del formulario

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"

Por: Luis Gabriel Vera Flores 10


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Controladores de flujo de programa


Las siguientes sentencias influyen en el flujo de control de un procedimiento que se está
ejecutando. Estos son las sentencias que pueden controlar el orden de ejecución de las
sentencias de un procedimiento.

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.

Por: Luis Gabriel Vera Flores 11


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Por: Luis Gabriel Vera Flores 12


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Permite crear un grupo de opciones en donde solo se podrá


seleccionar una opción del grupo.
Propiedades
Checked. Retorna un valor lógico el cual especifica si el control se encuentra
seleccionado o no. Si el valor devuelto es:
Trae: significa que está seleccionado.
False: significa que no está seleccionado.
Enabled. Especifica un valor lógico, el cual indica si el control está activado o
desactivado.
Trae: Control Activado
False: Control Desactivado
Ejemplo
Desarrolle una aplicación que permita calcular el haber básico de un trabajador de acuerdo
a la categoría seleccionada y calcular los descuentos respectivos.
Inserte los siguientes controles.
Control Propiedad Valor
sle_1 Name sle_empleado
Text en blanco
sle_2 Name sle_haber
Text en blanco
sle_3 Name sle_cts
Text en blanco
sle_4 Name sle_afp
Text en blanco
sle_5 Name sle_essalud
Text en blanco
sle_3 Name sle_totald
Text en blanco
sle_3 Name sle_neto
Text en blanco
rb_1 Name rb_generente
Caption Gerente 2500
rb_2 Name rb_administradoe
Caption Administrador 2000
rb_3 Name rb_secretaria
Caption Secretaria 1500
Cb_1 Name cb_aceptar
Caption Aceptar
Cb_1 Name cb_otro
Caption Otro
Cb_1 Name cb_cerrar
Caption Cerrar

Por: Luis Gabriel Vera Flores 13


ellucho_13@yahoo.es
http:// pbperu.iespana.es

El diseño del formulario tendrá que quedar de la siguiente manera:

Controles desactivados

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)

Grabe la ventana con w_opciones y luego ejecute .

Por: Luis Gabriel Vera Flores 14


ellucho_13@yahoo.es
http:// pbperu.iespana.es

(Casilla de verificación). Permite crear un grupo de opciones las


cuales podrán ser activadas o desactivadas.
Propiedades
Checked. Retorna un valor lógico el cual especifica si el control se encuentra
seleccionado o no. Si el valor devuelto es:
Trae: significa que está seleccionado.
False: significa que no está seleccionado.
Enabled. Especifica un valor lógico, el cual indica si el control está activado o
desactivado.
Trae: Control Activado
False: Control Desactivado
Ejemplo
Desarrolle una aplicación que permita calcular el haber básico de un trabajador de acuerdo
a la categoría seleccionada y calcular los descuentos respectivos (solo de los que se
especifique).
Nota : Para dar los nombres de los controles fíjese el código de la aplicación y de acuerdo
a eso ponga los nombres respectivos.
Los nombres de los controles son los mismos que el ejemplo anterior y de los que se
agregaron son:
Control Propiedad Valor
cbx_1 name cbx_cts
caption CTS 3%
cbx_1 name cbx_afp
caption AFP 6%
cbx_1 name cbx_essalud
caption ESSALUD 3%
El diseño del formulario tendrá que quedar de la siguiente manera

Por: Luis Gabriel Vera Flores 15


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Código del formulario


cb_aceptar / clicked Cb_otro / Clicked
Real haber,cts,afp,essalud,totd,neto sle_empleado.text=""
If rb_gerente.checked=true then haber=2500 sle_haber.text="0"
If rb_administrador.checked=true then haber=2000 sle_cts.text="0"
If rb_secretaria.checked=true then haber=1500 sle_afp.text="0"
if cbx_cts.checked=true then sle_essalud.text="0"
cts=haber * 0.03 sle_totald.text="0"
else sle_neto.text="0"
cts=0 cbx_cts.checked=false
end if cbx_afp.checked=false
if cbx_afp.checked=true then cbx_essalud.checked=false
afp=haber * 0.03
else
afp=0
end if
if cbx_essalud.checked=true then
essalud=haber * 0.03
else
essalud=0
end if
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)

Cumple la misma función que el control SingleLineEdit, con la


diferencia de que a este control se le puede definir mascaras de entrada y salida de datos.
Propiedades.
DisplaOnly. Especifica si el contenido del control podrá ser modificado por el usuario.
Mask. Permite especificar la mascara que se desea usar para el control.
Numeros : #
String : @
Date :
Character Meaning Example
d Day number with no leading zero 9
dd Day number with leading zero if appropriate 09
ddd Day name abbreviation Mon
dddd Day name Monday
m Month number with no leading zero 6

Por: Luis Gabriel Vera Flores 16


ellucho_13@yahoo.es
http:// pbperu.iespana.es

mm Month number with leading zero if appropriate 06


mmm Month name abbreviation Jun
mmmm Month name June
yy Two-digit year 97
yyyy Four-digit year 1997
Time :
Character Meaning
h Hour with no leading zero (for example, 1)
hh Hour with leading zero if appropriate (for example, 01)
m Minute with no leading zero (must follow h or hh)
mm Minute with leading zero if appropriate (must follow h
or hh)
s Second with no leading zero (must follow m or mm)
ss Second with leading zero (must follow m or mm)
ffffff Microseconds with no leading zeros. You can enter one
to six f's; each f represents a fraction of a second (must
follow s or ss)
AM/PM Two-character, upper-case abbreviation (AM or PM as
appropriate)
am/pm Two-character, lower-case abbreviation (am or pm as
appropriate)
A/P One-character, upper-case abbreviation (A or P as
appropriate)
a/p One-character, lower-case abbreviation (a or p as
appropriate)

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.

Por: Luis Gabriel Vera Flores 17


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Controles EditMaskControl
em_nota1 y em_nota2
Propiedad (ficha mask)
Mask = ##
MaskDataType: numerickask!
Spin = Activado
Min = 0
Max = 20
Incremente = 1

Código del Formulario.


Cb_calcular / clicker cb_otro / Clicked
sle_alumno.text=""
Real Nota1,Nota2,Promedio
sle_curso.text=""
Nota1=real(em_nota1.text)
em_nota1.text="0"
Nota2=real(em_nota2.text)
em_nota2.text="0"
promedio=(nota1+nota2)/2
em_promedio.text="0"
if promedio>=11 then
sle_condicion.text="Aprobado"
else
sle_condicion.text="Desaprobado"
end if
em_promedio.text=string(promedio)

Grabe la ventana con w_editmask


Ejecute la ventana, ingrese los datos respectivos y pulse calcular.

Por: Luis Gabriel Vera Flores 18


ellucho_13@yahoo.es
http:// pbperu.iespana.es

y Se utilizan con la finalidad de


insertar un cuadro de lista o una lista desplegable, en donde el usuario podrá seleccionar
uno o mas elementos de la lista.
Funciones
Additem. Permite añadir un nuevo elemento dentro de un cuadro de lista o una lista
desplegable.
DeleteItem. Permite eliminar el elemento indicado de un cuadro de lista o una lista
desplegable
Reset. Borra todo los elementos de una lista o una lista desplegable.
SelectedIndex. Retorna el número del elemento seleccionado de una lista.
SelectedItem. Retorna el texto del elemento seleccionado.
SelectItem. Retorna el elemento del número de elemento indicado.
Text. Retorna el texto del elemento seleccionado.
Ejemplo : Desarrolle una aplicación en donde se agreguen nuevos elementos a una lista.
El diseño del formulario tendrá que quedar de la siguiente manera.

Control Propiedad Valor


Sle_1 Name sle_nuevo
Text en blanco
Lb_1 Name lb_elementos

Código del formulario.


cb_agregar / Clicked.
lb_elementos.additem(sle_nuevo.text)
sle_nuevo.text=""
cb_eliminar / clicked
lb_elementos.DeleteItem(lb_elementos.SelectedIndex())
cb_borrar / clicked
lb_elementos.reset()

Por: Luis Gabriel Vera Flores 19


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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

LA PROPIEDAD SORTED DE LOS LISTBOX, TENDRÁN QUE ESTAR


DESACTIVADOS, PARA QUE LOS ELEMENTOS NO SE ORDENEN AL
MOMENTO DE AGREFGAR

Nota : Los textos de color oscuro


tendrán que estar desactivados

Codigo del formulario


cb_agregar / clicked
ddlb_productos.additem(sle_nuevop.text)
sle_nuevop.text=""

Por: Luis Gabriel Vera Flores 20


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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"

Por: Luis Gabriel Vera Flores 21


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Como trabajo práctico desarrolle la siguiente aplicación.


Agregar. Permite agregar nuevos empleados a la lista
Aceptar. Muestra el empleado seleccionado de la lista en Empleado Seleccionado.
Otro. Limpia todo los controles.
Nota: Cada vez que se seleccione una categoría deberá de calcular el haber básico, los
descuentos y el sueldo neto.
Cada vez que se active uno de los check (Descuentos), deberá de volver a calcular todo.

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.

Por: Luis Gabriel Vera Flores 22


ellucho_13@yahoo.es
http:// pbperu.iespana.es

FUNCIONES DENTRO DE POWERBUILDER


PowerBuilder posee una gran variedad de funciones que permiten al programador desarrollar
sus aplicaciones de una manera fácil.
1. Funciones de Cadena
Asc. Obtiene el código ASCCII correspondiente al primer carácter de una cadena.
Ejemplo : Asc ("A")
Char. Retorna el carácter correspondiente al código ASCII.
Ejemplo : Char (42)
Fill. Retorna una cadena con una longitud determinada del carácter especificado.
Ejemplo : Fill ("*",20)
Left. Retorna un número especificado de caracteres comenzando por la izquierda.
Ejemplo : Left ("Henry Salcedo",4)
LeftTrim. Retorna la misma cadena de caracteres sin los espacios en blanco del
lado izquierdo de la cadena
Ejemplo : LeftTrim (" Henry Salcedo")
Len. Retorna la longitud de la cadena.
Ejemplo :
Longs_nombre
s_nombre=Len(sle_Nombres.text)
Lower. Retorna una copia de una cadena convertida a minúsculas.
Ejemplo : Lower("HENRY SALCEDO")
Mid. Retorna una cadena que contiene un número especificado de caracteres,
comenzando de una posición indicada.
Ejemplo : Mid("HENRY SALCEDO",5,5)
Pos. Retorna la posición donde se encuentra una cadena dentro de otra cadena
Ejemplo : Pos("HENRY SALCEDO","SA")
Reverse. Cambia el orden de los caracteres de una cadena.
Ejemplo : Reverse ("HENRY SALCEDO")
Right. Retorna un número especificado de caracteres, comenzando del lado
derecho..
Ejemplo : Right ("HENRY SALCEDO",3)
RightTrim. Retorna la misma cadena de caracteres sin los espacios en blanco del
lado derecho de la cadena
Ejemplo : RightTrim ("Henry Salcedo ")

Por: Luis Gabriel Vera Flores 23


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Space. Retorna una cadena de longitud determinada, conteniendo espacios en


blanco.
Ejemplo : Name = Space (10)
Trim. Retorna la misma cadena de caracteres sin los espacios en blanco del lado
izquierdo y derecho de la cadena
Ejemplo : Trim (" Henry Salcedo ")
Upper. Retorna la misma cadena de caracteres convertidas a letras mayúsculas.
Ejemplo : Upper (" Henry Salcedo")
2. Funciones de Fecha
Day. Retorna el día del mes de una fecha indicada.
Ejemplo : Day (1994-01-31)
DayName. Retorna el nombre del día de la semana
Ejemplo :
string dayn
Date fecha
fecha=Date(em_1.text)
dayn=dayName(Fecha)
DayNumber. Retorna un número que representa el día de la semana.
Ejemplo :
Integer dayn
Date fecha
fecha=Date(em_1.text)
dayn=dayNumber(Fecha)
DaysAfter. Retorna el número de días de una fecha después de la actual.
Ejemplo :
Integer dayn
Date fecha
fecha=Date(em_1.text)
dayn=daysAfter(2001-02-19,Fecha)
Hour. Retorna un entero que corresponde al número de horas de una fecha dada.
Ejemplo :
Integer Hora
Hora=Hour(Now())
MessageBox("Hora",Hora)

Por: Luis Gabriel Vera Flores 24


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Por: Luis Gabriel Vera Flores 25


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Ceiling. Obtiene el menor número entero que es menor o igual al número


especificado.
Ejemplo:
Dec = 4.8
Num = Ceiling (dec)
Decimal num
Num = ceiling (-4.2)
Num = ceiling (-4.8)
Esta sentencia retorna -4.
Cos. Obtiene el coseno del ángulo debe estar en readianes.
Ejemplo: Cos (0)
Cos(1)
Esta sentencia retorna -1.
Cos(pi(1))
Esta sentencia retorna -1.
Int. Obtiene el menor número entero que es menor o igual al número especificado.
Ejemplo: Int(3.2)
Int(3.8)
Int(-3.2)
Int(-3.8)
La siguiente sentencia retorna -4.0.
Max. Retorna el mayor de dos números.
Ejemplo: Max (4,7)
Max (-4,-7)
Esta expresión retorna -4.
Min. Retorna el menor de dos números.
Ejemplo: Min (4,7)
Min (-4,-7)
Esta expresión retorna -7.
Mod. Obtiene el modulo de dos números (el resultado obtenido de la división del
primer expresión con el segundo).
Ejemplo:
Integer Residuo
Residuo=Mod(20,6)

Por: Luis Gabriel Vera Flores 26


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Pi. Obtiene el valor de Pi


Ejemplo: Pi( ) => 3.14159265358979323
Round. Obtiene un número redondeado a un número decimal elegido
Ejemplo:
Round (9.625,2) => 9.63
Round (9.6,3) => 9.600
Sign. Obtiene un número (-1, 0, o 1) indicando el signo de una expresión
Ejemplo:
Sign (0) => Retorna 0 por que 0 no tiene signo
Sign (9) => Retorna 1
Sign (-9) => Retorna -1
Sqrt. Obtiene la raíz cuadrada de un número dado.
Ejemplo:
Sqrt (4) => Retorna 2
Sign (3) => Retorna 1.7320
Truncate. Obtiene un número truncado a una determinada expresión decimal.
Ejemplo:
Truncate (9.22,1) => Retorna 9.2
Truncate (9.9,0) => Retorna 9
4. Funciones de Conversión
Dec. Convierte el contenido de una cadena a un número decimal.
Ejemplo :
Real Numero
Numero=Dec("14.25")
Double. Convierte el contenido de una cadena a un número doble
Ejemplo :
Real Numero
Numero=Double("14.25")
Integer. Convierte el contenido de una cadena a un número entero
Ejemplo :
Integer Numero
Numero=Integer("14")

Por: Luis Gabriel Vera Flores 27


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Real. Convierte el contenido de una cadena a un número real


Ejemplo :
Real Numero
Numero=real("14.25")
String. Convierte un número a un cadena de caracteres.
Ejemplo :
String Cadena
Cadena=String(14.25)
Date. Convierte una cadena a una fecha
Ejemplo :
Date Fecha
Fecha=Date(10-05-2001)
Ejemplo de una aplicación

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.

Control Edit Mask


Tipo Fecha

Propiedad Item de:


CmbSexo: Masculino
Femenino
Especialidad:
Computación e Informática
Secretariado Ejecutivo
Enfermería Técnica
Semestre : del 1 al 6
Turno:
Mañana
Tarde
Noche

Por: Luis Gabriel Vera Flores 28


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Grabe la ventana con el nombre de : w_funciones


CÓDIGO DEL FORMULARIO.
Window / open
Limpiar_Controles();
em_fecha.text=String(today())

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.

Por: Luis Gabriel Vera Flores 29


ellucho_13@yahoo.es
http:// pbperu.iespana.es

El código ha sido generado con la primera letra del apellido paterno + la primera
letra del apellido materno + un número correlativo.

Por: Luis Gabriel Vera Flores 30


ellucho_13@yahoo.es
http:// pbperu.iespana.es

FUNCIONES DEFINIDAS POR EL USUARIO


El lenguaje PowerScript tiene una gran variedad de funciones. Pero si en el proceso de
desarrollo se necesita codificar u proceso que se repita mas de una vez entonces es necesario
crear una función definida por el usuario.
Una función definida por el usuario es una colección de sentencias que realizan algún
proceso. Para construirla se realiza en el Function Painter, una vez construida se graba la
función para su posterior uso.
Tipos de Función.
Funciones Globales. Las cuales no están asociadas a ningún objeto de la aplicación y son
accesibles desde cualquier punto de la aplicación.
Funciones de nivel objeto. Estas funciones están definidas por un tipo particular de ventana,
menú o objeto de usuario
Nota : Las nombres de las funciones pueden tener hasta una longitud de 40 caracteres
Crear una función que permita limpiar los controles del ejemplo anterior.
Abra la ventana anterior (w_funciones)
Abra el la ventana de script de la ventana
Abra la lista de controles de la ventana de códigos y seleccione (Functions)

Seguidamente se activará la siguiente ventana en donde se tendrá que ingresar el nombre


de la función que se desea crear y especificar si se desea que la función retorne un valor.

Alcance de la función Indica si la función retornará Nombre de la función a crear


valores
Ventana en donde se escribirá el código de la función

Por: Luis Gabriel Vera Flores 31


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Luego de crear la función escriba el código siguiente.


sle_nombres.Text=""
sle_apepat.Text=""
sle_apemat.Text=""
sle_direccion.Text=""
ddlb_sexo.SelectItem(0)
ddlb_especialidad.SelectItem(0)
ddlb_semestre.SelectItem(0)
ddlb_turno.SelectItem(0)
Grabe la función grabando la ventana y cierre la ventana de la función.
Agregue la siguiente línea de código a los siguientes eventos de controles.
Window / open
Limpiar_Controles();
em_fecha.text=String(today())

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
Activar los controles: (f_activar)
sle_codigo, em_fecha, sle_nombres, sle_apepat, sle_apemat, sle_direccion, ddlb_sexo,
ddlb_especialidad, ddlb_semestre, ddlb_turno y cb_aceptar
Los controles tendrán que estar activados al momento de ejecutar la ventana, y cuando
se pulse el botón nuevo tendrán que activarse con los controles en blanco.
Cuando se pulse aceptar los controles tendrán que desactivarse nuevamente.

Por: Luis Gabriel Vera Flores 32


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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

Por: Luis Gabriel Vera Flores 33


ellucho_13@yahoo.es
http:// pbperu.iespana.es

El código de la función es el siguiente: Cb_agregar / Clicked


REAL haber,cts,afp,essalud,totald,neto ddlb_empleados.Additem(sle_nuevoe.Text)
haber=REAL(sle_haber.Text) sle_nuevoe.Text=""
IF cbx_cts.CHECKED=TRUE then
cb_aceptar / Clicked
cts=haber*0.03
sle_empleado.Text=ddlb_empleados.Text
ELSE
cts=0 rb_gerente / Clicked
end if sle_haber.text="2500"
if cbx_afp.checked=true then Calcular();
afp=haber*0.06
else rb_administrador / Clicked
afp=0 sle_haber.text="2000"
end if Calcular();
if cbx_essalud.checked=true then
essalud=haber*0.06 rb_secretaria / Clicked
else sle_haber.text="1000"
essalud=0 Calcular();
end if
cb_otro / clicked
totald=cts+afp+essalud
sle_empleado.Text=""
neto=haber - totald
sle_haber.Text="0"
em_cts.Text=String(cts)
em_cts.Text="0"
em_afp.Text=String(afp)
em_afp.Text="0"
em_essalud.Text=String(essalud)
em_essalud.Text="0"
em_totald.Text=String(totald)
em_totald.Text="0"
em_neto.Text=String(neto)
em_neto.Text="0"
return
cbx_cts.checked=False
cbx_afp.checked=False
cbx_essalud.checked=False

cbx_cts – cbx_afp – cbx_essalud / Clicked (en los tres poner el mismo código)
Calcular();

Ejecute la aplicación e ingrese los datos para poder calcular.

Por: Luis Gabriel Vera Flores 34


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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)

Por: Luis Gabriel Vera Flores 35


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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
Por: Luis Gabriel Vera Flores 36
ellucho_13@yahoo.es
http:// pbperu.iespana.es

Crear una función con el nombre : Calcular


Código de la función.
Real haber,afp,cts,essalud,neto,totd
haber=real(tab_trabajador.tabpg_sueldo.sle_haber.text)
cts=haber*0.03
afp=haber*0.06
essalud=haber*0.06
totd=cts+afp+essalud
neto=haber - totd
tab_trabajador.tabpg_sueldo.sle_afp.text=string(afp)
tab_trabajador.tabpg_sueldo.sle_cts.text=string(cts)
tab_trabajador.tabpg_sueldo.sle_essalud.text=string(essalud)
tab_trabajador.tabpg_sueldo.sle_totald.text=string(totd)
tab_trabajador.tabpg_sueldo.sle_neto.text=string(neto)

Código del formulario


w_tabpage / Open
Tab_Trabajador.Tabpg_sueldo.Enabled=False
Tab_Trabajador.tabpg_datos.Sle_codigo.Setfocus()
cb_aceptar / Clicked
tab_trabajador.tabpg_datos.enabled=False
tab_trabajador.tabpg_sueldo.enabled=true
tab_trabajador.SelectedTab=2
rb_contratado / Clicked
ztab_trabajador.tabpg_sueldo.sle_haber.text="1500"
Calcular();
rb_nombrado / Clicked
tab_trabajador.tabpg_sueldo.sle_haber.text="2000"
Calcular();
Ejecute el formulario, ingrese los datos del trabajador, luego pulse el botón Aceptar
para pasar a la siguiente página y seleccione la condición del trabajador

Por: Luis Gabriel Vera Flores 37


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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

Seleccione el icono New del PowerBar1.


Dentro de la ventana New seleccionar la ficha Objects y dentro esta seleccionar el
objeto Menu
Seguidamente se activará la siguiente ventana.

WYSIWYG Menu View


(Presentación preliminar del menú) Tree Menu View
(Estructura del menú)

Propiedades

Ventana de Código

Por: Luis Gabriel Vera Flores 38


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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 .

Escriba el título para el nuevo submenú (Escriba: &Registro de nuevos alumnos).


Para activar el acceso con Alt + R a la opción Registro de nuevos alumnos , en la
ventana de propiedades busque la opción Shortcut Key y dentro de esta seleccione la
letra R, y active el check de Shortcut Alt

Por: Luis Gabriel Vera Flores 39


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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 activar el acceso con Alt + M a la opción Matricula de alumnos , en la ventana de


propiedades busque la opción Shortcut Key y dentro de esta seleccione la letra M, y
active el check de Shortcut Alt
Para crear la opción Consulta por sección, siga el mismo procedimiento que utilizó
para crear : Matricula de alumnos.
Para crear la opción &Cursos, seleccione untitled0 de la ventana de TREE VIEW.
Realice un click con el botón contrario y seleccione la opción Insert Submenu Item.

Escriba el título para la nueva opción (en este caso : &Cursos)

Por: Luis Gabriel Vera Flores 40


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Grabe el menú con el nombre : m_principal.


ENLAZAR UN MENÚ A UNA VENTANA
Abra una nueva ventana (Window).
En la ventana de propiedades seleccione la opción MenuName, Realice un click sobre

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.

Por: Luis Gabriel Vera Flores 41


ellucho_13@yahoo.es
http:// pbperu.iespana.es

En la venta de código escriba la ventana o acción que desee que realice el menú. (en este
caso escriba Open (Nombre_Ventana)
El código de la opción cerrar es: Close(w_principal)
De la misma manera escriba los códigos de las demás opciones de menú.
Grabe el menú y cierre. Ejecute la ventana w_principal.

CREAR UNA BARRA DE HERRAMIENTAS


Para crear una barra de herramientas, es necesario que la ventana en donde se va a insertar la
barra de herramientas sea del tipo MDI (Multiple Document Interface)
Para nuestro ejemplo utilizaremos el menú que se ha creado anteriormente.
Abra el objeto menú que se ha creado anteriormente (m_principal)

Seleccione el elemento de menú al cual desea asociar un icono de la barra de


herramientas (en este caso seleccione Registro de nuevos alumnos).
En la ventan de propiedades seleccione active la ficha Toolbar, y en la opción
ToolbarItemText (Texto del elemento de la barra de herramientas), escriba el texto que
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.

Por: Luis Gabriel Vera Flores 42


ellucho_13@yahoo.es
http:// pbperu.iespana.es

El diseño tendrá que quedar de la siguiente manera.

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.
En la ventana de propiedades, busque la opción Window Type, y seleccione la
opción Mdi!
Ejecute la ventana para ver el resultado.

Por: Luis Gabriel Vera Flores 43


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Por: Luis Gabriel Vera Flores 44


ellucho_13@yahoo.es
http:// pbperu.iespana.es

CREAR UNA NUEVA BASE DE DATOS UTILIZANDO EL DISEÑADOR DE BASE


DE DATOS DEL POWER BUILDER 7.0
1. Una vez, que se encuentre dentro del power builder, seleccionar el icono de DataBase
2. Dentro de la ventana de base de datos, seleccionar la carpeta de Uitilities y expandir.

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.
5. Dentro de la ventana Create Adaptive Server Anywhere DataBase, Seleccione el botón
Ok
6. Una, vez que se haya creado, se observará que dentro de la base de datos ODBC, se
agrego la nueva conexión que se ha creado.

Por: Luis Gabriel Vera Flores 45


ellucho_13@yahoo.es
http:// pbperu.iespana.es

7. Si se desea cambiar el nombre de la conexión, realice doble clic sobre la conexión.


8. En la ventana que se activa, seleccione Profile Name, e ingrese el nuevo nombre de la
conexión. Ejemplo (Conexión_Alumnos) y seleccione el botón Ok

La conexión, se mostrará con


el nuevo nombre creado.
Luego expanda la nueva
conexión.

9. Si se desea crear tablas de datos, dentro de la conexión creada, seleccione la carpeta


Tables y realizar un clic con el botón derecho.

Por: Luis Gabriel Vera Flores 46


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Por: Luis Gabriel Vera Flores 47


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Por: Luis Gabriel Vera Flores 48


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Cree la tabla Datos_Alumnos, de la misma manera, el diseño es el siguiente:

La llave principal será Codigo_Alumno.


Al terminar de crear se deberá de mostrar las dos tablas creadas, cada una con sus
respectivas llaves creadas, tal como se muestra a continuación

Claves Foráneas (Foreign Key)


Las Clave foránea es una combinación de una o mas columnas de una tabla que sirven para
identificar a una o mas columnas de otra tabla, una clave foránea, relaciona información de
dos tablas. Una tabla puede contener varias claves foráneas, ya que su información puede
estar relacionada con mas de una tabla.

Por: Luis Gabriel Vera Flores 49


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Crear una clave foránea para la tabla Datos_Alumnos.


1. Seleccione la tabla Datos_Alumnos, dentro de la carpeta Tables, dar un clic con el botón
derecho, en el menú que se activa, seleccionar New, seguido de Foreign Key.
2. En la ficha general de Foreign Key, ingresar el nombre de la clave (Foreign Key, puede
ser el mismo nombre del campo) y seleccionar el campo Foráneo
(Codigo_Especialidad) y el la ficha Primary Key, seleccionar la tabla (Table), de donde
viene el campo foráneo (Especialidades) y activar el campo principal
(Codigo_Especialidad)

3. Después de haber creado la clave foránea, grabar la tabla.


4. En la venta de Layout, se mostrará las dos tablas con su respectiva llave, tal como se
muestra a continuación.

Por: Luis Gabriel Vera Flores 50


ellucho_13@yahoo.es
http:// pbperu.iespana.es

CREAR UNA CONSULTA DE DATOS

Crear una consulta que muestre los datos de la tabla Especialidades.

1. Seleccione el icono New del PowerBar1


2. Dentro de la ventana New, seleccionar la ficha Database, opción Query y pulsar el botón
Ok.

3. Seleccionar la tabla de donde se desea crear la consulta de datos (Especialidades) y pulsar


el botón Open.

4. Seleccionar los campos que se incluirán en la Consulta.

Campos Seleccionados
en la consulta
Tabla
seleccionada
para la consulta

Por: Luis Gabriel Vera Flores 51


ellucho_13@yahoo.es
http:// pbperu.iespana.es

5. Para realizar una presentación preliminar, realice un clic sobre el icono , para salir de

la vista, seleccione el siguiente icono .

6. Grabe la consulta, seleccionando el siguiente icono .

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.

1. Repetir los 5 procedimientos anteriores.


2. Estando dentro de la venta de diseño de consultas, seleccione Design
de la barra de menú, seguido de la opción Retrieval Arguments...

3. En la ventana que se activa (Especyfi Retrieval Arguments...), ingresar el nombre de la


variable (Cod_Esp) a crear, especifique el tipo de dato para el mismo (String), luego
seleccione el botón OK

4. Seleccione la columna (Column) que se relacione con el Argumento.


(Codigo_Especialdad), luego el operador (=) y el valor (Value) , en este caso como valor
ira el argumento que se ha creado, para lo cual realice un clic con el botón derecho sobre
este casillero, seleccione la opción Arguments.., en la ventana que se activa seleccionar el

Por: Luis Gabriel Vera Flores 52


ellucho_13@yahoo.es
http:// pbperu.iespana.es

argumento creado (en este caso Cod_Esp), luego pulse el botón Paste. Deberá de quedar
de la siguiente manera,

5. Al realizar una presentación preliminar , se activará una ventana en donde tendrá que
ingresar el valor para el argumento que se ha creado. Ingresar el valor y pulsar el botón
OK

Tal como se muestra en el


ejemplo, se mostrarán los datos,
de acuerdo a valor ingresado

6. Para salir de la consulta, seleccione el siguiente icono .

7. Grabe la consulta, seleccionando el siguiente icono .

Por: Luis Gabriel Vera Flores 53


ellucho_13@yahoo.es
http:// pbperu.iespana.es

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.

Si se desea crear una consulta de la tabla Datos_Alumnos, y que muestre el nombre de la


especialidad en el campo Codigo_Especialidad, las dos tablas tendrán que estar relacionadas.

1. Seleccione el icono New del PowerBar1


2. Dentro de la ventana New, seleccionar la ficha Database, opción Query y pulsar el botón
Ok.

3. Seleccionar las tablas de donde se desea crear la consulta de datos (Dastos_Alumnos y


Especialidades) y pulsar el botón Open.

4. Seleccionar todo los campos de la tabla Datos_Alumnos a excepción del campo


Codigo_Especialidad, y de la tabla Especialidades, seleccionar el campo
Nombre_Especialidad.

Por: Luis Gabriel Vera Flores 54


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Indica que estas dos tablas


están relacionadas por los
campos que indican las
líneas

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.

Datos Datos Datos Datos

6. Para salir de la consulta, seleccione el siguiente icono .

7. Grabe la consulta, seleccionando el siguiente icono .

Por: Luis Gabriel Vera Flores 55


ellucho_13@yahoo.es
http:// pbperu.iespana.es

Practica Calificada.
Agregar a su base de datos las siguientes Tablas.

Relacione las tablas de tal forma que queden como se


muestra a continuación

Indice
Normal
(Index)

Por: Luis Gabriel Vera Flores 56


ellucho_13@yahoo.es
http:// pbperu.iespana.es

1. Crear una consulta de datos, que muestre los siguientes datos.


Codigo del alumno, Nombres, Apellidos, Nombre de la especialidad, Sección, Semestre,
Turno y Año Académico, de acuerdo al código del alumno ingresado.
Ejemplo: Si se ingresa el código del alumno 0001, solo mostrará los datos del alumno
ingresado.

Datos Alumnos Datos Alumnos Datos Alumnos Datos Datos Alumnos Datos Alumnos Datos Alumnos
Alumnos

2. Crear una consulta de datos, que muestre los siguientes datos.


Codigo del alumno, Nombres, Apellidos, Nombre de la especialidad, Sección, Semestre,
Turno y Año Académico, de acuerdo al nombre de especialidad ingresado.
Ejemplo: Si se ingresa el nombre de la especialidad “Computación e Informática”, solo
mostrará los alumnos de esa especialidad.

Datos Alumnos Datos Alumnos Datos Alumnos

Por: Luis Gabriel Vera Flores 57


ellucho_13@yahoo.es

Potrebbero piacerti anche