Download - MANUAL 1 PB

Transcript
Page 1: MANUAL 1 PB

UNIVERSIDAD CONTINENTAL DE CIENCIAS E INGENIERIA

ELVIS GUILLERMO HUARCAYA QUISPE

Huancayo

2006

LENGUAJE DE PROGRAMACIÓN COMERCIAL

Power Builder 09-10

Page 2: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 2

SEPARATA N°01 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 08-08-2006

INSTALACIÓN DE POWER BUILDER 9.0-10.0

Requerimiento de Hardware y Software Para la instalación de Power Builder 9.0 – 10.0 se requiere los Siguientes requisitos: Sistemas Operativos Microsoft Windows 98 ó Microsoft Windows NT 4.0. Windows Xp , Windows 2003 Memoria 16 Mb de RAM (Recomendado : 32 Mb de RAM Espacio en disco duro: 16 Mb Instalación Compacta 600 Mb Instalación Típica PC superior. Pentium I (Recomendado Pentium IV) Tarjeta Gráfica VGA o superior (Recomendado SGVA de 256 colores) Instalación de Power builder Para instalar se debe de insertar el CD en la unidad de lectora. PoWer Builder 9.0 -10.0 forma parte del conjunto de producto que incluye las siguientes aplicaciones:

• InfoMarker 9.0 -10.0 • Power Builder 9.0-10.0 • Power Dynamo 3.6 • PowerDisegner Doc. 9.0-10.0 • PowerDisegner Trial 9.0-10.0

Iniciando la instalación de Power Builder 9.0 El siguiente paso es seleccionar los componentes:

Page 3: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 3

Para continuar con la instalación realice Clic en el Botón Next. Hasta el Final de la instalación. CONCEPTO: Power Builder es una herramienta de desarrollo de aplicaciones orientada a objetos que permite construir poderosas aplicaciones cliente/servidor para el ambiente Windows y Unix, e interactuar con varias bases de datos. Power Builder es del grupo de productos sybase que juntos proporcionan las herramientas para desarrollar aplicaciones cliente/servidor, distribuido, y aplicaciones de Internet. ENTORNO DE DESARROLLO DE POWERBUILDER El entorno del Power Bilder que usted visualiza depende de la versión que esta utilizando. A continuación se explica el entorno de la versión 9.0. -10.0 Cuando usted ingresa al Power Builder 9.0 – 10.0 se visualiza siempre la misma ventana, sin ninguna aplicación activa: Para visualizar una aplicación debe hacer clic en el botón Open o en el menú File/Open y seleccionar un espacio de trabajo (WorkSpace) creado previamente.

Page 4: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 4

VENTANA PRINCIPAL DE POWER BILDER La ventana principal de Power Builder esta compuesta de tres partes: Barra de Título Que contiene el nombre de la aplicación con la que esta trabajando y los botones para controlar la ventana. Barra de Menú (Estandar) Contiene las opciones que permiten administrar el Power Builder Barra de Herramientas Llamada también ToolBar1 y contiene los botones que permiten acceder de manera rápida a las opciones mas utilizadas de Power Builder. barra de títulos barra estándar barra herramientas Nota: Las opciones del Menú Principal y la Barra de Herramientas que se visualizan dependen del objeto que esta visualizando. Esto quiere decir que las opciones y las barras de herramientas aumentan cuando activamos o abrimos algún objeto de la aplicación. MENÚ FILE New

Page 5: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 5

Crea una nueva aplicación o un nuevo objeto dentro de una aplicación.

Inherit Permite crear objetos ventanas, menú u objetos de usuario a partir de objetos ya existentes. Por ejemplo, si va a crear una ventana similar a una que ya existe entonces puede elegir esta opción para crearla. Open Abre un objeto de una aplicación como una ventana, un Menú, etc. Run/Preview Muestra una vista previa de una Ventana o DataWindow, es decir cómo la visualizará el usuario cuando la ejecute. Open WorkSpace Permite abrir un área de trabajo existente Printer Setup Muestra la ventana para configurar la impresora Recent Objects Muestra y permite abrir los objetos recientemente utilizados de la aplicación como ventanas, menú, datawindows, etc. Recent WorkSpaces Muestra y permite abrir los últimos espacios trabajo utilizadas. Recent Connections Muestra y permite abrir las conexiones recientemente usadas. Exit Permite salir de PowerBuilder Nota: En forma predeterminada Power Builder guarda los 8 últimos objetos recientemente utilizados (Recent) MENÚ TOOLS ToolBars

Page 6: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 6

Permite administrar las barras de herramientas que selecciona. Muestra la siguiente ventana donde puede moverla (Move), mostrar el título de cada botón (Show Text), ocultarla (Hide), visualizar (Show), etc. Show solamente se visualiza cuando la barra está oculta.

Keyboard Shortcuts Permite asignar o quitar las teclas de acceso directo a cada unas de las opciones del menú.

Por ejemplo, si desea crear un nuevo objeto (New) con las teclas Ctrl + N, seleccione la opción New y en la caja Press Keys for shortcut pulse las teclas Ctrl + N. Para quitar la tecla de acceso rápido, selecciónela y clic en Remove. System Options Permite configurar el Power Builder, como por ejemplo: Indicar la ruta del programa que ejecuta Power Builder, indicar la cantidad de objetos recientes que debe considerar, el tipo y tamaño de letra predeterminado para los títulos de los controles (Font), etc. To Do List Almacena los pasos para las tareas de desarrollo de la aplicación activa. Browser

Page 7: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 7

Muestra todos los objetos de la aplicación actual. Haga clic botón derecho en el nombre de un objetro para poder editarlo.

Library Painter Permite administrar los objetos de las aplicaciones (*.PBL) que tiene creadas como por ejemplo, eliminarlas, ver sus propiedades, etc.

DataBase Profile Muestra la ventana para administrar los perfiles de base de datos

DataBase Painter Muestra la ventana para administrar las bases de datos

Page 8: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 8

File Editor Activa el editor de textos de Power Builder OPCION HELP Muestra las subopciones que permiten leer los textos de ayudas acerca de Power Builder. BARRA DE HERRAMIENTAS La barra de herramientas llamada también ToolBar1 contiene los botones que permiten acceder de manera rápida a las opciones más utilizadas de Power Builder

Accede a la Opción File/New

Accede a la Opción File/Inherit

Accede a la Opción File/Open

Accede a la Opción File/Run/Preview

Accede a la Opción Window/System Tree

Accede a la Opcion Window/Output

Accede a la Opcion Window/To Do List

Accede a la Opción Window/Browser

Accede a la Opción Window/Clip

Accede a la Opción Window/Library Painter

Accede a la Opcion Window/DataBase Profile

Accede a la Opción Tools/EAServer Profile

Accede a la Opcion Window/DataBase Painter

Accede a la Opción Window/File Editor

Accede a la Opción Run/Incremental Build WorkSpace

Accede a la Opción Run/Full Build WorkSpace

Accede a la Opción Deploy WorkSpace

Accede la Opción File/Debug

Accede a la Opción Run/Select and Debug

Accede a la Opción File/Run

Accede a la Opción Run/Select Target

Accede a la Opción File/Exit Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas

Page 9: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 9

Recomendadas Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10

http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10

Page 10: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 10

SEPARATA N°02 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 15-08-2006

CREAR UNA APLICACIÓN En la versión 9.0-10.0 de Power Builder primero debe crear una area de trabajo (*.PBW) en la hoja WorkSpaces. Vaya al Menú File/New ó haga clic en el botón New de la Barra de herramientas.

En la ventana de diálogo New WorkSpace, ingrese el nombre del área de trabajo, y asimismo debe ubicarse en la carpeta creada para este fin. Luego active la hoja Target, seleccione el icono Aplication, y haga clic en OK.

• Application: Para una nueva aplicación. • Template Application: Para crear una nueva aplicación que viene con objetos

preconstruidos, útil para quienes ya conocen Power Builder. • Existing Application: Para incorporar una aplicación que existe ya sea que esté

construida en una versión anterior de Power Builder o no. • EAServer Component: Para crear una aplicación que use componentes de Power

Builder usando el Servidor EASserver • COM/MTS: Para crear una aplicación que use componentes Microsoft. • Automation Server: Para crear una aplicación que use una aplicación de Windows

como servidor.

Page 11: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 11

A continuación cree la aplicación. Cuando crea la aplicación Power Builder le pide el nombre de la aplicación, de la librería y Tarjet. Finalmente clic en el botón Finish ABRIR UNA APLICACIÓN Para abrir una aplicación en la versión 9.0-10.0, no es necesario cerrar los objetos de su aplicación actual. Para abrir una aplicación en la versión 9.0 depende si tiene o no una aplicación abierta: SI NO TIENE NINGUNA APLICACIÓN ABIERTA Si no tiene ninguna aplicación abierta, puede hacer clic en el botón Open (Abrir) o en el Menú File/Open WorkSpace. Se visualiza la siguiente ventana donde debe elegir el nombre del WorkSpace (*.PBW) que desea abrir.

A continuación clic en OK SI TIENE UNA APLICACIÓN ABIERTA Si tiene una aplicación abierta y desea abrir una aplicación existente debe ir al Menú File/Open WorkSpace.

Escribir aquí el nombre de la aplicación

Click Aquí, Library y Target se completan en forma automática.

Page 12: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 12

Se visualiza la siguiente ventana donde debe seleccionar la carpeta y luego su WorkSpace (*.PBW) que desea abrir.

Si la aplicación que desea abrir ha sido utilizada recientemente, puede también ir al Menú File/Recent WorkSpaces la cual muestra las últimas aplicaciones recientemente utilizadas para poder abrirlas.

CREAR UNA VENTANA Para crear una ventana haga clic en el botón New o en el Menú File/New y seleccione la hoja Object, se visualiza la siguiente ventana: De la ventana anterior elija Window, luego haga clic en el botón OK se visualiza la siguiente ventana:

La pantalla que visualiza tiene tres pantallas: Ventana de Trabajo (Layout) Aquí se diseñan los programas, dibujando los controles y escribiendo las instrucciones. Ventana de Propiedades (Properties)

Page 13: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 13

Contiene todas las propiedades que se le pueden asignar a los objetos o controles> Esta dividida en varias hojas que depende del control seleccionado. Ventana de Código o Instrucciones (Script) Es la ventana donde se escriben las instrucciones que necesita el programa. Si alguna de estas ventanas no se visualiza haga clic en el Menú View y luego en la opción deseada:

Cuando se trabaja con una ventana se visualiza las siguientes barras de herramientas o PainterBars:

Graba la Ventana Cortar

Copiar Pegar

Deshacer Controles de Power Builder

Ventana de Código Ventana de Propiedades

Orden de los Controles Vista Previa de la Ventana

Cerrar la Ventana Selecciona Todo

Marca como Comentario Quita el Comentario

Busca un Texto Busca y Reemplaza

Compila un Programa Pega una Funcion

Pega una Instrucción SQL Pega una Sentencias Selectiva o Repetitiva

Pega Variables Globales Nota: La mayoría de estos botones se utilizan cuando estamos escribiendo las instrucciones, ayudándonos en esta tarea, como por ejemplo: asignar y quitar comentarios, escribir sentencias como If Then, For Next, etc, compilar los programas, es decir verificar si las instrucciones escritas están correctamente, etc. El orden de los controles permite indicar el orden en el que se selecciona los controles cada vez que se pulsa la tecla Tab. Se recomienda que se enumeren de 10 en 10.

Page 14: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 14

Orden de Tabulación

Lista de Controles OTROS BOTONES PRINCIPALES DE LOS PAINTER BAR

Envía hacia delante Envía hacia atrás

Alinea un grupo de Controles Color para el texto

Color para el fondo Asigna un Estilo de Borde La siguiente es la barra de estilo y permite asignar de manera rápida las propiedades mas usadas a los controles.

Esta barra permite asignar el Título del control, el tipo de letra, tamaño de letra, negrita, cursiva, subrayado, alineación a la izquierda, centro y derecha. Las acciones de los botones anteriores también se pueden activar usando el Menú Principal que contiene nuevas opciones cuando trabaja con ventanas (Windows), entre las que destacan:

ELEMENTOS DE LA PROGRAMACION OPERADORES ARITMETICOS Son aquellos que nos permiten ordenarle a la computadora que realice las operaciones matemáticas básicas como suma, resta, multiplicación, etc. Operador Operación Ejemplo + Suma 5 + 3 = 8 - Resta 5 - 3 = 2 * Multiplicación 6 * 2 = 12 / División 7/2 = 3.5 ^ Potencia 3^2 = 9 ORDEN DE PRIORIDAD Es el orden en el cual la computadora ejecuta los operadores:

1. 1. ^ Potencia 2. 2. * y / Multiplicación y división 3. 3. + y - Suma y resta

Muy Importante:

1. Si desea alterar el orden de prioridad, debe usar los paréntesis los cuales permiten ejecutar primero una operación:

Page 15: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 15

14 + 6/2 = 17 (14 + 6)/2 = 10 2. Si los operadores tienen la misma prioridad, se ejecutan de derecha a izquierda.

Ejemplo: 4 * 6/2 * 7 = 84 2 * 3 ^ (2 + 1) – 6/2 + 8 = 59 3 + 5 * ((3 – 1)^3/2 + 3) * 6/2 * (8/8)^3 – (9*3) = 81

NOTA: Antes y después del operador – (resta) debe dejar un espacio en blanco. TIPOS DE VARIABLES: Son los tipos de datos que acepta Power Builder. Bloq: Se utiliza para almacenar textos largos e imágenes. Boolean: Se utiliza para almacenar dos valores: True(Verdad) o False(Falso). Char: Se utiliza para almacenar solo un carácter. Date: Se utiliza para almacenar fechas. DateTime: Se utiliza para almacenar valores que contienen la fecha y hora en un solo campo especialmente desde una base de datos. Ejemplo: DateTime F F = DateTime(Today(), Now()) Dec ó Decimal: Almacena valores numéricos con hasta 18 dígitos decimales. Double: Se utiliza para almacenar valores numéricos con hasta 15 dígitos de precisión, el rango de valores que permite almacenar es: 2.2250738585073E-308 Hasta 1.79769313486231E+308 Int ó Integer: Almacena valores enteros desde: -32768 Hasta +32767 Long: Almacena enteros desde: -2,147,483,648 Hasta +2,147,483,647 Real: Permite almacenar valores numéricos con hasta 6 dígitos de precisión. Su rango es: 1.175495E-38 Hasta 3.402822E+38 String: Almacena datos tipo texto con una longitud máxima de 2,147483,647 Time: Almacena una hora desde: 00:00:00 Hasta 23:59:59:999999 UnsignedInteger, UnsignedInt, ó UInt: Permite almacenar valores enteros sin signo desde 0 Hasta 65,535 UnsignedLong ó Ulong: Permite almacenar valores enteros sin signo desde 0 hasta 4,294,967,295 DECLARACIÓN DE VARIABLES Para declarar o definir una variable, debe respetar la siguiente sintaxis: Tipo_de_Variable Nombre_de_ la_Variable Ejemplo Date E Si va a declarar 2 ó más variables del mismo tipo lo pueden hacer en una sola línea separándolas por una coma. Ejemplo Integer A, B, C Al declarar las variables, están toman un valor determinado: Blob: Toma un valor vacío. Char: Toma el valor ASCII 0 Boolean: Toma el valor FALSE Date: Toma la fecha 01-01-1900 DateTime: Toma la fecha y hora: 01-01-1900 00:00:00 String: Toma como valor una cadena vacía. Time: Toma como valor la hora 00:00:00 Cualquier Numérico (Integer, Decimal, etc): Toma el valor 0. Power Builder permite declarar o definir una variable y asignarle al mismo tiempo un valor. Para ello, debe usar la siguiente sintaxis: Tipo_de_Variable Nombre_de_la_Variable = Valor_Inicial La siguiente instrucción declara la variable H de tipo Bolean con el valor inicial TRUE: Boolean H = True

Page 16: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 16

La siguiente instrucción declara las variables A con el valor 5, B con el valor de 20 y C con el valor 60: Integer A = 5, B = 20, C = 60 DECLARACIÓN DE CONSTANTES Se diferencia de las variables por que su valor no se puede cambiar durante la ejecución del programa: La declaración de constantes es similar a la de variables, solo debe anteponer la palabra Constant y asignar un valor. Constant Tipo Nombre_Constante = Valor Tipo: Es el tipo de información que va a almacenar la constante Nombre_Constante: Es la constante que desea utilizar en su programa Valor: Es el valor que debe tener la constante dentro del programa. Ejemplos: La siguiente instrucción declara la constante llamada IGV de tipo Decimal con el valor 18.

Constant Decimal IGV = 18 La siguiente instrucción declara la constante llamada CIUDAD de tipo String con el texto Chiclayo.

Constant String CIUDAD = “Chiclayo” Las constantes y variables se pueden utilizar juntas en cualquier programa. Las siguientes instrucciones leen el total de una factura del control Sle_1 y muestran por separado en el St_1 y St_2 el Sub Total y el Igv de la factura: Costant Decimal IGVACTUAL = 18.00 Decimal TotalFactura, SubTotal, IGV TotalFactura = Dec(Sle_1.Text) SubTotal = TotalFactura * 100/(100+IGVACTUAL) IGV = TotalFactura * IGVACTUAL / (100+IGVACTUAL) St_1.Text = String(SubTotal, “###,##0.00”) St_2.Text = String(IGV, “###,##0.00”) AMBITO DE LAS VARIABLES Se refiere a la parte de nuestra aplicación donde podemos utilizar las variables que declaramos o definimos y donde el valor de una variable es reconocido. Existen cuatro tipos de variables según el ámbito donde se utilizan: VARIABLES LOCALES Son aquellas que se declaran dentro del código de algún control y es reconocida solo dentro de este modulo de instrucciones. Ejemplo: La siguiente ventana muestra la declaración de la variable E dentro de las instrucciones del evento Clicked del control Command Button No 1 (cb_1)

Los otros tipos de variables se declaran en la ventana de declaración de variables. Para ingresar a esta ventana, haga clic en la lista de controles y elija DECLARE luego haga clic en la flecha abajo del tipo de declaración.

Page 17: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 17

VARIABLES GLOBALES Son aquellas cuyo valor es reconocido en cualquier parte de la aplicación.

VARIABLE SHARED: Son aquellas cuyo valor es reconocido en cualquier objeto que esta dentro del objeto donde se declara como por ejemplo en una ventana o menú. Teniendo como característica principal que su valor lo conserva cuando el objeto donde esta declarado se cierra y se abre.

VARIABLE INSTANCIA: Son aquellas cuyo valor es reconocido en cualquier objeto que esta dentro del objeto donde se declara como por ejemplo en una ventana o menú. Tiene como característica principal que su valor NO lo conserva cuando el objeto donde esta declarado se cierra y se abre.

COMENTARIOS: Los comentarios son textos que se pueden utilizar para ir explicando cómo vamos desarrollando nuestro programa y cómo funciona. Power Builder no considera estos textos como instrucciones para la computadora. Para escribir comentarios dentro de un programa se puede utilizar: Doble Slash // Se utiliza cuando el comentario consiste sólo en una línea y se puede escribir antes de la instrucción o al final de ella. Ejemplo: // Declara H de tipo Bolean con el valor TRUE Boolean H = True Ó Boolean H = True // Declara H de tipo Boolean con el valor TRUE Slash y Asterisco /* */ Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10

Page 18: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 18

Page 19: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 19

SEPARATA N°03 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 22-08-2006

MENÚ INSERT /OBJECT. Insert/Object, que permite dibujar un control en la Ventana. Desing/Option/Prefixes 1 y 2, que permite indicar el prefijo que va a tener cada control cuando se dibuje en la Ventana.

Desing/Show Invisibles: Permite o no que los controles que tienen en la propiedad visible el valor False se puedan visualizar en la ventana.

DIBUJAR LOS CONTROLES

Page 20: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 20

VER LA VISTA PREVIA DE UNA VENTANA Después de dibujar los controlasen una ventana, usted puede visualizar una vista previa de cómo se observara cuando se ejecute la aplicación, como por ejemplo su Posición y tamaño. Para ver la vista previa se puede hacer cualquiera de las siguientes acciones:

� Pulsar las teclas ctrl. + Shift + P � Del Menú Design elegir Preview � Hacer clic en el botón Preview

MUY IMPORTANTE Durante la vista previa, Power Builder no reconoce ningún evento, es decir no ejecuta ninguna instrucción. ESCRIBIR LAS INSTRUCCIONES Para escribir o modificar las instrucciones de un control, se debe realizar cualquiera de las siguientes acciones:

� Hacer doble clic en el control. � Hacer clic derecho en el control y elegir la opción Scrip � Seleccionar el control y hacer clic en el botón Script.

Botón Script cuando el control no tiene instrucciones.

Botón Script cuando el control ya tiene instrucciones. Se visualiza la ventana de Código.

En dicha ventana se aprecia lo siguiente:

� Nombre del Control � Lista de Controles � Nombre del Evento � Lista de Eventos

INSTRUCCIONES BASICAS Open: Abrir o mostrar una ventana: Open(Nombre de la Ventana) Close: Cerrar u ocultar una ventana: Close(Nombre de la Ventana) Halt: Finalizar un Programa: Halt SetFocus: Ubicar el cursor en un control: Nombre del Control.SetFocus() Para limpiar el contenido de un control: Nombre del Control.Text = “”

Para dibujar los controles en la ventana, solo debe seleccionarlo de la lista de controles o de la opción Insert/Object haciendo clic en él y luego clic en la parte de la ventana donde desea dibujarlos. En el siguiente ejemplo, se utilizan los controles básicos de todo lenguaje visual y que se explican detalladamente más adelante. Static Text: Que permite mostrar mensajes o resultados en una ventana. Single Line Edit: Que permite ingresar datos al programa. Command Button: Que permiten ejecutar un conjunto de instrucciones

Page 21: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 21

Instrucciones de la aplication Aplica1 Open(w_notas) MUY IMPORTANTE: Después de escribir las instrucciones de un control verifique si estan correctas, para ello haga clic en el Botón Compile.

Botón Compile GRABAR UNA VENTANA Para grabar una ventana del Menú File elija Save o haga clic en el botón Guardar:

Botón Guardar

En la ventana Save Window, debe ingresar el Nombre de la Ventana, Ingresar algún comentario sobre la ventana, asimismo debe seleccionar la librería respectiva. En esta ventana también se muestran las ventanas existentes.

MUY IMPORTANTE � Se recomienda que las ventanas se graben con el prefijo w_, por ejemplo:

w_compras, w_informe, w_principal, etc. Para poder identificarlas al visualizar todos los objetos de la aplicación.

� Los nombres de las ventanas no pueden tener espacios en blanco, de lo contrario se visualiza un mensaje de error.

LOS OBJETOS EN POWER BUILDER 0.9 -10.0 Una aplicación Power Builder se construye en base a un grupo determinado de objetos del conjunto de objetos principales Power Builder:

• Application (Objeto aplicación) • Window (Objeto ventana) • DataWindows (Objeto DataWindow) • Menú (Objeto Menú) • Global Function (Objeto función) • Query (Objeto Consulta) • Structure (Objeto Estructura) • User Object (Objeto Definido por el usuario) • Project (Objeto proyecto)

EVENTOS DE UNA APLICACIÓN. Los eventos son todos aquellos sucesos que le ocurren a la aplicación y a los que se puede asignar un script para que se realicen alguna acción cada vez que ocurra el suceso.

EVENTOS PREDEFINIDOS EN POWER BUILDER. EVENTO DESCRIPCIÓN

Close Ocurre cada vez que se termina la ejecución de una aplicación. ConnectionBegin Obsoleto (usado para conexiones distribuidas con Power Builder) ConnectionEnd Obsoleto (usado para conexiones distribuidas con Power Builder) Idle Cuando la función Idle ha sido llamada en un script de una aplicación

y el número de segundos que han transcurrido sin que el teclado o el ratón hayan sido usados.

Open Ocurre cada vez que se ejecuta una aplicación.

Page 22: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 22

SystemError Cuando un error crítico ocurre en tiempo de ejecución (como tratar de abrir una aplicación no existente). Si no se pone un script para éste evento Power Builder muestra un mensaje con el número de error y mensaje de error que ha ocurrido. Puede usarse para personalizar los errores.

PROPIEDADES DE VENTANA (WINDOWS) Las propiedades de la ventana están organizadas en forma de FICHAS, aquí la descripción de sus principales características:

FICHA DESCRIPCION General La casilla TITLE, indica el texto de título de la ventana. La casilla “menú

Name”, indica el nombre del objeto menú para la ventana. Window Type, indica el tipo de ventana: • Child!, ventana que permanece inserta dentro de una ventana MDI • Main!, ventana normal (principal) con posibilidad de menú. • Mdi!, ventana que posee área interna para contener otras ventanas. • MdiHelp!, igual que la anterior, y sirve como ayuda. • Popup!, ventana de contexto o emergente. • Response!, necesita cerrar esta ventana para continuar la ejecución.

Scroll Permite definir si la ventana tendrá barras de desplazamiento, y la unidad a utilizarse por ellas.

Toolbar Permite definir si se utilizará la caja de herramientas definida para el menú su presentación y posición.

Other Permite indicar la posición y tamaño de la ventana dentro de la pantalla, como será presentada.

CONTROLES En el painterBar de Window existe el botón que permite elegir a dichos controles y es éste; Muestra el listado de todos los controles que es posible de utilizar . Adicionalmente se pueden diseñar objetos con características adicionales para ser

utilizadas también. Para añadir un control a la ventana, seleccione el control, del listado. Haga click sobre el lugar en la ventana donde desea añadirlo. Para seleccionar un control de la ventana, de click en él, o mantenga presionada la tecla control para seleccionar varios objetos. Puede moverlos arrastrando el mouse. Los controles son los siguientes :

Control Icono Prefijo

Descripción

CommandButton cb_ Para implementar botones, con los que se inician procesos o por el contrario para terminarlos, cancelarlos o cerrar ventanas.

PictureButton pb_ Botón con imágenes. Tiene casi todas las características del control anterior, pero adicionalmente permite mostrar una figura dentro de él.

CheckBox cbx_

Permite hacer una selección (marcarlo) entre varias alternativas. Cada alternativa es independiente.

Page 23: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 23

RadioButton rb_ Permite hacer una selección (marcarlo) entre varias alternativas. Sólo una alternativa, del conjunto puede seleccionarse.

StaticText st_ Caja de texto, como etiqueta. Solo para mostrar información, no hay posibilidad que pueda escribirse directamente en ella.

StaticHyperLink shl_ Muestra información y además permite definir una URL para cargar la página web que se le indique.

Picture p_ Caja de dibujo. Permite visualizar una figura. Esta puede ser definida en tiempo de diseño, puede ser modificada en tiempo de ejecución.

PictureHyperLink phl_

Muestra gráficos y además permite definir una URL para cargar la página web que se le indique.

GroupBox gb_ Se usa para agrupar cualquier grupo de controles, por ejemplo es muy útil para agrupar los controles RadioButton y CheckBox.

Line l_ Permite dibujar una línea.

Oval ov_ Permite dibujar un óvalo.

Rectangle r_ Permite dibujar un rectángulo.

RoundRectangle rr_ Permite dibujar un rectángulo con bordes redondeados.

SingleLineEdit sle_ Caja de edición de texto, es posible que el usuario en tiempo de ejecución escriba un texto y se vean sólo asteriscos, se usa para el ingreso de claves de acceso (passwords).

EditMask em_ Caja de texto, a la que se le puede restringir el conjunto de caracteres a ingresar. Permite un formato de presentación.

MultiLineEdit mle_

Se usa para ingresar varias líneas en una entrada de datos.

RichTextEdit rte_

Se usa para mostrar texto enriquecido, es decir texto coloreado, en negritas, itálicas, subrayado, etc.

HScrollBar hsb_

Barra de desplazamiento horizontal.

VscrollBar vsb_

Barra de desplazamiento vertical.

HtrackBar htb_

Barra de pistas horizontal.

VtrackBar vtb_

Barra de pistas vertical.

HprogressBar hsb Barra de progreso horizontal.

Page 24: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 24

_ VprogressBar vsb

_ Barra de progreso vertical.

DropDownListBox ddlb_

Caja de lista desplegable. Muestra un solo ítem, el seleccionado, de la lista que se despliega al presionar el botón adjunto.

DropDownPictureListBox

ddplb_

Similar al anterior pero soporta figuras por cada elemento que muestra.

PictureListBox plb_

Es una caja de lista con elementos gráficos y de texto.

ListBox lb_ Caja de lista. Muestra todos los ítems a la vez, pudiendo seleccionarse inclusive, más de uno.

ListView lv_ Se usa para crear una vista de objetos.

TreeViev tv_ Se usa para crear una vista de tipo árbol, con una raíz común y varios nodos y elementos colgados de dichos nodos.

Tab tab_

Es un separador de páginas que son contenedoras de objetos visuales de Power Builder.

DataWindow dw_ Datawindow Control, el que se vincula con un objeto Datawindow diseñado.

Graph g_ Se usa para crear gráficos estadísticos.

Ole ole_ Se usa para incorporar objetos de windows de otras aplicaciones distintas al Power Builder.

USerObjetc uo_ Se usa para incorporar objetos de usuario creados previamente por alguien usando objetos visuales y objetos no visuales de Power Builder preconstruido.

DESARROLLO DE APLICACIONES

Aplicación 01 Desarrolle un aplicación de bienvenida en Power Builder 9.0-10.0 que contenga tres CommanButtom Salir, Cancelar. Aplicación 02: Desarrolla una aplicación que permita Mostrar el nombre del usuario y su respectiva clave de acceso. La clave de acceso tendrá una longitud de cinco caracteres, se debe mostrar como asterisco, cuando el usuario ingrese algún valor en la caja de texto respectivo y debe asir de la aplicación cuando se hace tres intentos

Page 25: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 25

PROPIEDADES – DISEÑO : Control Propiedades Valor St_1 Text Usuario St_2 Text Contraseña Sle_1 name Sle_usuario Sle_2 name Sle_contraseña Limit 5 Password buena(chek) Cb_1 name Cb_aceptar Text &Aceptar Default buena(Chek) Enabled Desactivar Cb_2 name Cb_salir Text &Salir ESCRIBIR EL CÓDIGO DE APLICACIÓN: Aplicación Aplicacion02 open Windows Sle_usuario other Sle_contraseña other Cb_aceptar clickled Cb_salir clickled

Page 26: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 26

APLICACIÓN 03 Realice una aplicación para sacar el promedio de dos números y mostrar el promedio de los dos además de implementar los botones de aceptar, salir y Nuevo. PROPIEDADES DE DISEÑO: Código Cb_aceptar Cliked double prome prome=(double(sle_1.text)+double(sle_2.text))/2 sle_3.text=string(prome,"###,##00.00") Aplicación 04 Realice una aplicación que permite ingresar el nombre de una persona y en año que nació. La computadora debe calcular y mostrar la edad de la persona, una observación que indique si es mayor o menor de edad. Si es mayor de edad debe mostrar hace cuantos años es mayor de edad y si es menor de edad, se debe indicar cuóntos años le faltan para ser mayor de edad.

Ingrese su Apellido y Nombre

Ingrese la fecha de nacimiento

Page 27: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 27

PROPIEDADES DE DISEÑO Cb_aceptar Cliked Cb_salir Cliked

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10

Page 28: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 28

SEPARATA N°04 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 29-08-2006

SEMANA04

LISTBOX - DROPDOWLISTBOX

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. Aplicación 05 Desarrolle un aplicación que permita elaborar una pro forma de ventas de articulo, se debe de ingresar los datos del cliente en un control Drop DownListBox el distrito donde vive el cliente.

PROPIEDADES DE DISEÑO

Page 29: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 29

Cb_Aceptar Cliked Cb_Nuevo Cliked Cb_Salir Cliked CONTROL TAB

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. Aplicación 06 Desarrolle una aplicación para ingresar los dato de un empleado y mostrar el comentario y la lista en un control tab

Page 30: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 30

pb_Aceptar Cliked pb_Limpiar Cliked pb_Salir Cliked APLICACIÓN 07 Los empleados de una fabrica trabajan en dos turnos: Diurno y Nocturno, se desea calcular el jornal diario de acuerdo a los siguientes puntos:La tarifa de las horas diurnas es: S/. 3.00 La tarifa de las horas nocturnas es: S/. 4.00 En caso de ser domingo la tarifa aumentará en un S/. 1.00 en el turno diurno y de 1.50 en el turno nocturno. Se debe leer el turno, las horas trabajadas y el día de la semana. A continuación se aprecia el diseño de la ventana en modo ejecución.

Page 31: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 31

PROPIEDADES DE DISEÑO

DECLARAR VARIABLES Y ALMACENAR

Si desea escribir varias instrucciones en una sola línea, debe separarlas por un punto y coma (;) La siguiente instrucción almacena en la variable C el valor 80. Integer A, B, C A = 40; B = 2; C = A * B ALMACENAR VALORES EN VARIABLES La sintaxis mas sencilla para almacenar un valor en una variable es: Nombre_de_la_variable = Valor Ejemplo: Almacena en la variable A el valor 37: A = 37 Si los valores que desea almacenar en una variable han sido ingresados en un control por ejemplo en el Single Line Edit No 1 (Sle_1). Debe seguir la siguiente sintaxis: Nombre_de_la_variable = Tipo_de_Variable(Nombre_del_Control.Text) El tipo de variable depende como se ha definido la variable donde desea almacenar el dato ingresado. El nombre del control es aquel donde se ha ingresado el dato. Por ejemplo:

Almacenar en la variable A el número de alumnos ingresados en Sle_1 Integer A A = Integer(Sle_1.Text)

Almacenar en la variable C el precio de un articulo ingresado en Sle_1 Decimal C C = Dec(Sle_1.Text)

� Almacenar en la variable F la fecha de nacimiento ingresado en Sle_1 Date F

F = Date(Sle_1.Text) � Para datos tipo texto, no es necesario indicar el Tipo:

String N N = Sle_1.Text

MOSTRAR EL CONTENIDO DE VARIABLES Si desea mostrar el contenido de una variable en un control como por ejemplo en un Single Line Edit (Sle) o en un Static Text (St), debe convertirlos a tipo String. Ejemplos:

� Se tiene en la variable A el número de alumnos, mostrar este contenido en el control Static Text No 1: St_1.Text = String(A)

� Se tiene en la variable C el precio de un articulo, mostrar este contenido en el

control Static Text No 1 St_1.Text = String(C)

� Se tiene en la variable F la fecha de nacimiento de una persona, mostrar este contenido en el control Static Text No 1 St_1.Text = String(F)

Page 32: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 32

Se tiene en la variable E la edad de una persona. La siguiente instrucción muestra el texto: Usted tiene 34 años de edad. Integer E E = 34 St_1.Text = “Usted tiene “ + String(C) + “ años de edad” Para mostrar datos tipo texto, no es necesario indicar el tipo: Se tiene en la variable N el nombre de una persona, mostrar este contenido en el control Static Text No 1: St_1.text = N ASIGNAR FORMATOS DE SALIDA La función string también permite asignar un formato de salida para los datos a mostrar. Sintaxis para asignar formato a números: String(Variable, “Formato1; Formato2; Formato3; Formato4”) Variable: Es la que contiene el valor a mostrar Formato1: Es el formato para los valores positivos Formato2: Es el formato para los valores negativos Formato3: Es el formato usado cuando la variable tenga el valor 0 Formato4: Es el formato usado cuando la variable tenga el valor nulo. Ejemplos: Decimal Num Num = 3459.5987 St_1.Text = String(Num, “###,##0.00”) Las instrucciones anteriores devuelven: 3,459.60 Decimal Num Num = -753.1 St_1.Text = String(Num, “###,##0.00; (###,##0.00 )”) Las instrucciones anteriores devuelven: (753.10) Decimal Num Num = 0 St_1.Text = String(Num, “###,##0.00; (###,##0.00 ); ‘Nada’ ”) Las instrucciones anteriores devuelven la palabra: Nada Decimal Num SetNull(Num) St_1.Text = String(Num, “###,##0.00; (###,##0.00 ); ‘Nada’; ‘Sin Valor’ ”) Las instrucciones anteriores devuelven la palabra: Sin Valor Decimal Num Num = 2996 St_1.Text = String(Num, “**###,##0.00”) Las instrucciones anteriores devuelven: **2,996.00 SINTAXIS PARA ASIGNAR FORMATOS A FECHAS: String(Variable, “Formato1; Formato2”) Variable: Es la que contiene la fecha a mostrar. Formato1: Es el formato para la fecha. Formato2: Es el formato cuando la fecha tenga el valor nulo. Ejemplos: Date Fecha Fecha = Date(“15-03-05”) St_1.Text = String(Fecha, “mm dd yyyy”) Las instrucciones anteriores devuelven: Mar 15 2005

Page 33: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 33

Date Fecha Fecha = Date(“15-03-05”) SetNull(Fecha) St_1.Text = String(Fecha, “dd-mm-yy; ‘Sin Fecha’ ”) Las instrucciones anteriores devuelven las palabras Sin Fecha Time Hora Hora = Time(“22:28:15”) St_1.Text = String(Hora, “hh:mm:ss”) Las instrucciones anteriores devuelven: 22:28:15 Time Hora Hora = Time(“22:28:15”) St_1.Text = String(Hora, “hh:mm:ss am/pm”) Las instrucciones anteriores devuelven: 22:28:15 pm Date Fecha Time Hora Fecha = Today() Hora = Now() St_1.Text = String(DateTime(Fecha, Hora), “dd-mm-yyyy hh:mm:ss am/pm”) Las instrucciones anteriores devuelven la fecha y hora del sistema como por ejemplo: 15-03-2002 10:35:14 pm Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10

Page 34: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 34

SEPARATA N°05 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 05-09-2006

RADIO BUTTON

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:

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

True: Control Activado False: Control Desactivado

CHECKBOX

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:

True: 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. True: Control Activado False: Control Desactivado EDIT MASK

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 :yyyy/mm/dd 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.

EVENTOS DE LOS CONTROLES CloseQuery

Page 35: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 35

Ocurre cuando la ventana es cerrada. Cuando el usuario cierra la ventana el código escrito en el evento CloseQuery se ejecuta Modified Ocurre cuando el contenido de un control ha cambiado SelectiónChange Ocurre cuando un item es seleccionado en un Control Lisbox, Drop DownListBox. Clicked Ocurre cuando se realiza clic sobre un control respectivo. Other Ocurre a una instancia de un control, o Windows Open Ocurre cuando se inicia un control, o una aplicación.

PROPIEDADES DE UN WINDOWS – CONTROL HSCROLLBAR, VSCROLLBAR

Propiedades de un Windows: Propiedades de un control Las propiedades de un control varia de acuerdo a la característica del control.

Page 36: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 36

APLICACIÓN 08 Realice una aplicación para determinar la talla de tres estudiantes seleccionando con la barra de desplazamiento la talla de cada estudiante Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net

Page 37: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 37

SEPARATA N°06 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 12-09-2006

CONTROL VTRACKBAR, HTRACKBAR

APLICACIÓN 09 Realice una aplicación para mostrar el valores enteros, de acuerdo a la necesidad del estudiante:

Page 38: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 38

Aplicación 10 La siguiente aplicación permite ingresar el nombre de un producto, su valor de compra, la utilidad en porcentaje que desea obtener al vender el producto y el descuento que se brinda a los clientes. La computadora debe calcular y mostrar los siguientes datos: Igv (19% de valor de compra), Precio de Compra(Valor de Compra + Igv), Utilidad en soles, Precio sugerido para el público (Precio de Compra + Utilidad en Soles), Descuento en soles y Precio del producto con descuento (Precio Público Sugerido menos Descuento). Nota: Cree una aplicattion nueva y pongale el nombre: aplica10, y una nueva ventana y grabelo con el nombre w_aplica10

Propiedades de los objetos Objeto Propiedad Valor Window Title Precio de un producto St_1 Text Nombre del Producto Border Marcar BorderStyle StyleShadowBox! St_2 Text Valor de Compra Border Marcar BorderStyle StyleShadowBox! St_3 Text Utilidad % Border Marcar BorderStyle StyleShadowBox! St_4 Text Descuento al Cliente Border Marcar BorderStyle StyleShadowBox! St_5 Name st_igv Text Igv(18%) Border Marcar BorderStyle StyleShadowBox! St_6 Name st_pc Text Precio de Compra Border Marcar BorderStyle StyleShadowBox! St_7 Name st_uti Text Utilidad Border Marcar

Page 39: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 39

BorderStyle StyleShadowBox! St_8 Name st_ps Text Precio Público Sugerido Border Marcar BorderStyle StyleShadowBox! St_9 Name st_des Text Descuento Border Marcar BorderStyle StyleShadowBox! St_10 Name st_pd Text Precio con Descuento Border Marcar BorderStyle StyleShadowBox! Em_1 Name em_np Border Marcar BorderStyle StyleLowered! MaskDataType StringMask! Mask !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Em_2 Name em_vc Border Marcar BorderStyle StyleLowered! MaskDataType NumericMask! Mask ###,###.00 Em_3 Name em_uti Border Marcar BorderStyle StyleLowered! MaskDataType NumericMask! Mask ###,###.00 Em_4 Name em_dc Border Marcar BorderStyle StyleLowered! MaskDataType NumericMask! Mask ###,###.00 Cb_1 Name cb_Nuevo Text &Nuevo Cb_2 Name cb_calcular Text &Calcular Cb_3 Name cb_Salir Text &Salir Codigo de los Objetos Objeto: cb_nuevo Evento: Clicked em_np.text = "" em_vc.text = "" em_uti.text = "" em_dc.text = "" st_igv.text = "" st_pc.text = "" st_uti.text = "" st_ps.text = "" st_des.text = "" st_pd.text = "" em_np.setfocus()

Page 40: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 40

Objeto: cb_calcular Evento: Clicked /* Definicion de variables ValorCompra = Valor de Compra, PorcUti = Porcentaje Utilidad, PorcDesCli = Porcentaje Descuento Cliente Igv = Igv(18%), PreCompra = Precio de Compra, UtiSoles = Utilidad en Soles, PrePubliSug = Precio Público Sugerido Des = Descuento, PreDesc = Precio con Descuento */ real ValorCompra, PorcUti, PorcDesCli, Igv, PreCompra, UtiSoles, PrePubliSug, Des, PreDesc ValorCompra = real(em_vc.text) PorcUti = real(em_uti.text) PorcDesCli = real(em_dc.text) //Obtención de resultados Igv = (19*ValorCompra)/100 PreCompra = ValorCompra + Igv UtiSoles = (PorcUti*PreCompra)/100 PrePubliSug = PreCompra + UtiSoles Des = (PrePubliSug*PorcDesCli)/100 PreDesc = PrePubliSug - Des // Mostramos los resultados st_igv.text = string(Igv,"###,##0.00") st_pc.text = string(PreCompra,"###,##0.00") st_uti.text = string(UtiSoles,"###,##0.00") st_ps.text = string(PrePubliSug,"###,##0.00") st_des.text = string(Des,"###,##0.00") st_pd.text = string(PreDesc,"###,##0.00") Objeto: cb_Salir Evento: Clicked Halt Objeto: Precio Evento: Open Open(w_precio)

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net

Page 41: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 41

SEPARATA N°07 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 19-09-2006

CONTROL -TREE VIEW Este control permite mostrar información en forma de árbol jerárquico cada elemento que se muestra con este control consiste en un texto especial y opcionalmente un gráfico. Principales propiedades: Edit Label: Permite indicar si el texto de cada elemento que se muestra, se puede modificar durante la ejecución del programa. Has Button Permite mostrar el signo de + o – en cada elemento para poder expandirlo o contraerlo su contenido. Has Line Permite que los sub elementos se muestran unidas con líneas. Delete Items. Permite indicar si el usuario puede borrar los elementos durante la ejecución del programa. Single Expand Permite que el contenido de un elemento seleccionado se visualice con solo hacer un clic. Sort Type. Permite indicar la forma como se deben ordenar los elementos dentro del control Indent Permite la sangría entre cada nivel de información mostrada. Check Boxs. Permite indicar si cada elemento de control debe ir acompañado de una casilla de verificación

Page 42: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 42

Cada elemento de control se enumera de padre a hijo y de arriba hacia abajo el primer elemento tiene el numero 1 (Uno). Software 1

Sistema operativo 3 Windows 7 Uníx 8

Programación 4 Power Builder 9 Java 10

Hardware 2 Internos 5

Disco duro 11 Mainbord 12

externos 6 Función INSertItemLAst Es una de las funciones que permite agregar elemento al control tv_1 Su sintaxis es el siguiente: Nombre del control. InsertItemLAst(Numero, “Texto”, Gráfico) Numero Es el numero del elemento (padre) al cual le desea insertar sub elementos (Hijos) Para el primer nivel es cero(0) Texto Es el texto que va mostrar el elemento Gráfico Es el numero del grafico que se agregó en la hoja Picture y que desea que le acompañe le texto Par que se puede visualizar se puede visualizar desde el evento open de del Windows Instrucciones para incrementar tv_1.insertItemlast(0,"Sofware",1) tv_1.insertItemlast(0,"Hardware",1) tv_1.insertItemlast(1,"Sistema Operativo",3) tv_1.insertItemlast(1,"Programación",3) tv_1.insertItemlast(2,"Internos",3) tv_1.insertItemlast(2,"Externos",3) tv_1.insertItemlast(3,"Windows",2) tv_1.insertItemlast(3,"UNix",2) tv_1.insertItemlast(4,"Java",7) tv_1.insertItemlast(4,"PowerB.",7) tv_1.insertItemlast(5,"Disco",7) tv_1.insertItemlast(5,"Mainbors",7) FUNCIONES PARA MANIPULAR DATOS DeleteItem Tv_1.DeleteItem(Numero) DeletePicture Tv_1.DeletePicture(Numero) ExpandAll Tv_1.ExpandAll (Número de elemento) ExpandItem Tv_1.ExpandItem (Número de elemento) FindItem

Page 43: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 43

Tv_1.FindItem (Palabraclave, Número de elemento) RootTreeItem! Devuelve el numero del primer elemento NextTreeItem! Devuelve el numero siguiente elemento ParentTreeItem! Devuelve el numero del elemento padre ChildTreeItem Devuelve el numero del primer elemento hijo GETITEM Permite leer la información Nombre del control.GetItem(Numero de elemento, Variable) Las variables deben ser de tipo Treeview Aquí es donde se almacena la información El evento selectionchanged tiene dos parametros OldHAndle contiene le numero de elementos seleccionado NewHAndle que contiene el numero de elemento actual INSERTITEM Nombre del control.InsertItem(Padre, Numero,”Texto”,Grafico) Tv_1.InsertItem(3,4,”Texto”,1) Aplicación 11 Realice la siguiente aplicación

Codigo de tv_1 selectionchangend long n treeviewitem tvi tv_1.getitem(newhandle, tvi) sle_1.text =string(newhandle) sle_2.text =string(tvi.label) lv_1.deleteItems() choose case newhandle case 3

Page 44: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 44

lv_1.additem("windows",1) lv_1.additem("UNix",2) case 4 lv_1.additem("java",1) lv_1.additem("Power B.",2) case 5 lv_1.additem("Disco duro",1) lv_1.additem("Mainbord",2) case 6 lv_1.additem("Impresora",1) lv_1.additem("monitor",2) end cose Codigo de Windows open //lv_1.view= listviewlargeIcon! lv_1.view= listviewsmallIcon! tv_1.insertItemlast(0,"Sofware",1) tv_1.insertItemlast(0,"Hardware",1) tv_1.insertItemlast(1,"Sistema Operativo",3) tv_1.insertItemlast(1,"Programación",3) tv_1.insertItemlast(2,"Internos",3) tv_1.insertItemlast(2,"Externos",3) tv_1.insertItemlast(3,"Windows",2) tv_1.insertItemlast(3,"UNix",2) tv_1.insertItemlast(4,"Java",7) tv_1.insertItemlast(4,"PowerB.",7) tv_1.insertItemlast(5,"Disco",7) tv_1.insertItemlast(5,"Mainbors",7) Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net

Page 45: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 45

SEPARATA N°08 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 26-09-2006

CONTROL -LIST VIEW

Para Mostrar en este control puede ser texto o grafico: Sus propiedades: Fixed locatios Indica si el usuario puede arrastrar un elemento que se muestra en este control a un nueva posició. Trabaja junto con la propiedad de AutoDrag Edit labels Indica si el usuario puede modificar el texto de los elementos cuando se ejecuta el programa. Auto arranque Indica si el control cambia en forma automática a un estado de arrastre cuando se hace clic Aplicación 12, desarrolle la aplicación ahora con listview Como se muestra en el grafico:

Page 46: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 46

FUNCIONES EN POWER BUILDER

PowerBuilder posee una gran variedad de funciones que permiten al programador desarrollarsus aplicaciones de una manera fácil. 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 ("Elvis Guillermo",4) LeftTrim. Retorna la misma cadena de caracteres sin los espacios en blanco del lado izquierdo de la cadena

Ejemplo : LeftTrim ("Elvis Guillermo ") 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("ELVIS GUILLERMO ")

Mid. Retorna una cadena que contiene un número especificado de caracteres, comenzando de una posición indicada.

Ejemplo : Mid("Elvis Guillermo ",5,5) Pos. Retorna la posición donde se encuentra una cadena dentro de otra cadena

Ejemplo : Pos("Elvis Guillermo ","G") Reverse. Cambia el orden de los caracteres de una cadena.

Ejemplo : Reverse ("Elvis Guillermo ") Right. Retorna un número especificado de caracteres, comenzando del lado derecho..

Ejemplo : Right ("Elvis Guillermo ",3) RightTrim. Retorna la misma cadena de caracteres sin los espacios en blanco del lado derecho de la cadena

Ejemplo : RightTrim ("Elvis Guillermo ") 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 ("Elvis Guillermo ") Upper. Retorna la misma cadena de caracteres convertidas a letras mayúsculas.

Ejemplo : Upper ("elvis guillermo ") 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

Page 47: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 47

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)

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

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.

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.

Page 48: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 48

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

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

Page 49: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 49

Ejemplo : Integer Numero Numero=Integer("14")

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)

VENTANAS

La interfaz entre un usuario y la aplicación. El usuario interactúa con la aplicación en ejecución a través de la ventana activa. PROPIEDADES DE VENTANA Las propiedades de la ventana están organizadas en forma de FICHAS, aquí la descripción de sus principales características:

FICHA DESCRIPCION General La casilla TITLE, indica el texto de título de la ventana. La casilla “menú Name”,

indica el nombre del objeto menú para la ventana. Window Type, indica el tipo de ventana: • Child!, ventana que permanece inserta dentro de una ventana MDI • Main!, ventana normal (principal) con posibilidad de menú. • Mdi!, ventana que posee área interna para contener otras ventanas. • MdiHelp!, igual que la anterior, y sirve como ayuda. • Popup!, ventana de contexto o emergente. • Response!, necesita cerrar esta ventana para continuar la ejecución.

Scroll Permite definir si la ventana tendrá barras de desplazamiento, y la unidad a utilizarse por ellas.

Toolbar Permite definir si se utilizará la caja de herramientas definida para el menú su presentación y posición.

Other Permite indicar la posición y tamaño de la ventana dentro de la pantalla, como será presentada.

FUNCIÓN MESSAGE BOX MESSAGEBOX Esta función permite mostrar una ventana de mensaje para el usuario. Messagebox(Título, Mensaje, Iconos, Botones, Predeterminado) Título: Es el título de la ventana del mensaje Mensaje: Es el mensaje que desea enviar al usuario Iconos: Es una palabra que indica los íconos que deben acompañar al mensaje.

Question! StopSign! Exclamation! Information! None! Botones: Es una palabra que indica los botones que van a acompañar al mensaje: OK! Muestra el botón aceptar OKCancel! Muestra los botones Aceptar y Cancelar YesNo! Muestra los botones Si y No YesNoCancel! Muestra los botones Si, No y Cancelar

Page 50: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 50

RetryCancel! Muestra los botones Reintentar y Cancelar AbortRetryIgnore! Muestra los botones Anular, Reintentar y Omitir Predeterminado: Es el número de botón que desea seleccionar en forma predeterminada cuando se muestre el mensaje. La función MessageBox retorna el número 1, 2 o 3 que indica el botón seleccionado por el usuario. Ejemplo: En el botón finalizar, puede escribir las siguientes instrucciones. Integer N N = MessageBox(“Confirme”,”Esta seguro de salir”, Question!, YesNo!) If N = 1 Then Halt

Las siguientes instrucciones son similares a las anteriores, se diferencian porque aquí se muestra seleccionado el segundo botón. Integer N N = MessageBox(“Confirme”,”Esta seguro de salir”, Question!, YesNo!,2) If N = 1 Then Halt

Las siguientes instrucciones muestran el Icono de Error Crítico y los botones de Reintentar y Cancelar. Integer N N = MessageBox(“Verifique”,”No se puede leer su disco”, StopSign!, RetryCancel!)

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net

Page 51: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 51

SEPARATA N°09-10 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 03-10-2006

SEMANA 09-10

INTRODUCCIÓN AL DISEÑO DE MENUS Un menú en Power Builder permite seleccionar opciones o acciones de una lista. Una barra de menús es una alternativa para usar estas opciones como si fuesen botones. DISEÑO DE MENUS Para la aplicación de un menú primero debemos definir las opciones que se debe emplear. Ejemplo realice un menú de la siguientes características: CREACIÓN DE MENU Para crear un menú ,File, New, PB object, Menú

Page 52: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 52

Dar un clic en Ok en seguida se observa la siguiente ventana. Para crear la primera opción. Del menú dar un clic derecho del mouse en: Para insertar elegir del menú contextual sub menu item Para insertar sub menu de la mima manera insert submenu item Propiedades del Menú

Page 53: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 53

El diseño final del menú es el siguiente: Guardar el menú con las modificaciones correspondientes y con el nombre adecuado. CREAR LA VENTANA PRINCIPAL Se debe de crear un a ventana y cambiar en propiedades WINDOW TYPE a Mdihelp para. Como se muestra en al figura. El código de aplicación open(w_menu) CREACIÓN DE MENU POPUP Para creación del menú se debe de utilizar la función Menu Popup SINTAXIS: Menuname.PopMenu(xlocation, ylocation)

Page 54: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 54

El código fuente se realiza en el evento RbuttonDown en el Windows correspondiente. Al ejecutar la aplicación y dar clic derecho debe de mostrar. para escribir el código de cada opción de menú. Se realiza en el Script realizando clic derecho en cada opción y clic n la opción Script UTILIZAR EJECUTABLES Permite ejecutar archivos ejecutables: Sintaxis. Run (String {windowsstates}) Ejemplo

Page 55: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 55

ESTRUCTURAS SELECTIVAS DE CONTROL IF – THEN Permite indicar una condición para que se pueda o no ejecutar una o mas instrucciones dentro de un programa. Tiene varias sintaxis: If Condición Then Instrucción1 Else Instrucción2

1. If Condición Then : Instrucción(es) (Bloque de instrucciones 1) :

Else : Instrucción(es) (Bloque de instrucciones 2) : End If El bloque de instrucciones No 1 sólo se ejecuta cuando la respuesta a la condición es Verdad. El bloque de instrucciones No 2 sólo se ejecuta cuando la respuesta a la condición es Falso. If Condición No 1 Then

: Instruccion(es) (Bloque de instrucciones No 1) :

ElseIf Condición No 2 Then :

Instruccion(es) (Bloque de instrucciones No 2) :

ElseIf Condición No 3 Then :

Instruccion(es) (Bloque de instrucciones No 3) :

ElseIf Condición No n Then :

Instruccion(es) (Bloque de instrucciones No n) :

Else : Instruccion(es) (Ultimo Bloque de instrucciones) :

End If ElseIf Se puede repetir N veces, según los requerimientos del programa que usted está desarrollando. El bloque No 1 de instrucciones sólo se ejecuta cuando la respuesta a la condición es Verdad. El bloque No 2 de instrucciones sólo se ejecuta cuando la respuesta a la condición es Verdad. El último bloque de instrucciones sólo se ejecuta cuando la respuesta a la condición No n es Falso. Nota: En las tres sintaxis la palabra else y las instrucciones que contiene son opcionales. CHOOSE CASE

Se utiliza el valor de una expresión o una variable para decidir entre una serie de opciones. CHOOSE CASE expresión(X)

CASE expresión Bloque de sentencia

Page 56: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 56

CASE expresión Bloque de sentencia

CASE expression Bloque de sentencia

Case Else END CHOSE DO...LOOP Hay cuatro variantes de la sentencia DO...LOOP. Cada una de estas sentencias DO...LOOP ejecuta un bloque de sentencias hasta que se produzca una condición de finalización Hacer mientras la condición sea verdadera

DO WHILE condicion bloquedesentencias LOOP

Hacer hasta que la condición llegue a ser verdadera. DO UNTIL condicion bloquedesentencias LOOP

Repetir mientras la condición sea verdadera. LOOP WHILE

Repetir hasta que la condición llegue a ser verdadera. DO bloquedesentencias LOOP UNTIL condición

FOR ..... NEXT La Sentencia FOR... NEXT ejecuta un bloque de sentencias en un determinado número de

veces. Los argumentos que se especifican en la sentencia determina el número de veces que se ejecuta el bloque.

FOR nomvar = inicial TO final {STEP incremento} bloque de sentencias NEXT PRACTICA CALIFICADA

1. Desarrollar una aplicación que permita elaborar una proforma de venta de accesorios de cómputo se debe ingresar los datos de cliente y seleccionar en un control ddlb. Mientras que el en ddpb se debe mostrar todo los productos. Se debe mostrar cuanto es su costo y tener en cuenta que algunos productos están con descuento por promoción

2. Crear una aplicación para calcular el pago total de los empleados por categorías (contratado y nombrados) que laboran en un compañía, dicha empresa está constituida por áreas o departamentos y en cada departamento tiene diferente remuneración tal como se muestra en la tabla:

• Administración s/ 1200.00 • Informática s/ 1000.00 • Marketing s/ 900.00 • Producción s/ 800.00 • Contabilidad s/ 1000.00

3. Desarrolle una aplicación que permita calcular los montos de una cabina de locutorio donde se realiza llamadas locales, nacionales, internacionales. para saber el importa total por cada llamada hecha y un comentario que se debe realizar por cada llamada, los precios que se tienes: son los siguientes:

En soles

Page 57: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 57

Local 0.50 Nacional 1.00 Internacional 2.50

4. Utilice los controles Edit Mask(em), y Tree View(tv) para diseñar una aplicación donde se muestra los libros por Categorías, las categorías que se tiene son de:

Cursos generales

Matemática Geometría . . .

Informática Base de Datos Lenguaje de Programación Redes . . Administración Recursos Gestión Sistémica Sistemología MSB Dinámica de Sistemas

Esa aplicación nos muestra el valor de cada libro y el año de publicación o edición

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net

Page 58: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 58

SEPARATA N°11 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 17-10-2006

CONCEPTO DE BASE DE DATOS

Introducción: En una empresa, las entidades están representadas por los operarios, los empleados, los clientes, los proveedores, las facturas. En este tipo de organización y otras se ha de trabajar con una gran cantidad de datos, lo cual hace surgir la necesidad de almacenarlos de manera que nos resulten de fácil acceso en cada momento y, por consiguiente, útiles a nuestras actividades. Si por ejemplo cada día debemos gestionar varias decenas de clientes y facturas, utilizaremos un sistema para memorizar los datos como, por ejemplo, un fichero, más bien antes que recurrir únicamente a la memoria. Las fichas aparecen reagrupadas en archivos, cada uno de los cuales contiene en general las fichas de un sólo tipo, las de los proveedores o las de los productos. Este sistema recibe el nombre de base de datos, que no es ninguna otra cosa más que una colección de informaciones tales como el catálogo de los ficheros de una biblioteca, un listado telefónico o una enciclopedia. Este término de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado en california – USA. La idea de base de datos surge como una necesidad de mantener datos relacionados. Para entender mejor entendimiento el concepto de Base de datos empezaremos con las definiciones siguientes:

- Dato: Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o alfanuméricos.

- Información: Es un conjunto ordenado de datos los cuales son manejados según la necesidad del usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a información, primero se debe guardar lógicamente en archivo

1. Definiciones de BD Todas las definiciones coinciden en que es un conjunto de datos almacenados • Un conjunto de información relacionada que se encuentra agrupada ó estructurada. • Un sistema formado por un conjunto de datos almacenados en discos que permiten el

acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos (punto de vista informático)

• Colección de datos interrelacionados almacenados en conjunto sin redundancias perjudiciales o innecesarias; su finalidad es servir a una o más aplicaciones de la mejor forma posible; los datos se almacenan de modo que resulten independientes de los programas que los usan; se emplean métodos bien determinados para incluir nuevos datos y para modificar o extraer los datos almacenados". Martin, 1975.

• Colección integrada y generalizada de datos, estructurada atendiendo a las relaciones naturales de modo que suministre todos los caminos de acceso necesarios a cada unidad de datos con objeto de poder atender todas las necesidades de los diferentes usuarios". Deen, 1985.

• Colección de datos integrados, con redundancia controlada y con una estructura que refleje las interrelaciones y restricciones existentes en el mundo real; los datos, que han de ser compartidos por diferentes usuarios y aplicaciones, deben mantenerse independientes de éstas, y su definición y descripción, únicas para cada tipo de datos, han de estar almacenadas junto con los mismos. Los procedimientos de actualización y

Page 59: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 59

recuperación, comunes y bien determinados, habrán de ser capaces de conservar la integridad, seguridad y confidencialidad del conjunto de los datos". A.de Miguel, 1993.

• Una base de datos consiste en alguna colección de datos persistentes e independientes usados por una organización determinada." (Date, 1995)

2. ¿Para qué sirve una Base de Datos?

Una base de datos permite la realización de consultas, informes filtrado de información, entre otros.

Formatos personalizados Cálculos estadísticos Búsquedas de datos Clasificación Resumen y Reportes impresos Páginas web

2.1. Características

El objetivo de disminuir la redundancia de un conjunto de datos determina dos características fundamentales que poseerá cualquier sistema de Bases de Datos: a) Integrada

