Power Builder Clase 6

Anuncio
Power Builder Clase 6
En clases anteriores hemos visto el IF-END IF, FOR-NEXT, ahora
vamos a terminar otros comandos necesarios ya que ellos son pocos.
CHOOSE CASE
Una estructura de control que dirige la ejecución de un programa
basada en un valor de una expresión que es evaluada(usualmente
una variable)
CHOOSE CASE expresion
CASE expresionlista
bloque de comandos
{ CASE expresionlista
bloque de comandos
...
CASE expresionlista
bloque de comandos }
CASE ELSE
bloque de comandos }
END CHOOSE
Ejemplos
CHOOSE CASE Weight
CASE IS<16
Postage=Weight*0.30
Method="USPS"
CASE 16 to 48
Postage=4.50
Method="UPS"
CASE ELSE
Postage=25.00
Method="FedEx"
END CHOOSE
CHOOSE CASE Real(sle_real.Text)
CASE is < 10.99999
sle_message.Text = "Real Case < 10.99999"
CASE 11.00 to 48.99999
sle_message.Text = "Real Case 11 to 48.9999
CASE is > 48.9999
sle_message.Text = "Real Case > 48.9999"
CASE ELSE
sle_message.Text = "Cannot evaluate!"
END CHOOSE
DO…LOOP
Una estructura de control para generar iteraciones usada para
ejecutar un bloque de comandos mientras o hasta que una condición
sea verdadera.
DO... LOOP tiene cuatro formas:
·
·
·
·
DO UNTIL
DO WHILE
LOOP UNTIL
LOOP WHILE
DO UNTIL condición
bloque de comandos
LOOP
DO
bloque de comandos
LOOP UNTIL condición
DO WHILE condición
bloque de comandos
LOOP
DO
bloque de comandos
LOOP WHILE condición
Ejemplos
integer A = 1, B = 1
DO UNTIL A > 15
Beep(A)
A = (A + 1) * B
LOOP
integer A = 1, B = 1
DO WHILE A <= 15
Beep(A)
A = (A + 1) * B
LOOP
Estos comandos son más que suficientes para programar en PB.
Muy bien, abramos nuevamente la aplicación y visualicemos el
system tree, vamos a crear un proyecto y a su ves un EXE.
Presionemos CTRL + N, vayamos a la pestaña o solapa PROYECT, y
seleccionemos APPLICATION, en EXECUTEBLE FILE NAME, escribir
prueba, en REBUILD, FULL, en VERSION, escribir sus datos
personales, luego hacer sobre el icono de grabar, colocar el proyecto
en cualquier librería.
Ahora puedes cerrar el pintor y apreciar el system tree, ubica el
proyecto.
Ok, haz doble clic sobre el para ir a editarlo y vamos a generar el
proyecto, haz clic sobre el icono que está junto a la X, si reposas
sobre el aparecerá la leyenda DEPLOY, que significa desplegar, en la
ventana output no tendría que dar ningún error, si lo hay comentarlo
en instructor para resolverlo, cerrar el pintor y volvamos al system
tree.
Hechemos un vistazo a lo que sea generado
Si observas los archivos que están marcados, observamos
Prueba.exe, prueba work space, prueba.pbl, prueba1.pbl, datos.pbl,
prueba.pbd ,prueba.pbt.
Los más importantes de mencionar son .EXE, PBL y WORK SPACE.
Observa el tamaño del .EXE, super pequeño en verdad, puedes
correrlo, ya no necesitas el entorno de PB, si quieres lo puedes cerrar
y correr el EXE.
Ahora, podes crear .DLL, donde cada librería se convertirá en una
DLL, volvamos al pintor de proyectos y hagamos un cambio, poner el
cheque en machina code y observar como cambia de PBD a DLL, no
olvide de chequear las librerías, volver a regenerar la aplicación o
hacer el DEPLOY.
Observar nuevamente el directorio de trabajo, encontrará las DLL
Basta de compilaciones, vanos a continuar con la extensión de la
aplicación, creemos una ventana y ponle de nombre w_personal
dentro ella vamos a tener TABS o SOLAPAS o LENGUETAS o
PESTAÑAS, en realidad reciben muchos nombres, bueno lo que
pretendo es enseñarte a como crearlas y usarlas.
Una ves creada la ventana coloca sobre ella un control TAB, luego haz
clic derecho sobre el y selecciona ADDà INSERT TAB PAGE
Deberías tener algo así, para generar el segundo TAB, haz clic
derecho sobre NONE para que te de la oportunidad insertar el otro.
Amplía el TAB hacia la derecha y cambia de texto a los tabpage a los
none, ponle al primero Agenda y al segundo Direcciones, cámbiale de
color a tu gusto a los tabpage, coloca un icono a cada uno y cambia
font size a 14 o 15 para que se vean bien legibles y a la ventana
ponle un color suave, vamos inténtalo.
Trata de dejar un espacio en la parte de abajo entre el TAB y la
ventana.
En el tabpage_1 Agenda, coloca una DW y asóciale d_agenda que ya
tenemos.
En el tabpage_2 coloca un DW
Listo, espero se parezca a esto.
Coloca dos botones en la ventana, no en DW, y ponles
Filtrar/Nombre, Ordenar/Nombres y ponles a la par un control
texto(single line edit) para el caso del filtro únicamente
Escribamos el script para el filtro
Puedes observar que para hacer mención a la DW tengo que hacerlo
con la nomenclatura de punto, primero el objeto se llama tab_1,
luego tiene un objeto sobre el tabpage_1 y luego la DW esta sobre
tabpage_1, esto se puede minimizar, lo veremos más adelante,
observa setfilter() y filter().
Veamos el script para el ordenamiento
Observa setsort() con dos parámetros, el primero le indica el campo y
el segundo el orden A=Ascendente y D=Descendente, luego se aplica
el sort(). Por último necesitamos quitar el filtro o el ordenamiento,
aumentar dos pequeños botones para el reset.
Reset del filtro
Reset del ordenamiento
Ahora bien, recuerde que necesita codificar el evento open() de la
ventana, se recuerda?, ok, entonces procesa a codificar ese código,
además necesita poner una opción más en el menú bajo PROGRAMAS
para poder acceder esta ventana, colóquele un icono para poderlo
acceder rápidamente.
Muy bien, si ya luce así, te felicito ya eres parte del STAFF DE
PROGRAMADORES DE PB.
Recuerda que tenemos pendiente la segunda solapa la de las
direcciones, pero antes necesitamos crear una tabla de nombre
direcciones que tendrá los siguientes campos, genera el índice de
nombre inx_direccion y que sea único y ascendente.
No_telefono varchar(8) Indice
Direccion varchar(40)
Departamento varchar(15)
Sexo varchar(10)
No PK
Luego genere dos registros con la siguiente información
Cierre el pintor y grabe los cambios.
Abra el pintor de para crear una datawindow grid, seleccione todos
los campos de la tabla direcciones
Ahora necesitamos enviarle un parámetro a este SELECT, observa la
sintaxis del select hasta ahora, haz clic sobre la solapa del where,
aquí estableceremos la condición para traer solo los registros que
queramos.
Haz clic sobre la opción DESIGNà RETRIEVAL ARGUMENTS y genera
un campo de nombre mi_telefono de tipo string, luego clic OK.
Haz clic sobre column y selecciona el campo no_telefono de la tabla
direcciones y trata de hacer la condición que el no_telefono sea igual
mi_telefono, nota que necesitas anteponer dos puntos antes de
mi_telefono.
Haz clic en la solapa SYNTAX y observa el SELECT, luego haz clic en
el icono RETURN
Si te pide valores a ingresar, solo haz clic en CANCELAR
Tenemos algo parecido a esto?, muy bien!!!, recuerda los tab a cero,
grábalo como d_personal en la librería adecuada y asócialo a DW del
tabpage2
Ejecutemos a aplicación para ver si funciona con todos los aspectos
que hemos introducido y observemos que nos hace falta.
Así es, si observas no se muestran los datos de la tabla de
direcciones, tenemos que hacer lo siguiente:
Ø Necesitas crear una objeto de transacción para esta tabla, tal y
como la hiciste para la tabla de agenda
Ø Necesitas hacer un retrieve() a los registros de la tabla
direcciones, recuerda que debes de enviarle un parámetro, ya
que el SELECT lo espera, el parámetro es el no_telefono de
agenda hacia la tabla direcciones, recordar que la relación es
una a una
Ø Necesitas sincronizar la DW de agenda con respecto a DW de
direcciones, en el sentido de acceder a las direcciones
correspondientes en base al no_telefono, esto lo debes de
planear en el evento OPEN() de ventana y en el evento
ROWFOCUSCHANGED de la DW de agenda
Como ves el panorama? Se oye imposible, pero no lo es, empecemos
entonces…..
Evento OPEN()
Y el evento ROWFOCUSCHANGED
Al ejecutar la aplicación
Para finalizar haremos un reporte para poder verlo en pantalla o
enviarlo a la impresora, entonces tu debes:
Ø En esta ventana, aumentar un tabpage
Ø Ponerle una DW y asociarla a d_agenda o crear una propia con
encabezados
Ø Poner dos botones en el tabpage Pantalla y el otro Impresor
Ø En el boton pantalla codificar el script
w_3.settransobject(sqlca);
Ø dw_3.retrieve();
Ø En el boton Impresor codificar el script
dw_3.settransobject(sqlca);
Ø dw_3.retrieve();
Ø long Job
Ø
Ø Job = PrintOpen( )
Ø
Ø dw_3.Print()
Ø
Ø PrintClose(Job)
Espero que este curso haya satisfecho tus expectativas de
programador y haber conocido el mundo maravilloso de PB, si deseas
documentarte más puedes visitar www.powerbuilder.org o
www.sybase.com.
Editado por JAAF
Descargar