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.

Servidor (Base de Datos)

Estacion (Cliente

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

1

La Pontificia

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.
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 2

La Pontificia

Ventana creada.

Ventana de Propiedade s

Ventana donde se creará el código

4. Para grabar la ventana, pulse sobre el icono de Diskette la ventana con que desea grabar y seleccione OK.

,

luego ingrese el nombre de

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

3

La Pontificia

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).

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

4

La Pontificia

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 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 Window P_1 St_1 St_2 St_3 Sle_1 Propiedad Title Name PictureName Text Font Text Text Name Text Valor Seguridad de Sistema P_llave (buscar una imagen) Ingrese su Nombre y Contraseña 12, Bold &Usuario &Contraseña Sle_Usuario “”
5

del PowerBar1.

2. En la ventana de diálogo New, seleccionar la ficha Objects y dentro de esta

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

La Pontificia

Sle_2

Name Text Limit Password

Sle_Clave “” 5 (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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

6

La Pontificia

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. Boolean Char o Character Date DateTime Decimal Double Integer, Int Long Real String Time Descripción. True o False Un único carácter. Fecha Combinación de una fecha y una hora. Números decimales con signo hasta una longitud de 18 dígitos, el punto decimal no se cuenta como dígito. 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 Son enteros con signo de 16 bits. Son enteros con signo de 32 bits, el rango va desde – 2,147,483,648 a +2,147,483,647 Números en coma flotante con una precisión de hasta 6 dígitos. Rango desde 1.1754-38 a 3.4028+38 Contiene desde 0 hasta 60000 caracteres ASCII HoraBlob (Binary Large Object) Datos sin formato, Por ejemplo una imagen o un párrafo.

Declaración de Variables. Para declarar una variable se requiere solamente de dos partes: El tipo de dato y El nombre de la variable.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

7

La Pontificia

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

8

La Pontificia

Cambiar las propiedades siguientes. Control Window P_1 St_1 St_2 St_3 Sle_1 Sle_2 Propiedad Title Name PictureName Text Font Text Text Name Text Name Text Limit Password Name Text Name Text Valor Seguridad de Sistema P_llave (buscar una imagen) Ingrese su Nombre y Contraseña 12, Bold &Usuario &Contraseña Sle_Usuario “” Sle_Clave “” 5 (Activado) cb_Aceptar Aceptar cb_Cancelar Cancelar

Cb_1 Cb_2

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)
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 9

La Pontificia

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"

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

10

La Pontificia

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.
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 11

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

12

La Pontificia

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 sle_1 sle_2 sle_3 sle_4 sle_5 sle_3 sle_3 rb_1 rb_2 rb_3 Cb_1 Cb_1 Cb_1 Propiedad Name Text Name Text Name Text Name Text Name Text Name Text Name Text Name Caption Name Caption Name Caption Name Caption Name Caption Name Caption Valor sle_empleado en blanco sle_haber en blanco sle_cts en blanco sle_afp en blanco sle_essalud en blanco sle_totald en blanco sle_neto en blanco rb_generente Gerente 2500 rb_administradoe Administrador 2000 rb_secretaria Secretaria 1500 cb_aceptar Aceptar cb_otro Otro cb_cerrar Cerrar
13

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

La Pontificia

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

Controles desactivados

Código de la aplicación Cb_aceptar / Clicked Real haber,cts,afp,essalud,totd,neto If rb_gerente.checked=true then haber=2500 end if If rb_administrador.checked=true then haber=2000 end if 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 . cb_otro / Clicked sle_empleado.text="" sle_haber.text="0" sle_cts.text="0" sle_afp.text="0" sle_essalud.text="0" sle_totald.text="0" sle_neto.text="0"

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

14

La Pontificia

(Casilla de verificación). cuales podrán ser activadas o desactivadas. Propiedades

Permite crear un grupo de opciones las

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 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 cbx_1

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

15

La Pontificia

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

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 d dd ddd dddd m
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

Meaning Day number with no leading zero Day number with leading zero if appropriate Day name abbreviation Day name Month number with no leading zero

Example 9 09 Mon Monday 6
16

La Pontificia

Time

mm mmm mmmm yy yyyy : Character h hh m mm s ss ffffff AM/PM am/pm A/P a/p

Month number with leading zero if appropriate Month name abbreviation Month name Two-digit year Four-digit year Meaning

06 Jun June 97 1997

Hour with no leading zero (for example, 1) Hour with leading zero if appropriate (for example, 01) Minute with no leading zero (must follow h or hh) Minute with leading zero if appropriate (must follow h or hh) Second with no leading zero (must follow m or mm) Second with leading zero (must follow m or mm) 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) Two-character, upper-case abbreviation (AM or PM as appropriate) Two-character, lower-case abbreviation (am or pm as appropriate) One-character, upper-case abbreviation (A or P as appropriate) 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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

17

La Pontificia

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 Real Nota1,Nota2,Promedio Nota1=real(em_nota1.text) Nota2=real(em_nota2.text) promedio=(nota1+nota2)/2 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. cb_otro / Clicked sle_alumno.text="" sle_curso.text="" em_nota1.text="0" em_nota2.text="0" em_promedio.text="0"

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