Una base de datos puede considerarse como una unificación de varios archivos de datos independientes, donde se elimina parcial o totalmente cualquier redundancia entre los mismos. Ejm: Una BD específica puede contener registros de ALUMNO, que incluyen el nombre, dirección, teléfono, fecha de nacimiento, etc. y, existir registros de INSCRIPCION que representan inscripciones de alumnos en cursos de capacitación. En el caso de llevar acabo el proceso de administración de los cursos se necesita conocer la dirección de cada estudiante inscrito, para lo cual, no hay necesidad de incluir este dato (redundante) en los registro de INSCRIPCION, siempre se podría obtener recurriendo a los registros de ALUMNO correspondiente.

b) Compartida Las partes individuales de la Base de Datos pueden compartirse entre varios usuarios distintos, en el sentido que cada uno de ellos puede tener acceso a la misma parte de la Base de Datos y utilizarla con propósitos diferentes. Tal comportamiento es en verdad consecuencia del hecho de que la Base de Datos es integrada. En el caso del ejemplo anterior se tiene que los datos de los registros de ALUMNO es compartido por usuarios del departamento de dirección académica y asistente social. Lo cual implica que, diferentes usuarios percibirán de modos muy distintos una base de datos.

2.2. Ventajas de las Bases de Datos Referidas a:

Los datos • Independencia de estos respecto de los tratamientos y

viceversa • Mejor disponibilidad de los mismos • Mayor eficiencia en la recogida, codificación y entrada

Los resultados • Mayor coherencia • Mayor valor informativo • Mejor y más normalizada documentación de la

información Los usuarios • Acceso más rápido y sencillo de los usuarios finales

• Más facilidades para compartir los datos por el conjunto de los usuarios

• Mayor flexibilidad para atender a demandas cambiantes. Análisis cuadro anterior

Page 60: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 60

• Independencia de los datos respecto a los tratamientos y viceversa: esto supone que un cambio en los tratamientos no imponga un nuevo diseño lógico y/o físico de la base de datos. Por otro lado, cambios en la incorporación, desaparición de datos, cambios en la estructura física o caminos de acceso no deben obligar a alterar los programas. Así se evita la reprogramación de las aplicaciones.

• Mejor disponibilidad de los datos para el conjunto de los usuarios: en una base de datos ningún usuario es propietario de los datos, pues éstos se comparten entre las aplicaciones, existiendo una mayor disponibilidad y transparencia.

• Coherencia de los resultados: debido a que la información de la base de datos se recoge y se almacena una sola vez, en todos los tratamientos se utilizan los mismos datos, por lo que los resultados de estos son coherentes y comparables. Así, se evitan las divergencias en los resultados.