18

La Pontificia

y uno o mas elementos de la lista. Funciones

Se utilizan con la finalidad de

insertar un cuadro de lista o una lista desplegable, en donde el usuario podrá seleccionar

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 Sle_1 Lb_1 Propiedad Name Text Name Valor sle_nuevo en blanco 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()

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

19

La Pontificia

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 sle_1 ddlb_1 sle_2 em_1 em_2 lb_1 lb_2 lb_3 lb_4 sle_3 sle_4 sle_5 sle_6 Propiedad name name name name name name name name name name name name name valor sle_nuevop ddlb_productos sle_productos em_cantidad em_precio lb_productos lb_cantidades lb_precios lb_subtotales sle_totalc sle_totalp sle_totals 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=""
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 20

La Pontificia

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"
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 21

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

22

La Pontificia

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 ")
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 23

La Pontificia

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)
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 24

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

25

La Pontificia

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)
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 26

La Pontificia

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")

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

27

La Pontificia

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

28

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

29

La Pontificia

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

30

La Pontificia

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

Ventana en donde se escribirá el código de la función Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

31

La Pontificia

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.
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 32

"

+

La Pontificia

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

33

La Pontificia

El código de la función es el siguiente: REAL haber,cts,afp,essalud,totald,neto haber=REAL(sle_haber.Text) IF cbx_cts.CHECKED=TRUE then cts=haber*0.03 ELSE cts=0 end if if cbx_afp.checked=true then afp=haber*0.06 else afp=0 end if if cbx_essalud.checked=true then essalud=haber*0.06 else essalud=0 end if totald=cts+afp+essalud neto=haber - totald em_cts.Text=String(cts) em_afp.Text=String(afp) em_essalud.Text=String(essalud) em_totald.Text=String(totald) em_neto.Text=String(neto) return

Cb_agregar / Clicked ddlb_empleados.Additem(sle_nuevoe.Text) sle_nuevoe.Text="" cb_aceptar / Clicked sle_empleado.Text=ddlb_empleados.Text rb_gerente / Clicked sle_haber.text="2500" Calcular(); rb_administrador / Clicked sle_haber.text="2000" Calcular(); rb_secretaria / Clicked sle_haber.text="1000" Calcular(); cb_otro / clicked sle_empleado.Text="" sle_haber.Text="0" em_cts.Text="0" em_afp.Text="0" em_essalud.Text="0" em_totald.Text="0" em_neto.Text="0" 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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

34

La Pontificia

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)

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

35

La Pontificia

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 Tab_1 Propiedad Valor Name Caption tabpage_2 Name Caption Sle_1 Sle_2 Sle_3 Sle_4 Sle_5 em_1 cb_1 Name Name Name Name Name Name Name Caption rb_1 rb_2 Sle_6 Sle_7 Sle_8 Sle_9 Sle_10 Sle_11 cb_2 cb_1 Name Caption Name Caption Name Name Name Name Name Name Name Caption Name Caption Tab_Trabajador Tabpg_datos Datos del Trabajador Tabpg_sueldo Sueldo del trabajador sle_codigo sle_nombres sle_apellidos sle_direccion sle_dni em_fecha cb_aceptar Aceptar rb_contratado Contratado rb_nombrado Nombrado sle_haber sle_afp sle_cts sle_essalud sle_totald sle_neto cb_otro Otro cb_cerrar Cerrar

tabpage_1 Name

Dentro de Tabpg_datos va:

Diseño de la segunda página

Dentro de tab_pg_sueldo va:

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

36

La Pontificia

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

37

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 Seleccione el icono New objeto Menu Seguidamente se activará la siguiente ventana. del PowerBar1.

Dentro de la ventana New seleccionar la ficha Objects y dentro esta seleccionar el

WYSIWYG Menu View (Presentación preliminar del menú)

Tree Menu View (Estructura del menú)

Propiedades

Ventana de Código

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

38

La Pontificia

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

39

La Pontificia

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)

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

40

La Pontificia

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 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. .

En la ventana que se activa seleccione el menú que desea asociar a la ventana (En este

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

41

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

42

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

43

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

44

La Pontificia

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.
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 45

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

46

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

47

La Pontificia

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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

48

La Pontificia

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

6

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.
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe 49

La Pontificia

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 viene el el mismo campo nombre foráneo del campo) y seleccionar y activar el el campo campo Foráneo principal (Codigo_Especialidad) y el la ficha Primary Key, seleccionar la tabla (Table), de donde (Especialidades) (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.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

50

La Pontificia

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.

Tabla seleccionada para la consulta

Campos Seleccionados en la consulta

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

51

La Pontificia

5. Para realizar una presentación preliminar, realice un clic sobre el icono la vista, seleccione el siguiente icono .

, para salir de

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

52

La Pontificia

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 OK

, 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

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
Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

. .

53

La Pontificia

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, Nombre_Especialidad. y de la tabla Especialidades, seleccionar el campo

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

54

La Pontificia

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 .

.

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

55

La Pontificia

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)

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

56

La Pontificia

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

Prof: Henry Salcedo Arriarán henry_salcedo@warinet.com.pe

57