• Mayor valor informativo: esto se refiere al concepto de sinergia, en donde el valor informativo del conjunto de datos es superior a la suma del valor informativo de los elementos individuales.

• Mejor y más normalizada documentación: la mayoría de los SGBD proporcionan herramientas para reflejar el contenido semántico de los datos, es decir, incluyen una descripción de los datos dentro del sistema.

• Mayor eficiencia en la captura, validación e ingreso de datos al sistema: al no existir redundancias, los datos se capturan y validan una sola vez aumentando el rendimiento del proceso previo al almacenamiento

• Reducción del espacio de almacenamiento: por un lado, la disminución de redundancias y las técnicas de compactación hacen que disminuya el espacio en disco. Sin embargo, los diccionarios, referencias, punteros, listas invertidas también ocupan espacio.

2.3. Desventajas de las bases de datos

Las desventajas de una base de datos relativas a:

La implantación

• Costosa en equipos (lógico y físico) • Ausencia de estándares • Larga y difícil puesta en marcha • Rentabilidad a mediano plazo

Los usuarios • Personal especializado • Desfase entre teoría y práctica

Análisis del cuadro anterior • Instalación costosa: equipos: nuevas instalaciones o ampliaciones, sistemas operativos,

compiladores, SGBD comerciales, computadores más poderosos, etc. • Personal especializado: es clave la administración de la base de datos, se requiere de

conocimientos específicos. • Desfase entre teoría y práctica: muchos ejecutivos asumen que ciertas funcionalidades

son ya un hecho, cuando en realidad son estudios teóricos • Existe también una resistencia al cambio, sobre todo que este involucra a toda la

organización. En el éxito de esto el papel mediador de los profesionales de informática es fundamental, sobre todo en organizaciones grandes donde una base de datos se puede ver como la centralización del poder en manos de unos pocos, generalmente los encargados de su administración.

2.4. Componentes de la BD

• La base de datos • El Sistema de Gestión de Bases de Datos (SGBD, DBMS) o motor, tal como Oracle,

Sybase, SQL Server, Ms-Acces, etc. • Programas de aplicación (Visual Basic, Visual Fox Pro, Power Builder 9.0, etc.) • Un conjunto de usuarios (finales, DBA, programadores de aplicaciones, etc.)

Page 61: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 61

• Máquinas o PC’s • Programas utilitarios (generadores de informes, de interfaces, herramientas de

desarrollo, de administración, etc.)

2.5. Sistemas de Gestión de Base de Datos (SGBD)

DBMS: Data Base Management System (Sistema De Manejo De Base De Datos). - Un DBMS consiste de una base de datos y un conjunto de aplicaciones

(programas) para tener acceso a ellos. Comunmente, la base de datos contiene información interrelacionada y referente a una misma entidad o empresa.

- Son un tipo de software muy específico, dedicado a servir de interfaz entre las bases de datos y las aplicaciones que la utilizan

El objetivo primordial de una DBMS es crear un ambiente en el que sea posible almacenar y recuperar información en forma eficiente y conveniente.

2.6. Sistemas de Bases de Datos

Lo constituye el SGBD, junto con la base de datos y los usuarios

El objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visión abstracta de los datos, esto se logra escondiendo ciertos detalles de como se almacenan y mantienen los datos

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0” SQL 2000 “La bilia de Sql 200”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net http://www.monografias.com

Page 62: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 62

SEPARATA N°12 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 24-10-2006

BASE DE DATOS Y SENTENCIAS SQL – CURSORES

Para entender mejor entendimiento el concepto de Base de datos empezaremos con las definiciones siguientes:

- Dato: Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o alfanuméricos.

- Información: Es un conjunto ordenado de datos los cuales son manejados según la necesidad del usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a información, primero se debe guardar lógicamente en archivo

Definiciones de BD Todas las definiciones coinciden en que es un conjunto de datos almacenados • Un conjunto de información relacionada que se encuentra agrupada ó estructurada. • Un sistema formado por un conjunto de datos almacenados en discos que permiten el

acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos (punto de vista informático)

• Colección de datos interrelacionados almacenados en conjunto sin redundancias perjudiciales o innecesarias; su finalidad es servir a una o más aplicaciones de la mejor forma posible; los datos se almacenan de modo que resulten independientes de los programas que los usan; se emplean métodos bien determinados para incluir nuevos datos y para modificar o extraer los datos almacenados". Martin, 1975.

• Colección integrada y generalizada de datos, estructurada atendiendo a las relaciones naturales de modo que suministre todos los caminos de acceso necesarios a cada unidad de datos con objeto de poder atender todas las necesidades de los diferentes usuarios". Deen, 1985.

• Colección de datos integrados, con redundancia controlada y con una estructura que refleje las interrelaciones y restricciones existentes en el mundo real; los datos, que han de ser compartidos por diferentes usuarios y aplicaciones, deben mantenerse independientes de éstas, y su definición y descripción, únicas para cada tipo de datos, han de estar almacenadas junto con los mismos. Los procedimientos de actualización y recuperación, comunes y bien determinados, habrán de ser capaces de conservar la integridad, seguridad y confidencialidad del conjunto de los datos". A.de Miguel, 1993.

• Una base de datos consiste en alguna colección de datos persistentes e independientes usados por una organización determinada." (Date, 1995)

¿Para qué sirve una Base de Datos? Una base de datos permite la realización de consultas, informes filtrado de información, entre otros.

Formatos personalizados Cálculos estadísticos Búsquedas de datos Clasificación Resumen y Reportes impresos Páginas web

Características El objetivo de disminuir la redundancia de un conjunto de datos determina dos características fundamentales que poseerá cualquier sistema de Bases de Datos: c) Integrada

Page 63: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 63

RECOLECCIÓN Y ANALISIS DE REQUERIMIENTOS

DISEÑO CONCEPTUAL

DISEÑO LÓGICO (TRANSFORMACIÓN DEL MODELO DE DATOS)

DISEÑO FÍSICO

Mundo real

Una base de datos puede considerarse como una unificación de varios archivos de datos independientes, donde se elimina parcial o totalmente cualquier redundancia entre los mismos. Compartida Las partes individuales de la Base de Datos pueden compartirse entre varios usuarios distintos, en el sentido que cada uno de ellos puede tener acceso a la misma parte de la Base de Datos y utilizarla con propósitos diferentes.

Sistemas de Gestión de Base de Datos (SGBD) DBMS: Data Base Management System (Sistema De Manejo De Base De Datos).

- Un DBMS consiste de una base de datos y un conjunto de aplicaciones (programas) para tener acceso a ellos. Comunmente, la base de datos contiene información interrelacionada y referente a una misma entidad o empresa.

- Son un tipo de software muy específico, dedicado a servir de interfaz entre las bases de datos y las aplicaciones que la utilizan

El objetivo primordial de una DBMS es crear un ambiente en el que sea posible almacenar y recuperar información en forma eficiente y conveniente.

Fases del diseño de la base de datos El diseño de la Base de datos se descompone en diseño conceptual, diseño lógico y diseño físico como lo muestra la siguiente Fig.

a) Recolección y análisis de requerimientos

Los diseñadores entrevistan a los futuros usuarios de la base de datos para recoger y documentar sus necesidades de información.

b) Diseño conceptual Parte de la especificación de todos los requerimientos, el siguiente paso es crear un esquema conceptual para la base de datos mediante un modelo de datos conceptual de alto nivel. El esquema conceptual contiene una descripción detallada de los

Requerimientos de la base de datos

Esquema conceptual en un modelo de datos de alto nivel

(por ejemplo: modelo E/R) Independiente de

S.G.B.D.

Esquema lógico (en el modelo de datos de S.G.B.D.)

Esquema interno (para el mismo S.G.B.D.)

Específico para S.G.B.D.

Fig. Enfoque orientado a los datos para el diseño de la BD

Page 64: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 64

requerimientos de información de los usuarios (información de la base de datos), y contiene descripciones de los tipos de datos, relaciones entre ellos y restricciones. Para el curso utilizaremos diseño de esquemas conceptuales el modelo E-R (entidad-relación), que describe los datos cono entidades, vínculos (relaciones) y atributos.

c) Diseño lógico de la base de datos (transformación de modelo de datos) El siguiente paso en el proceso de diseño consiste en implementar de hecho la base de datos con un S.G.B.D. comercial, transformando el modelo conceptual al modelo de datos empleados por el S.G.B.D. (jerárquico, red o relacional). En el desarrollo del curso haremos la implementación con un S.G.B.D. relacional, por ser el modelo más utilizado por las empresas en la actualidad.

d) Diseño físico de la base de datos

Parte del esquema lógico y da como resultado el esquema físico. El esquema físico especifica las estructuras de almacenamiento internas y los métodos usados para tener un acceso efectivo a los datos. Por esta razón el diseño físico se adapta a un sistema DBMS específico.

Variables de Transacción En la introducción al inicio de este manual, y en la sección anterior ya se ha abordado el

tema de las variables de transacción; al menos de la que Power builder trae como Default (SQLCA). La Structured Query Language Comunication Area –Área de Comunicación del Lenguaje Estructurado de Consultas-, es suficiente si nuestra aplicación solo necesita comunicarse con una sola base de datos. En la tabla siguiente se pressentan las propiedades de los objetos de transacción retornados por la base de datos. ATRIBUTO TIPO DE DATO DESCRIPCIÓN SqlCode Largo El éxito o fallo del código de la operación SQL más

reciente: 0 = éxito 100 = no retorna resultado (más de un registro) - 1 = Error (se usa SQLDBCode para ver detalles)

SqlNRows Largo El número de filas afectadas SQLDBCode Largo El ´codigo de error del vendedor de la base de datos SQLErrText Cadena El menasje de error del vendedor de la base de datos SQLReturnData Cadena El dato de retorno específico de DBMS

Como ya se he dicho si nuestra aplicación solo necesita conectarse a una base de datos con el Transaction que por defauld rae Power Builder es suciente (=SQLCA); pero en los casos en que sea necesario que nuestras aplicaciones interactúen con más de una base de datos. El caso típico aquí es el ejemplo de los agentes de ventas; quienes portan su propia base de datos en su PC y al final del día pasan las transaccioes al servidor de la organización; aquí se debe (al final del día por ejemplo) estar conectado al mismo tiempo a la base de datos centralizada y la personal. Ya aquí estamos en necesidad de definir al menos una varialble de tranascción más aparte del SQLCA. Incluso podemos definir otro transaction diferente si no queremos usar el SQLCA, pero en realidad carece de sentido pues SQLCA trae ya implícito lo necesario para comunicarse con SQL. Ejemplo de conexión desde la aplicación

/ /Profile Colegio SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False

Page 65: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 65

SQLCA.DBParm = "ConnectString='DSN=colegio;UID=;PWD='" connect; if sqlca.sqlcode = -1 then messagebox("Aviso", "No se pudo Abrir Conección") else // messagebox("Importante", "Conección Conforme") open(wpasword) end if sentencias de sql y cursores Cláusula Select

La cláusula select dentro de Power Builder tiene dos formas generales de poder ser usada:

1. Aquella que retorna solo un registro (donde SQLca.SQLCode = 0) 2. Aquella donde se retorna más de un registro (donde SQLca.SQLCode = 100), a este

tipo de select se le considera con el uso de CURSORES Select para un registro para los casos en que se esté seguro de que la consulta al modelo de datos no retornará más de un registro, la sintaxis del script en el PowerScript de PowerBuilder para la consulta será casi igual a un SQL estandar excepto que cada campo que se retorne se debe descargar en una variable del programa declarada previamente (no se permiten descargas a controles de ventana), dentro de la sección INTO. A cada variable de descarga se le debe anteponer dos puntos (”:”). SELECT PARA MÁS DE UN REGISTRO (“CURSORES”) en SQL embebido (= incrustado) se producirá un error si se tratade recuperar más de una fila; aun así habrá ocaciones que se quiera recuperar muchas filas que cumplan ciertos criterios, para este caso se debe usar un cursor. Un cursor es una tabla temporal que SQL establece en todas las filas que cumplen ciertos criterios, así que se puede acceder a esas filas de una en una. Uso de cursores • El mandato declare: antes de usar un cursor, primero hay declararlo con el mandato

DECLARE Ejemplo: declare cursor_name

• La claúsula select: una ves declarado lo que sigue es la claúsula select que se apoye en el select incluida la sentencia que determina cuál transaction se usa. Ejemplo: cursor for select_statement using transaction;

• El mandato open: ahora lo que falta es solo abrir su posterior uso Ejemplo: open cursor_name;

• El mandato Fetch: después de abierto el cursor hay que traer (= fetch) cada fila. Fetch es quien permite procesar cada fila, para ahora sí por cada fila descargar los campos que haya recuperado la instrucción select. Al igual que el select para un solo registro se debe descargar cada campo en una variable de progama anteponiéndole a este dos puntos (“:”). Ejemplo: fetch cursor name Into host_variable_list;

• El mandato clase: el último paso de uso de un cursor es cerrarlo. El cierre de un cursor libera la memoria usada por las tablas temporales y permite reabrir el cursor bajo nuevos criterios de selección

Page 66: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 66

EJEMPLOS CON SENTENCIA: En la aplicación; En el Windows w_acceso El código fuente para Aceptar con instrucciones SQL // Variables a usar String l_Usuario, l_Clave, ls_PassBD // ingresados por el usuario y es asigando l_Usuario = UPPER(em_Usuario.Text) l_Clave = UPPER(sle_Clave.Text) // Buscar la Clave almacenada en la tabla y la // guardamos en la variable local ls_PassBD SELECT password INTO :ls_PassBD FROM Empleado WHERE Usuario = :l_Usuario; // Verificamos si fueron bien ingresados // el Empleado y la clave del mismo. IF SQLCA.SQLCode = 0 THEN // Usuario Encontrado, verificar si el password // ingresada le corresponde IF ls_Clave = UPPER(ls_PassBD) THEN Open(w_Principal) // Window Principal del Tipo MDI Close(Parent)// Cierra la ventana w_Aceeso ELSE MessageBox("Atención", "Clave Incorrecta") sle_Clave.SetFocus() END IF ELSE MessageBox("Atención", "Usuario No Autorizado")

Page 67: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 67

em_Usuario.SetFocus() END IF UTILIZANDO CURSORES Ejemplo:

Para ello debemos de ejecutar primero un curso ESTRUCTURA DE UN CURSOR declare login cursor for select distinct usuario from empleado; open login; fetch login into :user; EJEMPLO PARA LLENAR LOS DATOS DE LA TABLA EN EL DDLB string user declare login cursor for select distinct usuario from empleado; open login; fetch login into :user; Do while sqlca.sqlcode <>100 ddlb_usuario.additem(user) fetch login into :user; loop close login; Cb_ aceptar String usuarioingresado, contraseñaingresada,contraseñaBD,tipousuario usuarioingresado = UPPER(ddlb_usuario.text) contraseñaingresada= UPPER(sle_contra.Text) SELECT password INTO :contraseñaBD FROM Empleado WHERE usuario =:usuarioingresado; IF contraseñaingresada= UPPER(contraseñaBD) THEN

SELECT usuario INTO :tipusuario FROM Empleado WHERE usuario =:usuarioingresado; If UPPER(tipusuario) =”ADMINISTRADOR”()

open(w_principal) close(parent)

Else open(w_principal) close(parent) mnu_principal.m_mantenimiento.visible=false

mnu_principal.m_proceso.visible=false

Page 68: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 68

mnu_principal.m_consulta.visible=false mnu_principal.m_reporte.m_listado.enabled=false mnu_principal.m_reporte.m_informes.m_productosmasvendidos.enabled=false mnu_principal.m_reporte.m_informes.m_productosmenosvendidos.enabled=false end if SENTENCIAS PARA GRABAR ELIMINAR

Cb_Grabar Evento Clicked date ven ven= date(Em_1.Text) Insert Into articulos Values (:Sle_1.Text,:Sle_2.Text,:Ddlb_1.Text,:Sle_3.Text,:Sle_4.Text,:ven); /*if sqlca.sqlcode=0 then MessageBox ("se grabara","el dato") end if */ if SQLCA.SQLCODE = -1 Then MessageBox ("Imposible Grabar","Hay un error en los Datos") Else //Recupera los registros del Dw_1 para ver el nuevo Artículo. Dw_1.Retrieve() //Limpia los controles para ingresar otro Artículo Sle_1.Text="" Sle_2.Text="" Ddlb_1.Text="" Sle_3.Text="" Sle_4.Text="" Em_1.Text="" Sle_1.SetFocus() //dw_1.update() End If Eliminar Integer R R=MessageBox ("Confirme","Desea eliminar este artículo",Question!,Yesno!) If R=1 Then Delete From Articulos Where Codigo=:Sle_1.Text; Commit; Dw_1.Retrieve()

Page 69: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 69

End If

Controles de ventana y sus prefijos

Control Prefijo Command Button Cb_ Picture Button Pb_ Check box Cbx_ Radio Button Rb_ Static Text St_ Picture P_ Group Box Gb_ Line Ln_ Oval Oval_ Rectangle R_ Round Rectangle Rr_ Single Line Edit Sle_ Edit Mask Em_ Multi Line Edit Mle Rich Text Edit Rte_ Hscroll bar Hsb_ Vscroll bar Vsb_ DropDown List Box Ddlb_ DropDown Picture List Box Ddplb_ List Box Lb_ List View Lv_ Tree View Tv_ Tab Tab_ Data Window Dw_ Graph Gr_ OLE Ole_ User Object Uo_ Window W_

Page 70: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 70

SEPARATA N°13

Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 31-10-2006

DISEÑO DE BASE DE DATOS EN POWER BUILDER CREACIÓN DE BASE DE DATOS Existe dos formas para crear una base de datos 1 forma :

dar un clic en 2 forma es ingresar desde File , new, database Clic en OK, para ingresar a: A continuación debe hacer clic en OBD ODBC. Clic en Utilities Para visualizar el siguiente Grafico:

Page 71: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 71

Realice clic en Create ASA Database, se mostrara la siguiente ventana: Realice Click en el siguiente Icono Para mostrar la ventana: Busca la unidad o la carpeta donde desea guardar la base de datos, Ingrese el nombre de la base de datos en Nombre de archivo

Page 72: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 72

Realice clic en el botón Guardar Se mostrara la siguiente ventana Realice clic en OK A continuación se mostrara en el Database Painter Base de datos Factura

MENU Y CONEXIÓN CON BASE DE DATOS

Un menú es un objeto visual de Power Builder, un menú permite al usuario seleccionar opciones o acciones de una lista . una barra de menús es una alternativa para usar estas opciones como si fuesen botones. Los partes de un Menú son los Siguientes: Ver gráfico

Page 73: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 73

Para el uso de un Windows y un menú se debe de crear primero una base de datos Ejemplo: Para el ejemplo correspondiente se debe tener en cuenta en crea un tabla desde el Data Painters Ejemplo Se crea un tabla “tabUsuarios” con los siguientes campos A continuación debe ingresar los datos en dicha tabla de acuerdo a los usuarios. Se debe de crear una aplicación, Windows, y un menú.

TREE MENU VIEW

CODIGO

WYSIWYG MENU VIEW

SYSTEM TREE

P R O P I E D A D E S

Page 74: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 74

Además se debe conectar la base de datos que se utilizara El código fuente debe ser lo siguiente En la aplicación; En el Windows w_acceso El código fuente para Aceptar con instrucciones SQL // Variables a usar String ls_Usuario, ls_Clave, ls_Clave_BD // Capturar a variables los datos // ingresados por el usuario ls_Usuario = UPPER(em_Usuario.Text) ls_Clave = UPPER(sle_Clave.Text) // Buscar la Clave almacenada en la tabla y la // guardamos en la variable local ls_Clave_BD SELECT Usr_Clave INTO :ls_Clave_BD FROM TabUsuarios WHERE Usr_Login = :ls_Usuario;

Page 75: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 75

// Verificamos si fueron bien ingresados // el usuario y la clave del mismo. IF SQLCA.SQLCode = 0 THEN // Usuario Encontrado, verificar si la clave // ingresada le corresponde IF ls_Clave = UPPER(ls_Clave_BD) THEN // Inicia la aplicación Open(w_Principal) // Window Type: MDI Help Close(Parent) // Cierra la ventana w_Aceeso ELSE // Mensaje: Clave Incorrecta MessageBox("Atención", "Clave Incorrecta") // Dar el foco de edición al control donde // se ingresa la clave para su corrección sle_Clave.SetFocus() END IF ELSE // Mensaje: Si el usuario no fue encontrado MessageBox("Atención", "Usuario No Autorizado") // Dar el foco de edición al control donde // se ingresa el usuario para su corrección em_Usuario.SetFocus() END IF Si se ingreso la contraseña correcta Se mostrara el menú correspondiente

CONEXIÓN DE BASE DE DATOS POWER BUILDER – MICROSOFT ACCES, SQL

Para la conexión de una base de datos se debe de realizar los siguientes pasos. Clic en el icono Para la conexión realice un clic en Utilities Después en ODBC Administrator

Page 76: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 76

Visualizara la siguientes ventana Clic en Add Seleccione Microsoft Acces Driver (*. mdb) – Click en Finalizar Visualizara la siguiente ventana. Escriba en nombre del Data Sourcr Name

Page 77: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 77

Tienda Descripción En el botón Select Seleccione la base de datos para conectar Se visualizara la siguiente ventana. Ahora para realizar la visualización de la base de dato Haga clic DERECHO EN ODB ODBC en POWER BUILDER, se visualizara la ventana m Se visualizara la ventana:

Page 78: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 78

Donde se pone en Prolife Name El nombre de la base de datos En Data Sourse Se busca –Tienda click en boton ok y se visualiza

CONEXIÓN ODBC SQL Si tiene una base de batos en Slq también lo puedes administrar desde Power Builder Para ello se debe tener las siguientes consideraciones o pasos: En DSN(ODBC) de Sistema (Para que todos los usuarios lo puedan ver) Luego dar clic en Agregar(add)

Page 79: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 79

NOTA: Para crear el ODBC de SQL debes de tener funcionando tu servidor de SQL Para visualizar el siguiente ventana Dar un doble clic en SQL Server Luego das clic en el botón Finalizar

Se visualiza la siguiente ventana:

Page 80: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 80

Aparecerá la ventana que se muestra en la siguiente página. En Nombre le das el nombre a tu origen de datos. El nombre que deseas para la conexión Ejemplo: Biblioteca En Descripción si quieres agregarla alguna descripción. Ejemplo: Este ODBC conecta la base de datos de SQL llamada Biblioteca En donde dice Servidor seleccionas el servidor de SQL al cual deseas conectarte. Automáticamente aparecerán los servidores disponibles. En caso de tener el servidor de SQL en otra computadora, las computadoras deberán estar conectadas en red y el servidor de SQL de la máquina Servidor deberá estar funcionando. Ejemplo: El nombre de mi servidor de SQL es PC0, pero de caso contrario si la base de datos esta en la computadora selecciona local Luego das clic en siguiente. Y se mostrara la siguiente ventana

Para el ejemplo podemos seleccionar . Con autentificación de Window NT Este formato se mostrara deshabilitado si seleccionamos Con autentificación de Window NT

Para el ejemplo hemos seleccionado la opción con la: Autentificación de SQL Server y el Id de Inicio de sesión : sa y la contraseña que lo hemos asignado y con lo que hemos conectado a SQL. Para luego visual la siguiente ventana: Después se mostrara la siguiente ventana:

activar con un check y buscar Biblioteca

Page 81: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 81

Luego de dar clic en el siguiente se mostrara: La ventana siguiente:

Podemos establecer en idioma para los mensajes, ejemplo spanish

Después hacer clic en siguiente se mostrara la ventan siguiente con las características de la conexión creada y haga clic en el botón aceptar

Para comprobar la conexión correcta haga Probar origen de datos

Page 82: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 82

Después de crear la conexión ODBC Se creara un nuevo new profile Y realizar los pasos que se tiene en Power Builder para conectar una base de datos. Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0” SQL 2000 “La bilia de Sql 200”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net http://www.monografias.com Tutorial de oracle 9i http://www.solotutoriales.com/visitar.asp?id=5414 ”

Page 83: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 83

SEPARATA N°14 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 07-11-2006

CONEXIÓN POWER BUILDER CON SQL

y CONEXIÓN DE UN DATAWINDOWS A UN BASE DE DATOS

CONEXIÓN POWER BUILDER CON SQL Existe otra forma de conectar también en Power Builder, para ello se debe de seguir los siguientes pasos: 1.-

2.-

Click

Nombre del profile

Nombre del servidorUsuario de servidor de bd

PasswordNombre de Bd

Page 84: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 84

3.- Click en la opción preview

4.- abrir la aplicación Y pegar ctrl. + v

Click

Password del usuario de la bd

Page 85: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 85

CONEXIÓN DE UN DATAWINDOWS A UN BASE DE DATOS Datawindows El DW es considerado el objeto mas importante de PowerBuilder, ya que es el que facilita en gran medida el trabajo involucrado en conectividad y actualización de bases de datos usando poco código. FUNCIONES PRINCIPALES DE DATAWINDOWS SetTransObject Hace que un control DataWindow use un objeto de transacción especificado por el programador. El objeto de transacción proporciona la información nesecesaria para comunicarse con la Base de Datos. Retorna -1 si ha ocurrido un error. Sintaxis Dwn. Settransobject(Transacción)

Argument Description

Dwn El nombre del Control data window, con el cual se desea usar un objeto de transacción.

Transacción Nombre del Objeto de transacción, por defecto es SQLCA. Generalmente se establece el objeto de transacción en el evento Open de la ventana que contiene el control DataWindow. En resumen el SettransObject(SQLCA) asocia el objeto transación con el control DataWindow. Ejemplo: DwnSoftware.settransobject(SQLCA) InsertRow Sintaxis Dwn.InsertRow(fila) Argument Descripción Dwn El nombre del control DataWindow en el cual se desea insertar una fila.

Fila Un entero Largo (long) que identifica la fila antes de la cual desea insertar una fila nueva. Si el valor es cero insertará al final de la tabla.

Ejemplo: DwnSoftware.InsertRow(0) Retrieve() Recupera todas las filas de una tabla de la BDD en un control DataWindow, Si incluyen argumentos, estos son usados por los argumentos de recuperacion de la sentencia SQL SELECT del objeto DataWindow. Retorna el número de filas recuperadas, -1 si ocurre un error. Sintaxis Dwn.Retrieve({Arg1, Arg2,…}) Argument Descripción Arg1, Arg2 Argumentos de recuperacion, de la tabla de BDD Ejemplo: DwnSoftware.Retrieve(“C001”) SetRowFocusIndicator Especifica el indicador visual que identifica la fila actual en un control DataWindow. Sintaxis Dwn.SetRowFocusIndicator (Indicador) Indicador El indicador visual para la fila actual, los valores validos son

Off! Sin indicador. FocusRect! Un rectángulo de puntos alrededor de la fila.

Ventana Control DW

(se guarda con la ventana) Objeto DW

(se guarda por separado)

RDBMS

Page 86: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 86

Hand! Un dedo índice. El nombre de un Picture Control.

SelectRow Selecciona la fila especificada en el control de un DataWindows. Sintaxis Dwn.SelectRow (Fila, Boolean) Ejemplo: DwnSoftware.SelectRow(0,False) // desactiva la fila anterior DwnSoftware.SelectRow(15,true) // resalta toda la fila 15 SetItem Establece el valor en una fila y columna especificada, un valor dentro del datawindow, retorna -1 si ocurre un error. Sintaxis DwnSoftware.Setitem (Fila, columna/campo, valor) Ejemplo: Dwn.SetItem(5, "sueldo",670) En la fila 5, en el campo sueldo se asigna 670. También en vez del nombre de campo, puede ser el número de campo de acuerdo como ha sido seleccionado en el objeto DataWindow. GetItemString Obtiene datos de tipo cadena de un buffer especificado de un control DataWindow. SintaxisDwn.GetitemString (Fila, Columna) Ejemplo String cad Cad=DwnSoftware.GetItemString(3, "sfw_Nombre") Extrae el dato que se encuentra en el campo sfw_nombre, en la fila 3, dependiendo del tipo de dato que se va extraer tenemos:

Dwn.GetitemNumber (Fila, columna) Cuando el campo es de manera general numérico, puede ser real o entero.

Dwn.GetitemDecimal (Fila, columna) Cuando el dato a extraer es exclusivamente decimal o real.

Dwn.GetitemDate (Fila, columna) Si el campo es de tipo fecha. Dwn.GetitemTime (Fila, columna) Si el campo es de tipo hora. Dwn.GetitemDateTime (Fila, columna) Cuando el campo es de tipo fecha y hora.

Ejemlo: Capturar en variables, sueldo del empleado, su edad y fecha de nacimiento del empleado, cuya posición se encuentre en la fila número 3. Int edad Dec Sbas Date Fenac Edad= DwnEmpleado.GetItemNumber(3,"emp_Edad") Sbas= DwnEmpleado.GetItemDecimal(3, "emp_Sbas") Fenac=DwnEmpleado.GetItemDate(3,"emp_Fenac") Nombre del campos en la tabla Gettext Obtiene el valor de un control de edición en la fila y columna actuales, antes que este sea aceptado.

Sintaxis dwn.Gettext () Por ejemplo si este radio button se encuentra dentro del DataWindow, y al seleccionar una de estas opciones se desea saber su valor seleccionado basta emplear: String Tmoneda Tmoneda = DwnSalario.Gettext()

Page 87: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 87

Setsort Especifica, el criterio de ordenamiento para un DataWindow, retorna 1 si tuvo éxito y -1 si se encontro un error. SintaxisDwn.SetSort (campo1 [A|D]) Ejemplo: DwnEmpleado.setsort() Dwn.Sort() Ejecuta la clasificación con un previo criterio de selección SintaxisDwn.Sort () Ejemplo: DwnEmpleado.SetSort("emp_ape A, #2 D") // ordena apellido y sueldo asumiendo // que el #2 sea el campo sueldo. DwnEmpleado.Sort() // Procede al ordenamiento. GetRow Retorna el número de la fila actual de un DataWindow, como un valor Long, Retorna 0 si no hay fila activa y -1 si se ha producido un error grave. SintaxisDwn.GetRow () SetRow Establece la fila deseada, mueve el cursor a la fila especificada, pero no hace Scroll en el DataWindow. SintaxisDwn.SetRow (Fila) ScrollToRow Hace un Scroll en un DataWindow, hasta alcanzar la fila especificada. ScrollToRow cambia la fila actual pero no la columna actual. Retorna 1 si hubo éxito, -1 en caso contrario. Scrolltorow no ilumina la fila a la cual se hace scroll. Sintaxis Dwn.ScrolltoRow(fila) Si la fila toma un valor mayor que el número total de la fila, se hace scroll a la última fila. RowCount Obtiene el número de filas que se encuentran disponibles en un DataWindow Sintaxis Dwn.RowCount() ScrollToPriorRow Se desliza a la fila previa, sin cambiar la columna activa Sintaxis Dwn.ScrollPriorRow(fila) ScrollNextRow Se desliza a la siguiente fila. Sintaxis Dn.ScrollNextRow(fila) DeleteRow Suprime la fila especificada del control DataWindow, se actualiza directamente la tabla enlazada al control. Sintaxis Dwn.DeleteRow(fila) Si la fila es igual a cero, elimina la fila activa donde se encuentra el puntero, cada vez que se emplee esta sentencia, se tiene que actualizar el DataWindow ejemplo: Dwn.deleteRow(8) // elimina la fila número 8 Dwn.Update() // actualiza la base de datos enlazada DeletedCount Retorna el número de filas que hayan sido suprimidas desde el control DataWindow pero que todavia no hayan sido actualizadas en la tabla de la BDD asociada. SintaxisDwn.DeletedCount() Ejemplo: Long Nf Nf=Dwn.DeletedCount() Update

Page 88: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 88

Se envia a la base de datos todas las inserciones, eliminaciones y actualizaciones del control DataWindow, retorna 1 si tuvo éxito, -1 si ocurrio un error. Sintaxis Dwn.Update()

CREACIÓN DE DATAWINDOWS Para una conexión de base de datos primero se debe de conectar la base de datos y Crear un dataWindows Para ello los pasos son iguales que un Windows, pero se debe de buscar la opción Datawindows tal como se muestra en la figura. Y luego el tipo de data Windows; para nuestro ejemplo seleccione la opción Freeform. UNA VEZ CREADO EL DATAWINDOWS Se creara un un windows con el control datawindow(dw_1) Como se muestra en la figura: Para luego realizar la conexión de Windows con el data Windows: de la siguiente manera Una vez dado las propiedades

Page 89: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 89

Ahora se tendrá que escribir el código Fuente en la aplicación y en el windows: APLICACIÓN UTILIZANDO BD “BDCOMUNIDAD” Data_ Aplica open // Profile Comunidad SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=Comunidad;UID=;PWD='" connect; if Sqlca.Sqlcode<>0 then //MessageBox("Error de conexión"+ "error")//String(Sqlca.SQLCode),Sqlca.ErrText) return else messageBox("Clientes", "conexción conforme") open(w_prueba) end if a continuación en el Windows W_prueba open dw_contrato.SettransObject(sqlca) dw_contrato.Retrieve() cb_salir Clicked close(w_prueba) Ejecuta de la siguiente: Y a continuación: Se mostrara la siguiente aplicación: EJEMLO DE UN WINDOWS DE DESPLAZAMIENTO: Para desarrollar consultas y actualizaciones ese debe tener:

• Una base de datos

Page 90: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 90

• Tablas • Datawindows

Se utiliza las siguientes funcione para el desarrollo de la aplicación: ScrollNextRow Esta función permite avanzar el siguiente registro en un datawindows ScrollPriorRow Esta función permite ir al registro anterior en un datawindows RowCount Función que permite obtener la cantidad de registros que contiene un datawindows ScrollToRow() Esta función permite ir a cualquier registro de un Datawindows GetRow Devuelve el número de registro actual, es decir el numero de registro que se esta visualizando. Ejemplo: El siguiente Windows visualiza los registros.

Código fuente de la aplicación Cb_inicio evento clicked dw_1.ScrollToRow(1) cb_inicio.enabled=false cb_anterior.enabled=false cb_siguiente.enabled=true cb_ultimo.enabled=true Cb_anterior evento clicked int nrow nrow=dw_1.getRow() if nrow>1 then cb_inicio.enabled=true cb_anterior.enabled=true cb_siguiente.enabled=true cb_ultimo.enabled=true dw_1.ScrollPriorRow() else cb_inicio.enabled=false cb_anterior.enabled=false end if Cb_siguiente evento clicked int nrow, nrorow nrorow=dw_1.RowCount() nrow=dw_1.GetRow()

Page 91: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 91

if nrow<nrorow then cb_inicio.enabled=true cb_anterior.enabled=true cb_siguiente.enabled=true cb_ultimo.enabled=true dw_1.ScrollNextRow() else cb_ultimo.enabled=false cb_siguiente.enabled=false end if Cb_ultimo evento clicked int nrorow nrorow=dw_1.RowCount() dw_1.ScrollToRow(nrorow) cb_inicio.enabled=true cb_anterior.enabled=true cb_siguiente.enabled=false cb_ultimo.enabled=false

ACTUALIZACIÓN DE BASE DE DATOS Para actualizar base de datos se debe eliminar, guardar, editar, insertar registros El programa nos permite actualizar la tabla Funciones que se utiliza en el desarrollo del ejemoplo: InsertRow() Esta función nos permite insertar un registro en blanco en un Datawindows devolviendo el numero de registros insertado. Generalmente se utiliza el como argumento el numero (0) para insertar un registro al final y la función ScrollToRow para ubicarse ene le registro insertado. nFila=dw_1.InsertRow(0) dw_1.ScrollToRow(nFila) Update() Esta función nos permite grabar un Nuevo registro o las modificaciones realizadas en una de ellas. dw_1.Update() Retrieve () Esta función nos permite ignorar las modificaciones o para grabar un nuevo registro, realizadas en alguna de ellas. dw_1.Retrieve() DeleteRow() Esta función nos permite eliminar un registro de un Datawindows. dw_1.DeleteRow(0) Después de eliminar un registro debe actualizar el datawindows utilizando la función update dw_1.Update() Commit; Permite la actualización de la base de datos y no permite deshacer los cambios realizados Rollback; Cancela todas la operaciones realizadas sobre la base de datos. Ejemplo:

Page 92: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 92

Cb_insertar evento: Clicked Integer nfila dw_1.Enabled=true cb_insertar.Enabled=false cb_editar.Enabled=false cb_eliminar.Enabled=false cb_grabar.Enabled=true nFila=dw_1.InsertRow(0) dw_1.ScrollToRow(nFila) dw_1.SetFocus() Cb_editar evento: Clicked dw_1.Enabled=True dw_1.SetFocus() cb_insertar.Enabled=False cb_editar.Enabled=False cb_eliminar.Enabled=False cb_grabar.Enabled=True Cb_grabar evento: Clicked Integer nRet cb_grabar.Enabled=False cb_insertar.enabled=True cb_editar.enabled=True nRet=dw_1.Update() If nRet > 0 Then Commit; If sqlca.SQLCode < 0 Then MessageBox("Error en la base de datos ","Error # "+ String(sqlca.SQLDBCode) + ":"+ sqlca.SQLErrText) Halt Close End If Else Rollback; If sqlca.SQLCode < 0 Then MessageBox("Error en la base de datos ","Error # "+ String(sqlca.SQLDBCode) + ":"+ sqlca.SQLErrText) Halt Close End If End If Dw_1 evento: Clicked Cb_eliminar.enabled= true Cb_eliminar evento: Clicked cb_eliminar.Enabled=False dw_1.DeleteRow(0) dw_1.Update() Cb_cancelar evento: Clicked dw_1.Retrieve() cb_insertar.Enabled=True cb_editar.Enabled=True cb_grabar.Enabled=False cb_cancelar.Enabled=True cb_salir.Enabled=True cb_eliminar.Enabled =False Cb_salir evento: Clicked Disconnect; Close(w_dataactua2)

Page 93: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 93

SEPARATA Nº 15 EAP : Ingeniería Informática ASIGNATURA : Lenguaje de Programación Comercial Sección : Octavo Turno: Noche Ciclo :Octavo Docente: Ing. ELVIS GUILLERMO, HUARCAYA QUISPE Fecha: 14-11-2006

DATAWINDOWS (Actualización y Eliminación de Registros) Utilizando db “BDCOMUNIDAD” Para realizar estas operaciones utiliza la s funciones: Find Esta función permite buscar un registro en un Datawindows Nonbre del control datawindows. FIND (“condición”, inicio, final) Dw_1.find(“C”,1.dw_1.RowCount); Ejemplo: Realizar una aplicación para buscar a los propietarios por nombre y modificar su Dirección: Cb_1 grabar Cb_2 ignorar Cb_3 actualizar Cb_4 eliminar CÓDIGO EN LA APLICACIÓN // Profile Comunidad SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=Comunidad;UID=;PWD='" connect; if sqlca.sqlcode=0 then open(w_dataeliminado) end if CÓDIGO EN EL DATAWINDOWS Dw_1.SettransObject(SQLCA) Dw_1.Retrieve() Dw_2.SettransObject(SQLCA) Dw_2.Retrieve() Dw_1.Enabled = False Dw_2.Enabled = False Cb_1.Enabled = False Cb_2.Enabled = False CÓDIGO EN SLE EVENTO MODIFIED

Page 94: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 94

Integer Reg String Busca Busca="Upper(Left(Nombre," + string(len(sle_1.text))+")) = '" + Upper(sle_1.text)+"'" Reg=dw_1.find(busca,1,dw_1.rowcount()) if Reg=0 then messagebox("Verifique","El Propietario no existe") else Dw_1.scrolltorow(Reg) Dw_2.scrolltorow(Reg) end if CODIGO EN CB_1 EVENTO CLICKED //Actualiza las modificaciones realizadas en el Dw_1 Dw_1.Update() //Actualiza el Dw_2 Dw_2.Retrieve() //Activa el Sle_1 y el Dw_2 para que poder buscar otro Registro. Sle_1.Enabled = True Dw_2.Enabled = True //Desactiva el Dw_1 y los botones Grabar e Ignorar para evitar modificar los datos. Dw_1.Enabled = False Cb_1.Enabled = False Cb_2.Enabled = False //Activa los botones Actualizar y Eliminar. Cb_3.Enabled = True Cb_4.Enabled = True CODIGO EN CB_2 EVENTO CLICKED Dw_1.Retrieve() Sle_1.Enabled = True Dw_1.Enabled = False Dw_2.Enabled = True Cb_1.Enabled = False Cb_2.Enabled = False Cb_3.Enabled = True Cb_4.Enabled = True CODIGO EN CB_3 EVENTO CLICKED //Desactiva el Sle_1 y el Dw_2 para que no se permita buscar //otro registro mientras se esta actualizando uno. Sle_1.Enabled = False Dw_2.Enabled = False //Activa el Dw_1 y los botones Grabar e Ignorar para poder modificar los datos. Dw_1.Enabled = True Dw_1.modify("Codigo.DisplayOnly=True") Cb_1.Enabled = True Cb_2.Enabled = True //Desactiva los botones Actualizar y Eliminar hasta que se termine de //actualizar el registro actual. Cb_3.Enabled = False Cb_4.Enabled = False //Ubica el cursor en el Dw_1 para empezar la actualización. Dw_1.SetFocus() CODIGO EN CB_4 EVENTO CLICKED Integer N N=MessageBox ("Confirme","¿ Desea eliminar este Propietario ?",Question!,Yesno!) If N = 1 Then //Elimina el registro y actualiza el Dw_1 Dw_1.DeleteRow(Dw_1.GetRow())

Page 95: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 95

Dw_1.Update() //Actualiza el Dw_2 para que ya no se visualice el registro eliminado Dw_2.Retrieve() End If

DATAWINDOWS (Ejemplos) Funciones para listado: SetFilter Esta función junto con la función Filter permite filtrar; es decir selecciona solo los registros que deseamos mostarar. Nombredel Datawindows.SetFilter(“Condición”) Filter Permite que Power Builder ejecute o realice el filtrado o selección de los registros que cumpla la condición especificada en SetFilter. Nombredel datawindows.Filter() Ejemplo: Permite mostrar a los propietarios registrados como sexo masculino. Dw_1.SetFilter(“Sexo=’M’”). Dw_1.SetFilter() Función SetSort Esta función , junta a la función Sort permite ordenas los registros en un datawindows Nombre del controlDatawindows. SetSort(“nombre del campo”) Si queremos mostrar en forma descendente solamente se incrementa la letra d Nombre del controlDatawindows. SetSort(“nombre del campo D”) Función Sort Esta función nos permite ejecutar en Power Builder la ordenación indicada con SetSort. Nombredelcontroldatawindows.Sort() Ejemplo Dw_1.SetSort(“IDCliente”) Dw_1.Sort() FUNCIÓN PARA IMPRESIÓN Print() Para imprimir el contenido de un datawindows se utiliza la función Print Dw_1.Print() Para Activar la caja de selección de impresión y modificar los parámetros de impresión se utiliza la siguiente función. PrinSetup() FUNCIÓN PARA MODIFICAR Función para modificar un datawindows Dw_1.modify("Codigo.DisplayOnly=True") Dw_1.modify("Codigo.ReadOnly=True") Ejemplo Mostrar a los inmuebles registrados.

Page 96: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 96

Código fuente Aplicación // Profile Comunidad SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=Comunidad;UID=;PWD='" connect; if sqlca.sqlcode=0 then open(w_listadopropie) end if Código en Windows Integer Cant Dw_1.SettransObject(SQLCA) Dw_1.Retrieve() Cant=Dw_1.RowCount() St_2.text="Son " + String(Cant) + " Imnuebles" Código Cb-1 Clickcled(Código) Integer cant Dw_1.SetFilter("codigo=1") Dw_1.Filter() Cant=Dw_1.RowCount() St_2.text="Son " + String(Cant) + " inmuebles" Cb_2 Clickcled(Escalera) Integer Cant Dw_1.SetFilter("Escalera='5'") Dw_1.Filter() Cant=Dw_1.RowCount() St_2.text="Son " + String(Cant) + " Inmuebles" Cb_3 Clickcled(2 puertas) Integer Cant Dw_1.SetFilter("Puerta='2'") Dw_1.Filter() Cant=Dw_1.RowCount() St_2.text="Son " + String(Cant) + " Inmuebles" Cb_4 Clickcled(Modulo>) Integer Cant Dw_1.SetFilter("Modulo>20000") Dw_1.Filter() Cant=Dw_1.RowCount() St_2.text="Son " + String(Cant) + " Inmuebles" Cb_5 Clickcled(Todo) Integer Cant Dw_1.SetFilter("") Dw_1.Filter() Cant=Dw_1.RowCount() St_2.text="Son " + String(Cant) + " Inmuebles" Ordenar Primero se debe de activa la casilla de verificación Cb_6 Clickcled(Codigo) If Cbx_1.Checked=True Then Dw_1.SetSort("Codigo a")

Page 97: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 97

Else Dw_1.SetSort("codigo") End If Dw_1.Sort() Cb_7 Clickcled(Piso) If Cbx_1.Checked=True Then Dw_1.SetSort("Codigo a") Else Dw_1.SetSort("codigo") End If Dw_1.Sort() Cb_8 Clickcled(Piso y Antigüedad) If Cbx_1.Checked=True Then Dw_1.SetSort("Piso D, antiguedad D") Else Dw_1.SetSort("Piso, antiguedad") End If Dw_1.Sort() Imprimir Cb_9 Clickcled(Inprimir) printsetup() dw_1.print() Aplicación busqueda por fechas

RESUMEN DE CONTROLES: Funciones del Control DataWindow Funciones de Desplazamiento 1. ScrollNextRow() 2. ScrollPriorRow() 3. ScrollToRow ( long row ) 4. ScrollNextPage() 5. ScrollPriorPage() Funciones de Mantenimiento 6. SetTransObject ( transaction transaction ) 7. Retrieve ( {, any argument, any argument . . . } ) 8. InsertRow ( long row ) 9. DeleteRow ( long row ) 10. Update ( { boolean accept {, boolean resetflag } } ) 11. DeletedCount() 12. ModifiedCount () Otras Funciones 13. SetFocus() 14. GetRow() 15. GetColumn() 16. GetColumnName() 17. GetItemDate ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) 18. GetItemDate ( long row, string column {, DWBuffer dwbuffer, boolean originalvalue } ) 19. GetItemDateTime ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) 20. GetItemDateTime ( long row, string column {, DWBuffer dwbuffer, boolean originalvalue } ) 21. GetItemDecimal ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) 22. GetItemDecimal ( long row, string column {, DWBuffer dwbuffer, boolean originalvalue } )

Page 98: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 98

23. GetItemNumber ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) 24. GetItemNumber ( long row, string column {, DWBuffer dwbuffer, boolean originalvalue } ) 25. GetItemStatus ( long row, integer column, DWBuffer dwbuffer ) 26. GetItemStatus ( long row, string column, DWBuffer dwbuffer ) 27. GetItemString ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) 28. GetItemString ( long row, string column {, DWBuffer dwbuffer, boolean originalvalue } ) 29. GetItemTime ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) 30. GetItemTime ( long row, string column {, DWBuffer dwbuffer, boolean originalvalue } ) 31. SelectRow ( long row, boolean select ) 32. SetColumn( NúmeroColumna | NombreColumna ) 33. SetRow ( long row ) 34. SetRowFocusIndicator ( RowFocusInd focusindicator {, integer xlocation {, integer ylocation } } ) 35. Reset() 36. RowCount()

CONTROLES DE DEZPLAZAMIENTO CON SQL Utilizando la db “colegio” Desplazamiento de la tabla alumno

Declare variable global integer cont = 0 //Variables globales para la ventana docente y buscar docente string usuario, unico, codbuscado = '1' //Variables globales para la ventana alumno y buscar alumno string codalumno = '1' integer buscalumno = 0 Instance variables; string vidalumno, vnombre, vapepat, vapemat, vdireccion, vfecnac, vtelefono string vnompadre, vapepatpadre, vapematpadre, vnommadre, vapepatmadre string vapematmadre, vnomapoderado, vapepatapoderado, vapematapoderado string valor, cmd integer acnuevo = 0, acmodificar = 0

Page 99: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 99

Window_inicial Evento Open // Profile colegio SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=colegio;UID=;PWD='" connect; SELECT alumno.idalumno, alumno.nombre, alumno.apepaterno, alumno.apematerno, alumno.direccion, alumno.fecnac, alumno.telefono, alumno.nompadre, alumno.apepatpadre, alumno.apematpadre, alumno.nommadre, alumno.apepatmadre, alumno.apematmadre, alumno.nomapoderado, alumno.apepatapoderado, alumno.apematapoderado INTO : vidalumno, : vnombre, : vapepat, : vapemat,

: vdireccion, : vfecnac, : vtelefono, : vnompadre, : vapepatpadre, : vapematpadre, : vnommadre, : vapepatmadre, : vapematmadre, : vnomapoderado, : vapepatapoderado, : vapematapoderado FROM alumno where alumno.idalumno = : codalumno; lb_1.reset() lb_1.additem("Codigo de Alumno ~t~t : " + vidalumno) lb_1.additem("Nombres y Apellidos ~t : " + vnombre + vapepat + vapemat) lb_1.additem("Direccion ~t~t : " + vdireccion) lb_1.additem("Fecha de Nacimiento ~t : " + vfecnac) lb_1.additem("Telefono ~t~t~t : " + vtelefono) lb_1.additem("Nombre del Padre ~t~t : " + vnompadre + vapepatpadre + vapematpadre) lb_1.additem("Nombre de la Madre ~t : " + vnommadre + vapepatmadre + vapematmadre) lb_1.additem("Nombre del Apoderado ~t : " + vnomapoderado + vapepatapoderado + vapematapoderado) tab_1.tabpage_1.sle_idalumno.text = vidalumno

Page 100: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 100

tab_1.tabpage_1.sle_nomal.text = vnombre tab_1.tabpage_1.sle_apepatal.text = vapepat tab_1.tabpage_1.sle_apematal.text = vapemat tab_1.tabpage_1.sle_direccion.text = vdireccion tab_1.tabpage_1.sle_telefono.text = vtelefono tab_1.tabpage_1.sle_fecnac.text = vfecnac tab_1.tabpage_2.tab_2.tabpage_3.sle_nompa.text = vnompadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apepatpa.text = vapepatpadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apematpa.text = vapematpadre tab_1.tabpage_2.tab_2.tabpage_4.sle_nomma.text = vnommadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apepatma.text = vapepatmadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apematma.text = vapematmadre tab_1.tabpage_2.tab_2.tabpage_5.sle_nomapo.text = vnomapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apepatapo.text = vapepatapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apematapo.text = vapematapoderado Primero: SELECT top 1 alumno.idalumno, alumno.nombre, alumno.apepaterno, alumno.apematerno, alumno.direccion, alumno.fecnac, alumno.telefono, alumno.nompadre, alumno.apepatpadre, alumno.apematpadre, alumno.nommadre, alumno.apepatmadre, alumno.apematmadre, alumno.nomapoderado, alumno.apepatapoderado, alumno.apematapoderado INTO : vidalumno, : vnombre, : vapepat, : vapemat, : vdireccion, : vfecnac, : vtelefono, : vnompadre, : vapepatpadre, : vapematpadre, : vnommadre, : vapepatmadre, : vapematmadre, : vnomapoderado, : vapepatapoderado, : vapematapoderado

Page 101: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 101

FROM alumno ORDER BY alumno.idalumno ASC ; lb_1.reset() lb_1.additem("Codigo de Alumno ~t~t : " + vidalumno) lb_1.additem("Nombres y Apellidos ~t : " + vnombre + vapepat + vapemat) lb_1.additem("Direccion ~t~t : " + vdireccion) lb_1.additem("Fecha de Nacimiento ~t : " + vfecnac) lb_1.additem("Telefono ~t~t~t : " + vtelefono) lb_1.additem("Nombre del Padre ~t~t : " + vnompadre + vapepatpadre + vapematpadre) lb_1.additem("Nombre de la Madre ~t : " + vnommadre + vapepatmadre + vapematmadre) lb_1.additem("Nombre del Apoderado ~t : " + vnomapoderado + vapepatapoderado + vapematapoderado) tab_1.tabpage_1.sle_idalumno.text = vidalumno tab_1.tabpage_1.sle_nomal.text = vnombre tab_1.tabpage_1.sle_apepatal.text = vapepat tab_1.tabpage_1.sle_apematal.text = vapemat tab_1.tabpage_1.sle_direccion.text = vdireccion tab_1.tabpage_1.sle_telefono.text = vtelefono tab_1.tabpage_1.sle_fecnac.text = vfecnac tab_1.tabpage_2.tab_2.tabpage_3.sle_nompa.text = vnompadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apepatpa.text = vapepatpadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apematpa.text = vapematpadre tab_1.tabpage_2.tab_2.tabpage_4.sle_nomma.text = vnommadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apepatma.text = vapepatmadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apematma.text = vapematmadre tab_1.tabpage_2.tab_2.tabpage_5.sle_nomapo.text = vnomapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apepatapo.text = vapepatapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apematapo.text = vapematapoderado segundo Anterior: cmd = string(integer(tab_1.tabpage_1.sle_idalumno.text) - 1) if integer(cmd) > 0 then SELECT alumno.idalumno, alumno.nombre, alumno.apepaterno, alumno.apematerno, alumno.direccion, alumno.fecnac, alumno.telefono, alumno.nompadre, alumno.apepatpadre, alumno.apematpadre, alumno.nommadre, alumno.apepatmadre, alumno.apematmadre, alumno.nomapoderado, alumno.apepatapoderado,

Page 102: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 102

alumno.apematapoderado INTO : vidalumno, : vnombre, : vapepat, : vapemat, : vdireccion, : vfecnac, : vtelefono, : vnompadre, : vapepatpadre, : vapematpadre, : vnommadre, : vapepatmadre, : vapematmadre, : vnomapoderado, : vapepatapoderado, :vapematapoderado FROM alumno WHERE alumno.idalumno = : cmd ; lb_1.reset() lb_1.additem("Codigo de Alumno ~t~t : " + vidalumno) lb_1.additem("Nombres y Apellidos ~t : " + vnombre + vapepat + vapemat) lb_1.additem("Direccion ~t~t : " + vdireccion) lb_1.additem("Fecha de Nacimiento ~t : " + vfecnac) lb_1.additem("Telefono ~t~t~t : " + vtelefono) lb_1.additem("Nombre del Padre ~t~t : " + vnompadre + vapepatpadre + vapematpadre) lb_1.additem("Nombre de la Madre ~t : " + vnommadre + vapepatmadre + vapematmadre) lb_1.additem("Nombre del Apoderado ~t : " + vnomapoderado + vapepatapoderado + vapematapoderado) tab_1.tabpage_1.sle_idalumno.text = vidalumno tab_1.tabpage_1.sle_nomal.text = vnombre tab_1.tabpage_1.sle_apepatal.text = vapepat tab_1.tabpage_1.sle_apematal.text = vapemat tab_1.tabpage_1.sle_direccion.text = vdireccion tab_1.tabpage_1.sle_telefono.text = vtelefono tab_1.tabpage_1.sle_fecnac.text = vfecnac tab_1.tabpage_2.tab_2.tabpage_3.sle_nompa.text = vnompadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apepatpa.text = vapepatpadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apematpa.text = vapematpadre tab_1.tabpage_2.tab_2.tabpage_4.sle_nomma.text = vnommadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apepatma.text = vapepatmadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apematma.text = vapematmadre tab_1.tabpage_2.tab_2.tabpage_5.sle_nomapo.text = vnomapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apepatapo.text = vapepatapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apematapo.text = vapematapoderado end if

Page 103: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 103

Siguiente: SELECT top 1 alumno.idalumno INTO : vidalumno FROM alumno ORDER BY alumno.idalumno DESC ; cmd = string(integer(tab_1.tabpage_1.sle_idalumno.text) + 1) if integer(cmd) <= integer(vidalumno) then SELECT alumno.idalumno, alumno.nombre, alumno.apepaterno, alumno.apematerno, alumno.direccion, alumno.fecnac, alumno.telefono, alumno.nompadre, alumno.apepatpadre, alumno.apematpadre, alumno.nommadre, alumno.apepatmadre, alumno.apematmadre, alumno.nomapoderado, alumno.apepatapoderado, alumno.apematapoderado INTO : vidalumno, : vnombre, : vapepat, : vapemat, : vdireccion, : vfecnac, : vtelefono, : vnompadre, : vapepatpadre, : vapematpadre, : vnommadre, : vapepatmadre, : vapematmadre, : vnomapoderado, : vapepatapoderado, :vapematapoderado FROM alumno WHERE alumno.idalumno = : cmd ; lb_1.reset() lb_1.additem("Codigo de Alumno ~t~t : " + vidalumno) lb_1.additem("Nombres y Apellidos ~t : " + vnombre + vapepat + vapemat) lb_1.additem("Direccion ~t~t : " + vdireccion) lb_1.additem("Fecha de Nacimiento ~t : " + vfecnac) lb_1.additem("Telefono ~t~t~t : " + vtelefono) lb_1.additem("Nombre del Padre ~t~t : " + vnompadre + vapepatpadre + vapematpadre) lb_1.additem("Nombre de la Madre ~t : " + vnommadre + vapepatmadre + vapematmadre)

Page 104: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 104

lb_1.additem("Nombre del Apoderado ~t : " + vnomapoderado + vapepatapoderado + vapematapoderado) tab_1.tabpage_1.sle_idalumno.text = vidalumno tab_1.tabpage_1.sle_nomal.text = vnombre tab_1.tabpage_1.sle_apepatal.text = vapepat tab_1.tabpage_1.sle_apematal.text = vapemat tab_1.tabpage_1.sle_direccion.text = vdireccion tab_1.tabpage_1.sle_telefono.text = vtelefono tab_1.tabpage_1.sle_fecnac.text = vfecnac tab_1.tabpage_2.tab_2.tabpage_3.sle_nompa.text = vnompadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apepatpa.text = vapepatpadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apematpa.text = vapematpadre tab_1.tabpage_2.tab_2.tabpage_4.sle_nomma.text = vnommadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apepatma.text = vapepatmadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apematma.text = vapematmadre tab_1.tabpage_2.tab_2.tabpage_5.sle_nomapo.text = vnomapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apepatapo.text = vapepatapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apematapo.text = vapematapoderado end if Ultimo SELECT top 1 alumno.idalumno, alumno.nombre, alumno.apepaterno, alumno.apematerno, alumno.direccion, alumno.fecnac, alumno.telefono, alumno.nompadre, alumno.apepatpadre, alumno.apematpadre, alumno.nommadre, alumno.apepatmadre, alumno.apematmadre, alumno.nomapoderado, alumno.apepatapoderado, alumno.apematapoderado INTO : vidalumno, : vnombre, : vapepat, : vapemat, : vdireccion, : vfecnac, : vtelefono, : vnompadre, : vapepatpadre, : vapematpadre, : vnommadre,

Page 105: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 105

: vapepatmadre, : vapematmadre, : vnomapoderado, : vapepatapoderado, : vapematapoderado FROM alumno ORDER BY alumno.idalumno DESC ; lb_1.reset() lb_1.additem("Codigo de Alumno ~t~t : " + vidalumno) lb_1.additem("Nombres y Apellidos ~t : " + vnombre + vapepat + vapemat) lb_1.additem("Direccion ~t~t : " + vdireccion) lb_1.additem("Fecha de Nacimiento ~t : " + vfecnac) lb_1.additem("Telefono ~t~t~t : " + vtelefono) lb_1.additem("Nombre del Padre ~t~t : " + vnompadre + vapepatpadre + vapematpadre) lb_1.additem("Nombre de la Madre ~t : " + vnommadre + vapepatmadre + vapematmadre) lb_1.additem("Nombre del Apoderado ~t : " + vnomapoderado + vapepatapoderado + vapematapoderado) tab_1.tabpage_1.sle_idalumno.text = vidalumno tab_1.tabpage_1.sle_nomal.text = vnombre tab_1.tabpage_1.sle_apepatal.text = vapepat tab_1.tabpage_1.sle_apematal.text = vapemat tab_1.tabpage_1.sle_direccion.text = vdireccion tab_1.tabpage_1.sle_telefono.text = vtelefono tab_1.tabpage_1.sle_fecnac.text = vfecnac tab_1.tabpage_2.tab_2.tabpage_3.sle_nompa.text = vnompadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apepatpa.text = vapepatpadre tab_1.tabpage_2.tab_2.tabpage_3.sle_apematpa.text = vapematpadre tab_1.tabpage_2.tab_2.tabpage_4.sle_nomma.text = vnommadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apepatma.text = vapepatmadre tab_1.tabpage_2.tab_2.tabpage_4.sle_apematma.text = vapematmadre tab_1.tabpage_2.tab_2.tabpage_5.sle_nomapo.text = vnomapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apepatapo.text = vapepatapoderado tab_1.tabpage_2.tab_2.tabpage_5.sle_apematapo.text = vapematapoderado Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0” SQL 2000 “La bilia de Sql 200”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net http://www.monografias.com Tutorial de oracle 9i http://www.solotutoriales.com/visitar.asp?id=5414 ”

Page 106: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 106

SENTENCIA SQL

1. Introducción El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por el motor de base de datos de Microsoft Jet. SQL se utiliza para crear objetos QueryDef, como el argumento de origen del método OpenRecordSet y como la propiedad RecordSource del control de datos. También se puede utilizar con el método Execute para crear y manipular directamente las bases de datos Jet y crear consultas SQL de paso a través para manipular bases de datos remotas cliente - servidor. 1.1. Componentes del SQL El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. 1.2 Comandos Existen dos tipos de comandos SQL:

• Los DLL que permiten crear y definir nuevas bases de datos, campos e índices. • Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base

de datos. Comandos DLL

Comando Descripción CREATE Utilizado para crear nuevas tablas, campos e índices DROP Empleado para eliminar tablas e índices

ALTER Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.

Comandos DML Comando Descripción

SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado

INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.

UPDATE Utilizado para modificar los valores de los campos y registros especificados

DELETE Utilizado para eliminar registros de una tabla de una base de datos 1.3 Cláusulas Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

Comando Descripción

FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros

WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar

GROUP BY Utilizada para separar los registros seleccionados en grupos específicos

HAVING Utilizada para expresar la condición que debe satisfacer cada grupo ORDER BY

Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico

1.4 Operadores Lógicos

Page 107: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 107

Operador Uso

AND Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.

OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta.

NOT Negación lógica. Devuelve el valor contrario de la expresión. 1.5 Operadores de Comparación

Operador Uso < Menor que > Mayor que <> Distinto de <= Menor ó Igual que >= Mayor ó Igual que BETWEEN Utilizado para especificar un intervalo de valores. LIKE Utilizado en la comparación de un modelo In Utilizado para especificar registros de una base de datos

1.6 Funciones de Agregado Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros.

Comando Descripción

AVG Utilizada para calcular el promedio de los valores de un campo determinado

COUNT Utilizada para devolver el número de registros de la selección

SUM Utilizada para devolver la suma de todos los valores de un campo determinado

MAX Utilizada para devolver el valor más alto de un campo especificado MIN Utilizada para devolver el valor más bajo de un campo especificado

2. CONSULTAS DE SELECCIÓN Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable. 2.1 Consultas básicas La sintaxis básica de una consulta de selección es la siguiente: SELECT Campos FROM Tabla;

En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo: SELECT Nombre, Telefono FROM Clientes;

Esta consulta devuelve un recordset con el campo nombre y teléfono de la tabla clientes. 2.2 Ordenar los registros Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la claúsula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo: SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre;

Page 108: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 108

Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por mas de un campo, como por ejemplo: SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal, Nombre;

Incluso se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC) SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC;

2.3 Consultas con Predicado El predicado se incluye entre la claúsula y el primer nombre del campo a recuperar, los posibles predicados son:

Predicado Descripción ALL Devuelve todos los campos de la tabla TOP Devuelve un determinado número de registros de la tabla

DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente

DISTINCROW Omite los registros duplicados basandose en la totalidad del registro y no sólo en los campos seleccionados.

ALL: Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instrucción SQL. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados. SELECT ALL FROM Empleados; SELECT * FROM Empleados;

TOP: Devuelve un cierto número de registros que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994: SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;

Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25 registros de la tabla Estudiantes .El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso: SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;

El valor que va a continuación de TOP debe ser un Integer sin signo.TOP no afecta a la posible actualización de la consulta. DISTINCT: Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos.

Page 109: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 109

Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un único registro: SELECT DISTINCT Apellido FROM Empleados;

Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios. DISTINCTROW: Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que sólo se fijaba en el contenido de los campos seleccionados, éste lo hace en el contenido del registro completo independientemente de los campo indicados en la cláusula SELECT. SELECT DISTINCTROW Apellido FROM Empleados;

Si la tabla empleados contiene dos registros: Antonio López y Marta López el ejemplo del predicado DISTINCT devuleve un único registro con el valor López en el campo Apellido ya que busca no duplicados en dicho campo. Este último ejemplo devuelve dos registros con el valor López en el apellido ya que se buscan no duplicados en el registro completo. 2.4 Alias En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;

OPERADORES LÓGICOS EN SQL

3. Criterios de Selección Antes de comenzar el desarrollo de este capítulo hay que recalcar tres detalles de vital importancia. El primero de ellos es que cada vez que se desee establecer una condición referida a un campo de texto la condición de búsqueda debe ir encerrada entre comillas simples; la segunda es que no se posible establecer condiciones de búsqueda en los campos memo y; la tercera y última hace referencia a las fechas. Las fechas se deben escribir siempre en formato mm-dd-aa en donde mm representa el mes, dd el día y aa el año, hay que prestar atención a los separadores -no sirve la separación habitual de la barra (/), hay que utilizar el guión (-) y además la fecha debe ir encerrada entre almohadillas (#). Por ejemplo si deseamos referirnos al día 3 de Septiembre de 1995 deberemos hacerlo de la siguiente forma; #09-03-95# ó #9-3-95#. 3.1 Operadores Lógicos Los operadores lógicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y Not. A excepción de los dos últimos todos poseen la siguiente sintaxis: <expresión1> operador <expresión2> En donde expresión1 y expresión2 son las condiciones a evaluar, el resultado de la operación varía en función del operador lógico. La tabla adjunta muestra los diferentes posibles resultados:

<expresión1> Operador <expresión2> Resultado Verdad AND Falso Falso Verdad AND Verdad Verdad Falso AND Verdad Falso Falso AND Falso Falso

Page 110: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 110

Verdad OR Falso Verdad Verdad OR Verdad Verdad Falso OR Verdad Verdad Falso OR Falso Falso Verdad XOR Verdad Falso Verdad XOR Falso Verdad Falso XOR Verdad Verdad Falso XOR Falso Falso Verdad Eqv Verdad Verdad Verdad Eqv Falso Falso Falso Eqv Verdad Falso Falso Eqv Falso Verdad Verdad Imp Verdad Verdad Verdad Imp Falso Falso Verdad Imp Null Null Falso Imp Verdad Verdad Falso Imp Falso Verdad Falso Imp Null Verdad Null Imp Verdad Verdad Null Imp Falso Null Null Imp Null Null

Si a cualquiera de las anteriores condiciones le anteponemos el operador NOT el resultado de la operación será el contrario al devuelto sin el operador NOT. El último operador denominado Is se emplea para comparar dos variables de tipo objeto <Objeto1> Is <Objeto2>. Este operador devuelve verdad si los dos objetos son iguales. SELECT * FROM Empleados WHERE Edad > 25 AND Edad < 50; SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100; SELECT * FROM Empleados WHERE NOT Estado = 'Soltero'; SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado'); 3.2 Intervalos de Valores Para indicar que deseamos recuperar los registros según el intervalo de valores de un campo emplearemos el operador Between cuya sintaxis es: (campo [Not] Between valor1 And valor2 (la condición Not es opcional) En este caso la consulta devolvería los registros que contengan en "campo" un valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condición Not devolverá aquellos valores no incluidos en el intervalo. SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999; (Devuelve los pedidos realizados en la provincia de Madrid) SELECT IIf(CodPostal Between 28000 And 28999, 'Provincial', 'Nacional') FROM Editores; (Devuelve el valor 'Provincial' si el código postal se encuentra en el intervalo, 'Nacional' en caso contrario)

3.3 El Operador Like Se utiliza para comparar una expresión de cadena con un modelo en una expresión SQL. Su sintaxis es: expresión Like modelo

Page 111: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 111

En donde expresión es una cadena modelo o campo contra el que se compara expresión. Se puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especificado. Por modelo puede especificar un valor completo (Ana María), o se pueden utilizar caracteres comodín como los reconocidos por el sistema operativo para encontrar un rango de valores (Like An*). El operador Like se puede utilizar en una expresión para comparar un valor de un campo con una expresión de cadena. Por ejemplo, si introduce Like C* en una consulta SQL, la consulta devuelve todos los valores de campo que comiencen por la letra C. En una consulta con parámetros, puede hacer que el usuario escriba el modelo que se va a utilizar. El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de cualquier letra entre A y F y de tres dígitos: Like 'P[A-F]###' Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a la D seguidas de cualquier cadena. Like '[A-D]*' En la tabla siguiente se muestra cómo utilizar el operador Like para comprobar expresiones con diferentes modelos.

Tipo de coincidencia Modelo Planteado Coincide No Coincide Varios caracteres 'a*a' 'aa', 'aBa', 'aBBBa' 'aBC' Carácter especial 'a[*]a' 'a*a' 'aaa' Varios caracteres 'ab*' 'abcdefg', 'abc' 'cab', 'aab' Un solo carácter 'a?a' 'aaa', 'a3a', 'aBa' 'aBBBa' Un solo dígito 'a#a' 'a0a', 'a1a', 'a2a' 'aaa', 'a10a' Rango de caracteres '[a-z]' 'f', 'p', 'j' '2', '&' Fuera de un rango '[!a-z]' '9', '&', '%' 'b', 'a' Distinto de un dígito '[!0-9]' 'A', 'a', '&', '~' '0', '1', '9' Combinada 'a[!b-m]#' 'An9', 'az0', 'a99' 'abc', 'aj0'

3.4 El Operador In Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los indicados en una lista. Su sintaxis es: expresión [Not] In(valor1, valor2, . . .) SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla');

3.5 La cláusula WHERE La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. Después de escribir esta cláusula se deben especificar las condiciones expuestas en los apartados 3.1 y 3.2. Si no se emplea esta cláusula, la consulta devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuación de FROM. SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000; SELECT Id_Producto, Existencias FROM Productos; WHERE Existencias <= Nuevo_Pedido; SELECT * FROM Pedidos WHERE Fecha_Envio = #5/10/94#; SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos = 'King'; SELECT Apellidos, Nombre FROM Empleados WHERE Apellidos Like 'S*'; SELECT Apellidos, Salario FROM Empleados WHERE Salario Between 200 And 300; SELECT Apellidos, Salario FROM Empl WHERE Apellidos Between 'Lon' And 'Tol'; SELECT Id_Pedido, Fecha_Pedido FROM Pedidos WHERE Fecha_Pedido Between #1-1-94# And #30-6-94#; SELECT Apellidos, Nombre, Ciudad FROM Empleados WHERE Ciudad In ('Sevilla', 'Los Angeles', 'Barcelona');

Page 112: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 112

4. Agrupamiento de Registros 4.1 GROUP BY Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro. Para cada registro se crea un valor sumario si se incluye una función SQL agregada, como por ejemplo Sum o Count, en la instrucción SELECT. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo

GROUP BY es opcional. Los valores de resumen se omiten si no existe una función SQL agregada en la instrucción SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalúan en ninguna de las funciones SQL agregadas. Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HAVING para filtrar los registros una vez agrupados. A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen en la cláusula FROM, incluso si el campo no esta incluido en la instrucción SELECT, siempre y cuando la instrucción SELECT incluya al menos una función SQL agregada. Todos los campos de la lista de campos de SELECT deben o bien incluirse en la cláusula GROUP BY o como argumentos de una función SQL agregada. SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia;

Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la cláusula GROUP BY que satisfaga las condiciones de la cláusula HAVING. HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar. SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*;

4.2 AVG Calcula la media aritmética de un conjunto de valores contenidos en un campo especificado de una consulta. Su sintaxis es la siguiente Avg(expr) En donde expr representa el campo que contiene los datos numéricos para los que se desea calcular la media o una expresión que realiza un cálculo utilizando los datos de dicho campo. La media calculada por Avg es la media aritmética (la suma de los valores dividido por el número de valores). La función Avg no incluye ningún campo Null en el cálculo. SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100;

4.3 Count Calcula el número de registros devueltos por una consulta. Su sintaxis es la siguiente Count(expr) En donde expr contiene el nombre del campo que desea contar. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto. Aunque expr puede realizar un cálculo sobre un campo, Count simplemente cuenta el número de registros sin tener en cuenta qué valores se almacenan en los registros. La función Count no cuenta los registros que tienen campos null a menos que expr sea el carácter comodín asterisco (*). Si utiliza un asterisco, Count calcula el número total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente más rápida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*'). SELECT Count(*) AS Total FROM Pedidos;

Page 113: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 113

Si expr identifica a múltiples campos, la función Count cuenta un registro sólo si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Hay que separar los nombres de los campos con ampersand (&). SELECT Count(FechaEnvío & Transporte) AS Total FROM Pedidos;

4.4 Max, Min Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es: Min(expr) Max(expr) En donde expr es el campo sobre el que se desea realizar el cálculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'España'; SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'España';

4.5 Sum Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su sintaxis es: SumP(expr) En donde expr representa el nombre del campo que contiene los datos que desean sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;

Page 114: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 114

SEPARATA N°16 Escuela Profesional: Ing. Informática Asignatura: Lenguaje de Programación Comercial Turno: Noche Ciclo: Octavo Docente: ELVIS GUILLERMO HUARCAYA QUISPE Fecha: 21-11-2006

CREACIÓN DE TABLAS Y RELACIÓN DE LAS TABLAS, SQL EN POWER BUILDER

Para crear un tabla en Power Builder. Se tiene que buscar la carpeta de Tables Realizar clic derecho en New Tables Nos mostrara la siguiente ventana Ingrese los campos de la tabla, tipo de datos tamaño, la cantidad de decimal si es que es un tipo de datos numérico, si es de valor nulo yes o no, default nos muestra opciones que van ser: current date, current time, last user etc.

Page 115: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 115

Para guardar una tabla realice Clic en : file – Save As.

O clic en el icono guardar. O en clic en x de la venta A continuación nos mostrara la ventana para ingresar el nombre de la tabla, y luego clic en el botón OK. Para visualizar la tabla realice la siguiente paso: Tab ususario Clic derecho en tabusuario Se visualiza La siguiente relación de tablas

Page 116: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 116

SQL EN POWER BUILDER

SQL Es una herramienta para organizar y gestionar y recuperar datos almacenados en una base de datos. SQL es un lenguaje que se puede interactuar con una base de datos relacional. Para utilizar la herramienta realizar un click en el menu View del sistema a seleccionar la opción Interactive SQL se observara la ventana ISQL session Se muestra:

es donde se escribe la sentencia para visualizar la consulta realice click en el siguiente icono

y se mostrara:

Ejercicios: Ejer01 La siguiente sentencia muestra todo los campos y los registros de la tabla inmuebles

select * from inmuebles; Ejer02 Escribir la sentencia para consultar solamente los campos codigo, modulo select codigo, modulo from inmuebles; Ejer03 Escribir una consulta sacando un porcenta de descuento. select codigo_periodo, 0.10*importe from facturas; Realizar todas las consultas Que se presenta para el caso

Page 117: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 117

Ejercicio 01 Realizar una consulta que presenta los campos importe, código_concepto de la tabla lineas-factura, cuando el importa es mayor que 45 soles. Ejercicio 02 Mostrar a los usuarios que se encuentran en el distrito de tambo: select Nombre from propietarios where poblacion='Tambo'; Ejercicios 03 Utilizando la base de datos tienda Realice una consulta para que se muestre idproveedor y idcategoría y la cantidad de producto que esta quedando y unidadesenexistencia <= 45 y cuyo precio unitario sea mayor 200 select nombreproducto, idproveedor,idcategoría,unidadesenexistencia from productos where unidadesenexistencia<=60 and Preciounidad>200; Ejercicio 04 Utilizando signos de comparación (=,<>, >,<, =>,=<); La consulta BETWEEN Sql proporciona una forma diferente de condición de búsqueda con el test de rango comprueba si un valor de dato se encuentra entre valores especificadosimplica el uso de tres expresiones . Realice la consulta para la tabla productos y mostrar los productos que se encuentran las select nombreproducto, idproducto,unidadesenexistencia from productos where unidadesenexistencia between 100 and 20; Ejercicio 05 TEST DE PERTENENCIA IN Otra condición habitual es el test de pertenencia a un conjunto (IN) examina el valor de dato que coincide La siguiente consulta nos muestra a todos los empelados 3 y 4 que realizaron un pedido select idpedido, idcliente,idempleado from pedidos where Idempleado in (3,4); Ejercicio 06 UTILIZACIÓN DEL COMANDO LIKE Se utiliza para un comparación simple para recuperar filas en donde el contenido de una columna de texto se corresponde con un cierto texto particular Muestra la consulta a los nombres de los destinatarios que tengan en la tercera letra “L” select idpedido, fechapedido, fechaentrega,destinatario from pedidos where destinatario like '___l%'; ORDER BY Ordena un campo en forma ascendente o descendente “ASC”, “DESC” Ordena los productos en forma ascendente en función a su precio: select nombreproducto, idproducto,preciounidad from productos order by preciounidad asc;

Page 118: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 118

CONSULTAS SUMARIAS Para las consultas sumarias se utiliza Sum Calcula el total de la columna Avg Promedio de una columna Min Valor mínimo de una columna Max Valor máximo de una columna Count cuenta el numero de valores en una columna Cantidad de productos select SUM(unidadesenexistencia) from productos; Cantidad mínima select min(unidadesenexistencia) from productos; Cantidad máxima select max(unidadesenexistencia) from productos; Numero de registros select count(unidadesenexistencia) from productos;

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0” SQL 2000 “La bilia de Sql 200”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net http://www.monografias.com Tutorial de oracle 9i http://www.solotutoriales.com/visitar.asp?id=5414 ” http://www.inei.gob.pe/biblioineipub/bancopub/inf/lib5022/indice.HTM

Page 119: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 119

SEPARATA Nº 17 EAP : Ingeniería Informática ASIGNATURA : Lenguaje de Programación Comercial Sección : Octavo Turno: NOCHES Ciclo: OCTAVO Docente: Ing. ELVIS GUILLERMO, HUARCAYA QUISPE Fecha: 28-11-2006

DATAWINDOWS Y SQL

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

Luego de crear la función escriba el código siguiente. sle_nombres.Text="" sle_apepat.Text="" sle_apemat.Text=""

Page 120: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 120

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. __Llamado de la función dentro del programa lb_codigos.AddItem(Codigo) sle_codigo.Text=Codigo Limpiar_Controles(); PARA CREAR UNA FUNCIÓN O INCREMENTAR UNA FUNCIÓ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. Y se mostrara la figura

cuando queremos adicionar un ingreso de parámetro realice un clic derecho sobre Fuction Name y busca la opción add parameter SENTENCIA DE ASIGNACIÓN Como en todo lenguaje de programación visual existe sentencias de asignación Variable = valor de la variable En otras palabras “Asignar algún valor a algo”. Frecuentemente lo que esta en la izquierda es una variable T=100 En la parte derecha podría haber un literal, una variable, una llamada de función, una expresión. Así como por ejemplo T = 3 // valor literal K1 = k2 // valor de variable Mivalor = contar(p) // llamada a una función Sumar = s + t // valor de expresión Un literal puede ser exactamente números, cadenas, fechas, valores de tiempo, etc. Todos los tipos de datos vistos anteriormente. UNA EXPRESIÓN puede incluir uno de los siguientes operadores :

• Aritméticos : Suma (+) , resta ( - ), multiplicación ( * ), división ( / ) , potenciación (^) • Lógico . not, and y or • Relacional: igual (= ), mayor que (>), menor que (<), diferente a ( <>), mayor que o

igual a (>=), menor que o igual a (<=) • Concatenación (unión) de cadenas(texto): ( + )

DATAWINDOWS(Ejemplos)

Page 121: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 121

Cuando actualizamos base de datos y tenemos relacionado con varias tablas y tenemos la necesidad de actualizar datos desde otra Tabla. Ejemplo: Actualizar la tabla de propietarios para mostrar todo los campos Pero si queremos actualizar y cambiar de datos podemos escoger la información que contiene la tabla comunidad y inmuebles mediante

Para la siguiente aplicación demostrativa se creo tres datawindows De comunidades con el campo de código De inmuebles con el campo nif De propietarios con todo los campos, por que se debe de actualizar: Diseño de los data Windows Datawindows Comunidad:

Page 122: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 122

Datawindows Propietarios wind Cuando editamos el campo de codigo_comunidad con dddw se tiene que realizar desde la ventana de propiedades en la pestaña Edit, en la opción Style Type: seleccionando las opciones que desea escoger:

Page 123: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 123

luego activar la casilla de Always Show Arrow. En la opción DataWindows Escoger el datawindows creado con el nombre de comunidad, En Display Column escoger el campo que se esta reemplazando, y en Data Column el campo que se muestra en el dddw ACTUALIZACIÓN DEL WINDOWS Evento Open

DATAWINDOWS (SQL)

Se realizara la siguiente aplicación el siguiente: Windows guarda los valores que se ingresa en eel

Page 124: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 124

Código en al aplicación // Profile Ventas SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "Connectstring='DSN=ventas'" connect; if sqlca.sqlcode=0 then open(w_aplica20) end if declaración de las variables a utilizar CÓDIGO EN WINDOWS EVENTO OPEN Declare PrimerCur Cursor For Select cat_id,cat_nomb From categorias; Open PrimerCur; Fetch PrimerCur Into :p,:s; Do Until sqlca.sqlcode=100 ddlb_categoria.additem(p) Fetch PrimerCur Into :p,:s; Loop Close PrimerCur; CB_nuevo EVENTO CLICKED sle_codigo.text="" sle_descripcion.text="" sle_npedido.text="" sle_pcosto.text="" sle_punitario.text="" sle_stock.text="" sle_unidad.text=""

Page 125: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 125

ddlb_categoria.text="" sle_codigo.setfocus() cb_grabar.enabled=false cbx_discontinuo.checked=false CB_grabar EVENTO CLICKED (GRABAR) cb_grabar.enabled = False String dis If cbx_discontinuo.checked Then dis='1' Else dis='0' End If Integer nResp nResp=MessageBox("Sistema de Facturación","Desea Grabar el registro",Question!,YesNo!) If nResp=1 Then Insert Into Articulos(art_id,cat_id,art_nomb,art_unid,art_puni,art_pcos, art_stoc,art_nped,art_disc) Values(:sle_codigo.text,:ddlb_categoria.text,:sle_descripcion.text,:sle_unidad.text,:sle_punitario.text, :sle_pcosto.text,:sle_stock.text,:sle_npedido.text,:dis); End If CB_salir EVENTO CLICKED (Salir) Close (Parent)

DATAWINDOWS (SQL) –CREACIÓN DE EJECUTABLES DATAWINDOWS PARA LA ACTUALIZACIÓN DE ARTÍCULOS. Podemos ingresar los datos desde los controles del Windows: para la tabla Artículos

para la aplicación se debe tener en consideración: Crear un datawindows con el nombre de d_articulos, de tipo Grid Desarrollar un Windows con los controles correspondientes cigualq ue el grafico: Código de la aplicación // Profile Comunidad SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=Comunidad;UID=;PWD='"

Page 126: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 126

connect; if sqlca.sqlcode=0 then open(w_iv01) end if CODIGO DEL WINDOWS EVENTO OPEN dw_1.settransobject(sqlca) dw_1.retrieve() Cb_Grabar Evento Clicked date ven ven= date(Em_1.Text) Insert Into articulos Values (:Sle_1.Text,:Sle_2.Text,:Ddlb_1.Text,:Sle_3.Text,:Sle_4.Text,:ven); /*if sqlca.sqlcode=0 then MessageBox ("se grabara","el dato") end if */ if SQLCA.SQLCODE = -1 Then MessageBox ("Imposible Grabar","Hay un error en los Datos") Else //Recupera los registros del Dw_1 para ver el nuevo Artículo. Dw_1.Retrieve() //Limpia los controles para ingresar otro Artículo Sle_1.Text="" Sle_2.Text="" Ddlb_1.Text="" Sle_3.Text="" Sle_4.Text="" Em_1.Text="" Sle_1.SetFocus() //dw_1.update() End If Cb_Nuevo Evento Clicked Dw_1.Retrieve() //Limpia los controles para ingresar otro Artículo Sle_1.Text="" Sle_2.Text="" Ddlb_1.Text="" Sle_3.Text="" Sle_4.Text="" Em_1.Text="" Sle_1.SetFocus() DATAWINDOWS PARA LA BÚSQUEDA Y ACTUALIZACIÓN DE ARTÍCULOS.(ELIMINAR, EDITAR, GRABAR)

Page 127: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 127

para la aplicación se va crear funciones utilizadas creadas por el usuario CREAR UNA FUNCIÓN POR EL USUARIO Dentro del Script seleccionar la opción de Funtions como muestra en la Fig. En la funtion Name colocar el nombre de la función Se tiene que crear una función solo para limpiar a los controles quiere decir que no devuelve valor para ello debe ser de tipo none FUNCION ACTIVAR //Activa el Botón Grabar y Cancelar Cb_1.Enabled = True Cb_2.Enabled = True //Desactiva el resto de botones Cb_3.Enabled = False Cb_4.Enabled = False Cb_5.Enabled = False Cb_6.Enabled = False FUNCION LIMPIA Sle_1.Text="" Sle_2.Text="" Ddlb_1.Text="" Sle_3.Text="" Sle_4.Text="" Em_1.Text=""

FUNCIÓN DESACTIVA //Desactiva el Botón Grabar y Cancelar Cb_1.Enabled = False Cb_2.Enabled = False //Activa el resto de botones Cb_3.Enabled = True Cb_6.Enabled = True Dw_1.Enabled = True Se tiene que declarar como variable global Variable Global string p,s Variable Instancia String CodArticulo Boolean Actualizacion,Nuevo

WINDOWS EVENTO OPEN dw_1.settransobject(sqlca) dw_1.retrieve() CB _ GRABAR EVENTO CLIKED Integer Sto Decimal Cos Date Ven

Page 128: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 128

Ven=Date(em_1.text) IF Nuevo = True then Insert Into Articulos Values (:Sle_1.Text,:Sle_2.Text,:Ddlb_1.Text,:Sle_3.Text,:Sle_4.Text,:Ven); End If IF Actualizacion = True Then Cos=Dec(Sle_3.Text) Sto=Integer(Sle_4.Text) Ven=Date(Em_1.text) UpDate Articulos Set codigo=:Sle_1.Text,Nombre=:Sle_2.Text,Tipo=:Ddlb_1.Text, Costo=:Cos,Stock=:Sto,Vencimiento=:ven Where Codigo=:CodArticulo; End if if SQLCA.SQLCODE = -1 Then MessageBox ("Imposible Grabar","Hay un error en los Datos") Sle_1.SetFocus() Else //Recupera los registros del Dw_1 para ver el nuevo Artículo. Dw_1.Retrieve() //Pregunta si es Nuevo para poder ingresar otro Artículo If Nuevo = True Then //Ejecuta las instrucciones del boton Nuevo para ingresar otro Artículo Cb_3.TriggerEvent(Clicked!) End If End If CB _ CANCELAR EVENTO CLIKED //Borra un Mensaje St_Mensaje.Text="" Desactivar() //Limpia los controles Limpia() Cb_3.SetFocus() Sle_Buscar.Text="" CB _ NUEVO_ARTICULO EVENTO CLIKED //Muestra un Mensaje St_Mensaje.Text="Nuevo" Actualizacion=False Nuevo=True Activar() //Limpia los controles para ingresar otro Artículo Limpia() Sle_1.SetFocus() CB_ ACTUALIZAR EVENTO CLIKED //Muestra un Mensaje St_Mensaje.Text="Actualizando" Actualizacion=True Nuevo=False //Almacena el Código del Artículo que está actualizando CodArticulo = Sle_1.Text Activar() Sle_1.SetFocus() CB_ ELIMINAR EVENTO CLIKED Integer R R=MessageBox ("Confirme","Desea eliminar este artículo",Question!,Yesno!)

Page 129: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 129

If R=1 Then Delete From Articulos Where Codigo=:Sle_1.Text; Commit; //Limpia los controles Sle_Buscar.Text="" St_Mensaje.Text="" Limpia() Dw_1.Retrieve() //Desactiva los Botones Actualizar y Eliminar Cb_4.Enabled = False Cb_5.Enabled = False Sle_Buscar.SetFocus() End If CB_ CERRAR EVENTO CLIKED Close(w_sql02) SLE_BUSCAR EVENTO MODIFIED String Nom,Cod,Tip //, Ven Decimal Cos Integer N,Sto Date Ven N=Len(Sle_Buscar.Text) Select codigo,nombre,tipo,costo,stock,vencimiento into :Cod,:Nom,:Tip,:Cos,:Sto,:Ven from articulos where Left(Nombre,:N) = :Sle_Buscar.Text; If Sqlca.SqlCode=100 THEN MessageBox("Verifique","El nombre no existe") //Limpia los controles para ingresar otro Artículo Limpia() Cb_4.Enabled=False Cb_5.Enabled=False //Borra el Mensaje St_Mensaje.Text="" ELSE Sle_1.Text=Cod Sle_2.Text=Nom Ddlb_1.Text=Tip Sle_3.Text=String(Cos,"###,##0.00") Sle_4.Text=String(Sto) Em_1.Text=String(Ven) //Em_1.Text=Ven Cb_4.Enabled=True Cb_5.Enabled=True //Muestra el Mensaje St_Mensaje.Text="Consultando" END IF Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0” SQL 2000 “La bilia de Sql 200”

Lecturas

Page 130: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 130

Recomendadas Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10

http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net http://www.monografias.com Tutorial de oracle 9i http://www.solotutoriales.com/visitar.asp?id=5414 ” http://www.inei.gob.pe/biblioineipub/bancopub/inf/lib5022/indice.HTM

Page 131: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 131

CLASES EN POWER BUILDER

Cuando s e genera clases en Power Builder se tiene que tener en consideración. los siguiente paso para ello se debe tener en cuenta. Para que tipo de uso desea dar.

para crear clases visuales se debe de seleccionar Satandard Visual a continuación les se mostrara la siguiente ventana

uno puede escoger las opciones que cree crear el tipo de clases que puede ser: check box , commandBox commanpicture o datawindow etec. Para el ejemplo se escogera datawindows. Para ello crearemos un datawindows padre para que puede heredar algunas funciones: Y se mostrara el siguiente grafico.

que se le incrementara la propiedades correspondientes para después guardar con el nombre de midw_general y a continuación se debe incrementar una función llamada Asignar_DataObj para ello hacemos clic en : insert y luego en Fuctions y nos muestra la siguiente ventana

Page 132: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 132

grabamos la modificaciones PARA CREAR CLASES HEREDADAS , se debe de realizar los siguientes pasos. Clic en File Clic en Inherid

luego seleccionamos midw_general y los guardanos a esta clase con el nombre de midw_mantenimiento para luego crea la siguiente funciones:

Page 133: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 133

Función F_ Nuevo

función F_Editar

función F_Eliminar

función f_Grabar

Page 134: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 134

función F_Deshacer

luego de terminado las funciones ahora cree un nuevo Windows

y seleccione el control Create User object control y se mostrara la siguiente ventana y seleccione midw_mantenimiento

Page 135: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 135

ahora después tendremos como la figura

ahora incrementaremos los botones de Nuevo; Editar , Eliminar , Grabar, Salir y quedara como la grafica:

Windows Evento Open Dw_1.SettransObject(SQLCA)

//Dw_1.Asignar_DataObj("Dw_1") Dw_1.Retrieve()

Page 136: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 136

//return cb_nuevo evento clikcled dw_1.f_nueva() return cb_Editar evento clikcled dw_1.f_Editar() return cb_Eliminar evento clikcled dw_1.f_eliminar() return

cb_Grabar evento clikcled dw_1.f_grabar() return cb_Deshacer evento clikcled dw_1.f_deshacer() return cb_Salir evento clikcled close(w_class)

Ahora se ejecuta y tendremos la siguiente aplicación:

Page 137: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 137

SEPARATA Nº 18 EAP : Ingeniería Informática ASIGNATURA : Lenguaje de Programación Comercial Sección : Octavo NAII08

Turno: NOCHES Ciclo: OCTAVO

Docente: Ing. ELVIS GUILLERMO, HUARCAYA QUISPE Fecha: 10/07/06 CREAR EJECUTABLES DE UNA APLICACIÓN

Para crear un ejecutable se bebe de tener varias consideraciones: 1. La aplicación a crear el ejecutable debe estar compilado y ejecutado sin ningún error 2. Debe tener una correcta conexión de Base de datos.

Pasos para crear un ejecutable:

1. Clic en File 2. Clic en new 3. click Project , luego seleccionar Application Wizard o Aplication: depues realizar clic

en Ok

4. Clic en Next 5. Nos muestra la el directorio donde se creara el ejecutable:

Page 138: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 138

6. En el cuadro de texto podemos cambiar el nombre del ejecutable

7. Nos especifica las librerías básicas que se creara el ejecutable

Page 139: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 139

8. Seleccione los radios botones de acuerdo al tipo de ejecutable que va realizar si es la primera vez seleccioné full build.

9. Seleccione la primera opción si es que se va realizar para que se puede actualizar automáticamente

10. Clic en Next

Page 140: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 140

11. Clic en Next

12. Luego clic en Finish 13. para tener la siguiente ventana

14. A continuación realice clic en Deploy

15. y el ejecutable se creara en el tree view

Page 141: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 141

16. A continuación de visualizara el ejecutable. Donde inmenu es el ejecutable de dicha aplicación.

PROCEDIENTOS ALMACENADOS EN POWER BUILDER Se puede utilizar procedimientos almacenados para la creación de un datawindows, con los procedimientos creados en power builder o importados desde sql: Ejemplo para la busca de un alumno por codigo: Para ello se debe de realizar una conexión desde el driver nativo de Sql.

Para poder utilizar toda las bondades de SQL server

Se genera un codigo como como la figura anterior tenemos que pegar: Tenemos el un jemplo de cómo se crea el procemiento almacenado en SQL.

Page 142: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 142

CREATE PROCEDURE ver_alumno @nom varchar (20) output, @cod varchar(5) as select @nom = Nombre from Alumno where IDAlumno= @cod return Ejecución del procedimeitno alamacenado en Sql Server declare @nombre varchar(20) execute ver_alumno @nom=@nombre output, @cod = '3' print @nombre Pasos para ejecutar en power builder en una paliación procedimientos almacenados. Conección en la aplicación inicial // Profile colegio SQLCA.DBMS = "MSS Microsoft SQL Server" SQLCA.Database = "colegio" SQLCA.ServerName = "(local)" SQLCA.LogId = "sa" SQLCA.AutoCommit = False SQLCA.DBParm = "" connect; if sqlca.sqlcode = 1 then messagebox("Aviso", "No se pudo Abrir Conección") else // messagebox("Importante", "Conección Conforme") open(wpasword) end if

Windows con el diseño de la aplicación Evento open del Windows (W_busAlumno) //Se crea un objeto transaction sqlca // Profile colegio SQLCA.DBMS = "MSS Microsoft SQL Server" SQLCA.Database = "colegio" SQLCA.ServerName = "(local)" SQLCA.LogId = "sa" SQLCA.AutoCommit = False SQLCA.DBParm = "" connect; CONNECT USING SQLCA;

Sle_1

Lb_1

Cb_1

Page 143: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 143

Se declara el procedimiento el en VARIABLE GLOBAL String sNom = space(6) //CONNECT USING SQLCA; DECLARE sp_ver PROCEDURE FOR dbo.ver_alumno @cod = :sle_1.text, @nom = :sNom OUTPUT using sqlca; Ejecuta el procedimiento: Evento click cb_1 string s_mensage CONNECT USING SQLCA; execute sp_ver; DO WHILE sqlca.sqlcode =0 fetch sp_ver into :s_mensage; if sqlca.sqlcode=0 then lb_1.additem(s_mensage) //messagebox("smensage", s_mensage) end if loop close sp_ver;

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0” SQL 2000 “La bilia de Sql 200”

Lecturas Recomendadas

Web a visitar http://www.powerbuilder.org/modules.php?name=Content&pa=showpage&pid=10 http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net http://www.monografias.com Tutorial de oracle 9i http://www.solotutoriales.com/visitar.asp?id=5414 ” http://www.inei.gob.pe/biblioineipub/bancopub/inf/lib5022/indice.HTM

Page 144: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 144

ARRAYS (ARREGLOS)

Una variable tradicional tal como la que hemos visto, es un lugar de almacenamiento simple en memoria que no puede matener mas de un valor a la vez. Sin embargo Power Builder proporciona algunos tipos de variables especiales que pueden mantener valores múltiples. El más conocido de estos es ARRAY. Un array es una variable especial que mantiene muchos lugares de almacenamientos, no sólo uno. Una array puede ser simple o multidimensional. Los arrays de dimensiones simples puede tener un tamaño fijo o un tamaño variable. Mientras los arrays multidimensionales deben tener una medida fija. Los arrays pueden ser de cualquier tipo de datos y son declarados de una manera similar a las variables de valor simple. Para crear un arreglo escriba el nombre del arreglo en la sentencia de declaración con un par de corchetes.

• Si los corchetes contienen dos o más números, este es un arreglo de tamaño fijo. • Si lo corchetes están vacíos es un arreglo de tamaño variable.

Ejemplos: Lo que más desea un estudiante de este curso.... String apellidos[50] // declaro un array con una cantidad fija de elementos Date fechanac[] // declaro un array con un tamaño variable. Dec array[0 to 30] // declaro un array con 31 elementos Dec array[5,3] // declaro un array multimensional con 5 filas 3 columnas

(1,1)

(3,2)

(5,3)

Un ejemplo claro, para aprender el uso de ARRAYS TIPO DE DATOS STRUCTURE (ESTRUCTURA) Structure es un tipo de variable definido por el programador. Una variable simple de estructura puede mantener múltiples valores, algo parecido a un arreglo (array). Use al pintor de la Estructura para definir las estructuras globales (los grupos de variables) para el uso en su aplicación. Usted no puede usar al pintor de la Estructura para definir una estructura local. Pasos para crear un TIPO DE DATO STRUCTURA

Page 145: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 145

Escribe nombre de la variable y al lado izquierdo elegir el tipo de dato

Nombre de la estructura, recomiendo usar los prefijos (s_alumno)

Page 146: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 146

A continuación guardar la ventana (clic en el icono del -para los despistados-), una vez más vuelvo a recalcar utilizar los prefijos; en este caso a la estructura lo llamaremos s_alumno. Ahora bien ya esta definida la variable de tipo estructura, lo que nos falta es asignar a una variable es tipo de estructura. Lo graficaré así para su mayor entendimiento.

Lo que la imagen de arriba muestra significa que estoy declarando el tipo estructura s_alumno a la variable alumnos. Pero ahí no queda todo solo falta signar datos a este tipod e variables. Es sencillo.

y listo terminamos con el tipo de datos Structure. Continuamos con ... ambito de las variables Cada vez que se declara una variable, no solo especifica su nombre y tipo de datos sino tambien su AMBITO. El ambito de la variable determina dos características

Page 147: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 147

LEFESPAN. (Tiempo de vida). ¿Cuándo existe la variable?, ¿Cuánto tiempo vivirá?, y ¿cuándo dejaá de existir? VISIBILITY (Visibilidad). ¿Qué scripts pueden ver, compartir y cambiar la variable? Se determina el alcance de una variable, decidiendo donde declararlo. Cada variable debe ser declarada en alguna parte dentro de la aplicación. Sin embargo existen cinco lugares para declarar la variable y esto determina el alcance de la variable.

EXISTE LAS VARIABLES GLOBALES, INSTANCIA SHARED Ambito de la variable declaracion Visibilidad Tiempo de vida Local Script Sólo el script en el que

se declara Hasta que el script termine

Instancia Instance Variables Para todos los scripts dentro de una instancia simple del objeto en que es declarado y opcionalmente a la entera aplicación. Los siguientes tipos de objetos pueden tener variables de instancia: Ventana, aplicación, objeto de usuario y menú.

Hasta que la instancia del objeto se cierre.

Compartida Shared Variables Para todos los scripts dentro de las instancia de los objetos en el que es declarado . Los siguientes tipos de objetos pueden tener variables de instancia: Ventana, aplicación, objeto de usuario y menú.

Hasta que termine

Global Global Variables Para todos los scripts en una aplicación

Hasta que la aplicación termine.

FUNCIONES EXTERNAS

Global y External functions

Declaración de funciones fuera del ámbito de Power Builder como lo son las FUNCIONES API DE WINDOWS

Hasta que termine la aplicación.

Page 148: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 148

Para comenzar a trabajar con los arreglos se debe asignar primero los valores en memoria y luego asignamos los valores según el tipo seleccionado a un control ListBox como en el ejemplo anterior. Notas: Para concretizar el ejemplo anterior utilizamos un control commandbutton donde codificamos y 3 controles listbox Más Ejemplos: Integer numeros[3]= {1000,2000,3999} Para asignar los valores a los arrays creados seguimos los siguientes pasos: String apellidos[4]={“Vásquez”, “Pando”, “Ticona”, ”Arocutipa”} Date fechanac[2]={1977-07-26,1981-10-28} Int edades[]={21,23,25,27,29,9} LLAMADAS DE FUNCION Como veremos en el capitulo proximo sobre funciones, éstas son módulos de programas que se definen una vez y es llamado desde muchas partes en la aplicación. Es mejor llamar a una función que realizar muchas copias del mismo código. Llamada de una función Variable de retorno= nombre función (parámetros) Ejemplo:

Integer r R= asc(“@”)

Referencias Bibliográficas

Juan Jose castañeda “Power Builder 9.0” Juan Jose castañeda “Full Data Base” José del Carmen Canchucaja “Power Builder 9.0 ” Joel Carrasco “Aplique Power Builder 8.0” SQL 2000 “La bilia de Sql 200”

Lecturas Recomendadas

Web a visitar http://sybooks.sybase.com/onlinebooks/group-pb/pbg1000e/ http://www.powerbuilder.org/modules.php?name=News&new_topic=10 http://www.librosdigitales.net http://www.solotutoriales.com/visitar.asp?id=5414 ” http://www.inei.gob.pe/biblioineipub/bancopub/inf/lib5022/indice.HTM

Page 149: MANUAL 1 PB

Lenguaje de Programación Comercial

Power Builder 9.0-10.0 Elvis G. Huarcaya Quispe 149


Top Related