You are on page 1of 403
PowerBuilder 7.0 tra. EDICION Joel Carrasco Mufioz Docente del Centro de Extension y Proyeccién Social UNIVERSIDAD NACIONAL DE INGENIERIA Coordinador Académico del IST “SAN AGUSTIN” Ninguna parte de éste obra puede ser reproducida o transmitida, mediante ningun sistema 0 método. electrénico o mecanico (incluyendo el fotocopiado, la grabacién o cualquier sistema de recuperacion), ni su tratamiento informatico sin consentimiento por escrito del autor. Por tanto los derechos de autor quedan protegidos y amparados por as disposiciones de INDECOPI. LEY 13714 @Derechos Reservados Joel Carrasco Muftoz Marzo 2000 Ventas: Los Cedros 111 Urb. José Galvez — Independencia L28 Teléfono: 534-3894 / 873-3793 Consultas: Teléfono: 534-3894 e.mail: jcarrasco @uni.edu.pe “Para poder progresar es necesario pensar mas en lo que nos falta que en lo que tenemos. ” (Serm, 354,5) San Agustin. Agradecimientos: Son muchas las personas que intervinieron para poder realizar esta obra a todas ellas quiero expresar mi profundo agradecimiento especialmente a la Doctora Sonia Vizcarra subdirectora Académica y al personal Administrativo del |.S.T. “San Agustin”, por las facilidades otorgadas en el desarrollo del presente libro. A la Srta. Pilar Alva Bricefio que se encargo de la digitacion y composicién del texto ademas de la elaboracion de las aplicaciones. Al Grupo Ebano S.A. representado por el Sr. Jorge Magallanes que se encargaron de la impresién del libro, su apoyo incondicional y la confianza que deposité en mi persona. A mis alumnos por las sugerencias y mejoras y especialmente a mis colegas de CEPS-UNI y del Instituto Superior Tecnolégico San Agustin. Ami esposa Maria, a mis engreidas Angela y Claudia muchas gracias Por su comprensién. A A&C editores por la oportunidad brindada para poder trabajar con ellos y a usted amigo lector por su preferencia. Sinceramente a todos ustedes: Muchas Gracias Joel Carrasco Mufioz Editor: Joel Carrasco Mufioz Composicion: Pilar Alva Briceflo Otras Publicaciones: - n_con Power Builder 7.0 Nivel I! - Programacién con Visual Basic 6.0 Nivel II - Programacién con Visual FoxPro 6.0 Indice Capitulo 1 Introduccién Instalacién de PowerBuilder 7.0 La interfaz grafica de PowerBuilder 70 Aplica 01 Programacién orientada a objetos Objetos y Atributos Métodos Eventos Mensajes Objetos Clases Instancias Capitulo 2 Uso de Controles El Control StaticText El Control SingleLineEdist El Control CommandButton El Control Picture Aplica 02 El Objeto Aplicacién El Control Tab El control MultiLineEdit El control PictureButton Aplica 03 El Control! DropDownListBox Aplica 04 Resumen Capitulo 3 El uso del Lenguaje PowerScript Basico Tipos de Datos Identificadores Tipos de datos estandar Tipos de datos enumerados 16 26 32 44 44 44 45 45 45 46 46 50 51 52 53 54 57 58 58 59 60 74 75 82 85 87 87 88 89 A&C Editores Indice Declaracién de Variables Variables Matrices Alcance de las variables Variables Globales Variables Instancia Variables Locales Variables Shared Sentencia de asignacion Asignaciones multiples Valores de matrices en sentencia de asignacién Operadores adicionales Flujo de Control CALL IF... THEN ELSE CHOOSE CASE DO...LOOP EXIT CONTINUE FOR...NEXT HALT RETURN Aplica 05 Aplica 06 Uso de prefijos en el nombre de los controles Capitulo 4 Ventanas Estilo Construccién de una nueva ventana Grabar la ventana Abrir una ventana existente Abrir una ventana existente en otra aplicacién Tipos de Ventanas Ventana principal (Main) Ventana hija (Child) Ventanas emergentes (Popup) Ventanas de respuesta (Response) Ventanas MDI Aplica 07 90 90 90 91 91 92 94 94 94 95 95 95 96 96 97 99 101 103 104 105 106 107 108 116 126 129 130 131 132 133 136 136 137 138 138 139 140 A&C Editores Indice Capitulo 5 Disefio de Menus Menus 149 Partes de un Menu 149 Presentacién de un Menu 150 Opciones en un Menu 150 Eventos 152 Aplica 08 153 Capitulo 6 Funciones 7 Funciones de cadena 174 Funciones de Fecha 174 Funciones Numéricas 177 Funciones de Conversion 182 Aplica 09 184 Funciones definidas por el usuario 189 Tipos de Funciones 189 Nombrando las funciones : 189 Definiendo el tipo de dato de retorno 190 Invocacién a la funcién 190 Aplica 10 191 Capitulo 7 Base de Datos Conceptos generales 203 Base de Datos 203 El DataBase Painter 203 Atributos adicionales de una columna 204 Utilidad para la manipulacién de datos 204 Utilidad para la administracién de la Base de Datos 204 Creacién de una Base de Datos 205 Clave Primaria 214 Clave Fordnea (ajena) 216 Ingresar Datos a las tablas 218 SQL 220 La sentencia SELECT 220 Consultas Sencillas 223 A&C Editores Indice Creacién de consultas con Adaptive Server Anywhere 6.0 Seleccién de todas las columnas (SELECT *) Campos Calculados Seleccion de la fila (clausula WHERE) Filas duplicadas (DISTINCT) Condicién de busqueda Ordenacién de los resultados de una consulta (clausula ORDEN BY) Consultas Sumarias Consultas Agrupadas (clausula GROUP BY) Condicién de busqueda de grupos (clausula HAVING) Capitulo 8 El DataWindow El Objeto DataWindow Utilizando DataWindow Fuente de Datos Seleccién de Datos Estilo de presentaci6n Buffer Primario Construccién del Objeto DataWindow El control DataWindow Control de edicién Procesamiento de entradas Validacién de datos Secuencia de validacién Actualizacién de la Base de Datos Manipulacién de los contenidos del control de Funciones Objeto de Transaccién Transacciones Objeto Transaccion Aplica 11 Aplica 12 Aplica 13 Aplica 14 224 225 227 232 235 235 239 240 242 243 247 248 249 249 250 255 256 261 261 261 262 263 263 264 264 265 265 266 274 280 285 291 A&C Editores Indice M Aplica 15 297 Aplica 16 307 Aplica 17 312 Capitulo 9 DataWindow Avanzado Manejo de imagenes 321 FileOpen 321 FileRead 322 FileClose 322 GetFileOpenName 323 SetPicture 323 UpDateBlob 324 SelectBlob 325 Aplica 18 327 Validacién del ingreso de datos 335 Proceso orientado al campo 335 Proceso orientado a la fila 335 Proceso orientado a la actualizacién 335 Eventos ItemChanged e ItemError 336 Aplica 19 338 Capitulo 10 SQL Adicién de datos a la Base de Datos 347 La sentencia INSER de una fila 348 La sentencia INSERT multifila 348 Supresion de datos de la Base de Datos 348 La sentencia DELETE 349 Modificaci6n de datos en la Base de Datos 349 La sentencia UPDATE 349 Actualizacién de todas las filas 350 Cursores 350 Sentencias en el uso de cursores 350 Aplica 20 353 Aplica 21 359 A&C Editores Indice Capitulo 11 Aplicaciones MDI Tipos de Ventanas La funcién Open y sus variaciones Aplica 22 Aplicaciones MDI Componentes de Ia Interfaz MDI Construccién de aplicaciones MDI Aplica 23 Notas sobre ODBC Cémo utilizar ODBC una aplicacion para tener Acceso a sistemas DBMS 369 370 371 385 385 387 389 415 416 A&C Editores Sybase PowerBuilder Enterprise Version 7 Capitulo 1 Introduccién Capitulo 1 - Introduccion Introduccién PowerBuilder 7.0 es un entorno grafico de programacién que esta compuesto de diferentes herramientas que permiten el desarrollo rapido de aplicaciones. Con esta herramienta se puede crear aplicaciones Cliente-Servidor de dos niveles de forma tradicional, a través de ODBC o drivers nativos para la Base de Datos. El lenguaje de programacién se llama Power Script y posee una implementacién de la programacién orientada a objetos muy completa. Con PowerBuilder 7.0 podemos crear objetos genéricos, crear herencias de estos y generar objetos mas especializados, implementar la herencia multiple a través de 'os objetos de servicio finalmente crea aplicaciones _reutilizando el cddigo al maximo. Una aplicacién Cliente-Servidor pone en comunicacién una estacién de trabajo con un servidor de Base de Datos central. Con la utilizacién generalizada de las redes y estaciones de trabajo las aplicaciones Cliente-Servidor se han hecho mas A&C Editores 15 PowerBuilder 7.0 Enterprise populares. En el desarrollo del libro se explicara el uso de las diferentes herramientas que posee PowerBuilder 7.0 para construir aplicaciones Cliente-Servidor de una manera rapida. El modelo Cliente-Servidor consiste en utilizar una Base de Datos que reside en una maquina separada denominada servidor. El software de gestion de Base de Datos se ubica en el servidor mientras que el software de aplicacién se ejecuta en las estaciones de trabajo remotas (cliente). Las aplicaciones que se ejecutan en las estaciones cliente acceden a los datos que se encuentran en el servidor mediante paso de peticiones a través de la red. Las aplicaciones Cliente-Servidor pueden cubrir una gran cantidad de arquitecturas y sus componentes se pueden crear a través de numerosas herramientas independientes relacionadas con los lenguajes de programacién. Instalacién de PowerBuilder 7.0. Para instalar PowerBuilder 7.0 se. debe insertar el CD titulado N? 1 en la unidad lectora del CD. PowerBuilder 7.0 forma parte del conjunto de productos denominado Enterprise Application Studio 3.0 que incluye las siguientes aplicaciones: - Jaguar 3.0 - PowerBuilder 7.0 - PowerJ 3.0 - PowerSite 7.0 - PowerDynamo 3.0 - Adaptive Server Anywhere 6.0 - AppModeler 6.1.2 - Application Integrator 3.0 (CICS and Stored Procs) Debemos explorar el CD y dar doble clic en el icono Setup tal como se muestra en la figura siguiente: 16 A&C Editores Capitulo 1 - Introduccién ogticade: TPAR/997 06:30 9H Tamafi: 59 KB Se debe de ingresar la clave para poder continuar con la instalacién del producto: ee kee A&C Editores 17 PowerBuilder 7.0 Enterprise Al dar un clic en el botén Next> se presentara las siguientes pantallas: ToOLS FAG dGRaM AcUL Hs This OVE 18 A&C Editores Capitulo 1 - Introduccion Debe ingresar en las cajas de texto su nombre y el nombre de la compaiiia y luego dar un clic en el botén Next>. A&C Editores 19 PowerBuilder 7.0 Enterprise EX I Debemos seleccionar los componentes que se desea instalar, SS y ay oH oS . 4 ee tek eer | Se 20 A&C Editores Capitulo 1 - Introduccién Para instalar Adaptive Server Anywhere 6.0.1 que es la version del manejador de Base de Datos que reemplaza a SQL Anywhere 5.0. Se debe ingresar la informacion siguiente: Cee a tres = A&C Editores 21 PowerBuilder 7.0 Enterprise En la siguiente pantalla indicar la ruta donde se instalara el producto. Ged nywhere 6.0 . eine Explorer + [Logitech Senseware Microsoft Developer Network L- [Microsoft SOL Server 7.0 _ [Minrosott Visual Stadio 6.0 as 22 A&C Editores Capitulo 1 - Introduccion Seer Beane Server Anywhere 6.0.1 oe ae et A&C Editores 23 PowerBuilder 7.0 Enterprise Finalmente dar un clic en el boton Finish para terminar la instalacién. a eee Para el producto Power Dynamo 3.0 seguir los mismos pasos anteriores. A continuacién indicaremos como instalar PowerBuilder 7.0 Enterprise: 1) 2) 3) 4) Se debe indicar la ubicacién donde se instalara PowerBuilder. Indicar la ubicacién donde se guardaran los archivos compartidos. Sefialar el tipo de instalacién que desea efectuar. Si eli Custom se debe indicar los componentes a instalar. Luego debe dar un clic en el botén Next da la siguiente pantalla: 24 A&C Editores Capitulo 1 - Introduccién Ptamete} 25 A&C Editores PowerBuilder 7.0 Enterprise En la siguiente ventana debemos elegir la opcion Custom que permite realizar una instalacién personalizada. De la siguiente pantalla seleccionar los siguientes componentes a instalar: - OLE DB Drivers (Drivers para conectar a OLE DB data source). . - JDBC Drivers (Drivers para conectar a JDBC data source). ODBC Database Drivers (Drivers para conectar a ODBC data source). Foundation Class Library (PFC) (Un conjunto reusables de clases que permite construir clases y librerfas). Luego de seleccionar debe dar un clic en el boton Next. 26 A&C Editores Capitulo 1 - Introduccion Garis 13973 iy} OLE DB Drivers STT3K | |v Native Database inteaces Vs0K lh {inicio | |intemet Explorer eee ae es A&C Editores 27 PowerBuilder 7.0 Enterprise Siena ka ae Ye 28 A&C Editores Capitulo 1 - Introduccién Debe continuar de forma similar para instalar los demas Productos; al finalizar obtendré los siguientes productos: Power Site 7.0 Power Designer AppModeler 6.1.2 - Application Integrater 3.0 - IforMaker 7.0 - PowerJ 3.0 - SurfSide Video 3.0 En este momento debe instalar el CD titulado N° 2 para terminar con la instalacién. - Online Books Install La interfaz grafica de PowerBuilder 7.0 Para inicializar PowerBuilder 7.0 en el entorno Windows 95 / 98 dar un clic en el botén Inicio y seleccione Programas, luego Sybase - PowerBuilder 7.0— PowerBuilder 7.0 So See aie . ee aa oe A&C Editores 29 PowerBuilder 7.0 Enterprise Al dar un clic en PowerBuilder 7.0 se mostrara la ventana de didlogo PowerBuilder requieres an application que permite crear una nueva aplicacion. Template Jaguar. CM/S Automation 4 Application Component — Component Server | ah * Assistant 4 En la ventana anterior seleccionar el icono — *p#icaton para crear una nueva aplicacién, finalmente dar un clic en el botén OK. A continuacién se mostraré la siguiente pantalla donde debera digitar el nombre de la aplicacién y el nombre de la libreria, luego dar un clic en el botdn Finish: Para el ejemplo a crear debemos indicar el nombre de la aplicacién (Aplica01) y ademas el nombre de la libreria (Aplica01 .pbl). Una libreria es un archivo con extensién .pb! donde se almacena los diferentes objetos de una aplicacion. 30 A&C Editores Capitulo 1 - Introduccién Scere Esta es la interfaz principal de PowerBuilder que Presentan una barra de menus con las opciones: File, Window y Help. Debajo de la barra de menus se presenta una barra que contiene una serie de iconos que se conoce como PowerBar. A&C Editores 31 PowerBuilder 7.0 Enterprise Aplica 01 Desarrollar una aplicacién que permita obtener una pantalla de presentacién similar a la siguiente figura (Grafico 01): Grafico 01 Esta aplicacién presenta 2 controles (Un control Picture y un control CommandButton) y una ventana principal. El objeto ventana El objeto ventana contiene los controles de nuestra aplicacién, empezaremos indicando como construir una nueva ventana. De la interfaz principal seleccionar el primer icono (New) (Gratico 02): 32 A&C Editores Capitulo 1 - Introduccién Se activara la ventana de didlogo New, seleccionar de la ficha Object el icono Window (Gréafico 03): Structure Function Connection. Object Wizard COM/MTS Automation Compone... Server Wizaid oe A&C Editores 33 PowerBuilder 7.0 Enterprise En la pantalla anterior se presenta el entorno que permite crear una nueva ventana, presenta cuatro zonas bien definidas que pasamos a describir brevemente: A. El marco de la ventana, donde ubicaremos los controles para crear la interfaz grafica. B. Paginas de propiedades, que permite cambiar las diferentes propiedades del objeto o control activo (Control activo o Seleccionado). C. Script, esta ventana se utiliza para escribir el cédigo de cada uno de los eventos de los diferentes objetos. D. Control List, es una ventana que presenta los diferentes objetos de la ventana actual. Para trabajar con mayor comodidad cerramos las ventanas Control List y Script (Grafico 05). - = — oS eee E Grafico 05 34 A&C Editores Capitulo 1 - Introduccién fi oS Para colocar los controles dar un clic en el icono ee el cual presentara todos !os controles disponibles de PowerBuilder 7.0 (Grafico 06): Los controles que se.pueden ubicar en la ventana son: CheckBox CommanButton DataWindow DropDownListBox ListBox SingleLineEdit, StaticText, etc. eo eceoe Gréfico 06 Seleccionamos el icono Picture Control a que permite mostrar graficos. Ubicamos el puntero del mouse dentro de la ventana y damos un clic, obtendra una pantalla como la siguiente (Grafico 07): A&C Editores 35 PowerBuilder 7.0 Enterprise Para cambiar las propiedades seleccionamos el objeto, y en la pagina de propiedades realizamos los cambios respectivos. Si la ventana de propiedades esta cerrada para activarla dar un clic con el botén derecho del mouse, se presentara un menu contextual del cual seleccionamos la opciédn Properties, esta opcidén nos permite cambiar el nombre del objeto, el nombre del archivo que se mostrara en el control, etc. (Grafico 08): Nota: Para crear la interfaz grafica del usuario se debe ubicar en la ventana los diferentes controles que conforman dicha interfaz para luego cambiar las propiedades que permitan crear una_ interfaz funcional y de facil manejo. A esta fase del desarrollo de la aplicacion se le conoce como la fase de disefio, y cuando la aplicacidn se encuentra en ejecucion se dice que esta en la fase de ejecucién. 36 A&C Editores Capitulo 1 - Introduccién ee 2 Grafico 08 | Para cambiar las propiedades de la ventana proceder de la siguiente manera: Seleccionar la ventana dando un clic en una Zona libre de ella, de la pagina propiedades seleccionar las Propiedades que se desean cambiar, de la pestafia General cambiar la propiedad Title por Mi primera aplicacién (Grafico 09): oe | ae a _ 8 = A&C Editores 37 PowerBuilder 7.0 Enterprise Repita los pasos anteriores para el control CommanaButton. Solucién En la ventana de la primera aplicacién a desarrollar observamos los siguientes controles: Un control Picture Un control CommandButton bal se) Cambiar las propiedades Control! Propiedad Valor Window Title Mi primera aplicacién BackColor Cream pt Name p_imagen PictureName c:\Pb70\bmp\Dibujo1.bmp cb_t Name cb_salir Text &Salir La propiedad Title de la ventana presenta el titulo de la ventana en este caso la cadena de caracteres Mi primera aplicacion. La propiedad BackColor nos permite modificar el color del fondo de la ventana para resaltarla o hacerla mas agradable. Todos los controles que se ubiquen en la ventana tienen una propiedad comun que es la propiedad Name, esta propiedad se utiliza para identificar los objetos dentro de la aplicacion especialmente cuando se escribe cddigo. Una vez colocado los controles y. cambiar las propiedades respectivas se presentara la siguiente pantalla (Grafico 10): 38 A&C Editores Capitulo 1 - Introduccion Es — oo — a Grafico 10 Grabar la ventana Para grabar el objeto ventana recién creado seleccionar del menu File — Save tal como se muestra a continuacién (Grafico 11): sr A&C Editores 39 PowerBuilder 7.0 Enterprise A continuacién se presentara una ventana de didlogo que nos permitira digitar el nombre de la ventana, por ejemplo: w_aplica01 (Grafico 12): aed oe e ee uae ee ee Herons ee sb sees "Grafico 12 Para obtener una vista preliminar de la ventana dar un clic en el icono . Para volver al modo de disefio se debe cerrar la ventana con el icono Escribir el cédigo de la aplicacién Para que la aplicacién se ejecute se debe escribir el cédigo en el evento Open de la Aplicacién que permita abrir la ventana w_aplica01. 40 A&C Editores Capitulo 1 - Introduccién Pasos a sequir: 1. Seleccionar del PowerBart el icono | se presentaré la ventana de didlogo Open, del control DropDownListBox Object Type: seleccionar Applications tal como se muestra en el grafico (Grafico 13): 2. Dar un clic en el botén OK se presentara una ventana de edicién en la cual se debe escribir el cédigo correspondiente al evento seleccionado (Grafico 14): Open (w_aplica01) A&C Editores 41 PowerBuilder 7.0 Enterprise 3. Para grabar los cambios cerrar la ventana, luego dar un clic en el botén Side la siguiente pantalla (Grafico 15): 4, Para el objeto cb_salir se escribird el siguiente cddigo: Evento Clicked Objeto cb_salir Close(w_aplica01) 42 A&C Editores Capitulo 1 - Introduccion Ejecutar la aplicacion Para ejecutar la aplicacién del PowerBar dar un clic en el icono se mostrara la siguiente pantalla (Grafico16): Grafico 16 Este pequefo ejemplo ha querido demostrar lo facil que es crear aplicaciones en PowerBuilder 7.0, independientemente de la complejidad de su aplicacién usted debe seguir este esquema para construirlo: 1. Crear una libreria e indicar el nombre de la aplicacién. 2. Agregar una ventana y colocar los controles, cambiar las propiedades (incluyendo la ventana). 3. Finalmente escribir codigo para los eventos que usted considere necesario. A&C Editores 43 PowerBuilder 7.0 Enterprise Programacién orientada a objetos La programacién orientada a objetos incorpora elementos que facilita la realizacion de interfaces graficas de usuario. PowerBuilder 7.0 tiene herramientas que facilitan la realizacién de programas orientados a objetos, estas herramientas se denominan Painters. Con los lenguajes de programacién tradicionales se describen programas los cuales estan formados por médulos que se ejecutan en una determinada secuencia, los datos pasan de un lugar a otro entre las rutinas del programa. El modelo de programacién difiere en un entorno orientado a objetos, en el que se crean objetos que corresponden a eventos y que se comunican entre si por medio de mensajes. Objetos y Atributos (Propiedades) Una aplicacién PowerBuilder utiliza objetos tales como una ventana, un control, un dibujo o un icono. Los objetos tienen atributos, por ejemplo una ventana (Window) tiene atributos tales como tamajfio, color, titulo, etc. Estos objetos pueden incluir a su vez a otros objetos como por ejemplo: !a ventana principal de una aplicacién puede incluir diversos controles y un objeto menu. Métodos Una operacién que requiere informacion sobre un objeto © que lo cambia de alguna manera se denomina método. En PowerBuilder los métodos se crean_ escribiendo los procedimientos, por ejempio un procedimiento que abre una ventana 0 un procedimiento que la cierra son métodos de dicha ventana. En PowerBuilder los métodos son los procedimientos asociados con los diferentes objetos. 44 A&C Editores Capitulo 1 - Introduccion Eventos Los procedimientos pueden incluir funciones, una funcién es un procedimiento con nombre que acepta argumentos de entrada y devuelve uno o més valores. Estas funciones pueden ser reutilizadas. En una aplicacién PowerBuilder es el usuario el que determina la secuencia de eventos de la misma. El usuario comienza la aplicacion, abre y cierra ventanas y provoca eventos como por ejemplo al dar un clic sobre un botén Abrir o Cerrar. Con PowerBuilder se puede realizar Pprocedimientos que determinan la respuesta a una evento. Un objeto ventana puede contener un procedimiento que responda al evento Open o un procedimiento que responda al procedimiento Close. Cuando una aplicaci6n utiliza un objeto, estan a su disposicién los eventos y los correspondientes procedimientos del objeto. Mensajes Cuando una aplicacién se ejecuta los objetos se comunican entre si por medio de mensajes. Los mensajes enviados entre los objetos de una aplicacién controlan a esta, ‘Supongamos un objeto ventana que contiene un objeto botén de finalizacién, cuando la aplicacién se ejecuta y se presenta la pantalla, aparece el botdn finalizar, Al hacer clic sobre dicho botén se cierre la ventana que esta abierta. Al hacer clic en el bot6n se provoca el evento Clicked de dicho botdn, el Procedimiento de este evento envia un mensaje de cierre a la ventana que contiene el botén. La ventana lo recibe provocando el evento Close de la ventana ejecutandose su correspondiente Procedimiento. Objetos Es una combinacion de cédigo y datos y que se puede tratar como una unidad. A&C Editores 45 PowerBuilder 7.0 Enterprise Clases Un lenguaje de programacién tradicional _contiene diferentes _tipos de datos predefinidos, tales como Integer, Real number, y String. Con estos lenguajes tradicionales se pueden crear nuevas variables; estas nuevas variables deben ser de uno de los tipos predefinidos. En algunos lenguajes se pueden crear tipos de datos nuevos y crear variables pertenecientes a dichos tipos. Un lenguaje de programacién orientada a objetos tiene clases en lugar de tipos de datos. Una clase en la programacion orientada a objetos es similar a un tipo de dato en la programacién tradicional. Una definicién de clase es un conjunto de atributos y métodos combinados para definir un objeto. Con un lenguaje de programacién tradicional se crean nuevos objetos a partir de los datos predefinidos. En la programacion orientada a objetos se crean nuevos objetos a partir de los datos predefinidos. Instancias Cada objeto pertenece a una clase. Cuando un programa crea un objeto, esta instanciando el objeto. Una instancia es una manifestacién de una clase, por ejemplo: Lima es una instancia de la clase ciudad. Una ventana denominada w_entrada es una instancia de la clase ventana. Se puede construir un objeto ventana con el Window Painter denominada w_main y archivar el objeto en una libreria. En una aplicacion en ejecucion el procedimiento Open (w_main) abre el objeto ventana, es decir instancia el objeto ventana. Se crean todos los objetos como copias idénticas de sus clases. Una vez que existen como objetos individuales, es posible modificar sus propiedades. Por ejemplo, si dibuja tres Commandbutton en una ventana, cada objeto boton de comando es una instancia de la clase CommandButton. Cada objeto comparte un conjunto de caracteristicas y capacidades comunes. 46 A&C Editores Sybase PowerBuilder Enterprise Version 7 Capitulo 2 Uso de controles Capitulo 2 - Uso de controles Uso de controles Los controles son objetos que se ubican dentro de una ventana. Los controles muestran datos, aceptan datos o validan datos. Los controles responden a una accién del usuario, como Por ejemplo: un clic de raton. Los controles, como cualquier otro objeto, tienen sus propios atributos y eventos. Algunos controles son objetos Estandar Windows, otros son particulares de PowerBuilder 7.0. Ademas, usted puede crear sus propios _controles personalizados. Los controles disponibles se encuentran agrupados de tal manera que si usted da un clic en Ja flecha ike se despliega un conjunto de items, cada uno de los cuales va a representar a. cada uno de los controles disponibles. Seleccionando uno de ellos, se ubicara en la ventana para- construir la interfaz deseada, A&C Editores 49 PowerBuilder 7.0 Enterprise Select |__ PictureButton : CheckBox — StaticHyperLink — =) ,_ StaticText Picture HyperLink GroupBox — <= — Oval Rectangle — L__ SingleLineEdit EditMask — [& Ee |_RichTewteuit HScroliBar _| HTrackBar VTrackBar | VProgressBar DropDownListBox = = | [el ListBox PictureList@ox S Treeview Tab _| i ee Graph OLE —% | UserObject El control StaticText al Se utiliza para mostrar titulos y mensajes. El control StaticText muestra un texto que el usuario puede seleccionar mas no puede modificar desde el teclado, se puede modificar el control StaticText desde el cédigo del programa. Propiedades Aligment (Enumerated) BackColor (Long) Text Especifica el alineamiento del texto en el control. Los valores son: Leftl, Center!, Right!. Especifica un valor numérico correspondiente al color de fondo rango: -2 a 16,777,215. Especifica el texto que se muestra en el control. 50 A&C Editores EI control SingleLineEdit Capitulo 2 - Uso de controles El control SingleLineEdit es una caja que el usuario puede utilizar para ingresar una linea de texto. Usted puede utilizar un control SingleLineEdit para visualiza el contenido de un campo. Propiedades Accelerator (Integer) BackColor (Long) Border (Boolean) BorderStyle (Enumerated) DisplayOnly (Boolean) Enabled (Boolean) Especifica el valor ASCII de la tecla que usted asigna como tecla aceleradora para el control. Especifica un valor numérico correspondiente al color de fondo rango: -2 a 16,777,215. Especifica si el control tiene un borde. Los valores: True el control tiene un borde, False el control no tiene borde. Especifica el estilo del borde del control. Los valores son: StyleBox!, StyleLowerred!, StyleRaised!, StyleShadowBox. Especifica si el texto del control es de sdlo lectura y no permite cambios del usuario. Los valores son: True el texto no puede ser cambiado por el usuario, False el texto puede ser cambiado por el usuario. Especifica si el control esta habilitado (se puede seleccionar). Los valores son: True el control A&C Editores 51 PowerBuilder 7.0 Enterprise puede ser seleccionado, False el contro! no puede ser seleccionado. Limit (Integer) Especifica el maximo numero de caracteres (0 a 32,767) que se pueden ingresar en el control (0 sin limite). Text (String) Especifica el texto que se mostrara en el control. Visible (Boolean) Especifica si el control es visible. Los valores son: True el control es visible, False el control no es visible. Password permite ocultar los caracteres digitados. El control CommandButton Bl El control CommandButton es utilizado para ejecutar una accion cuando el usuario de un clic sobre él. Propiedades Cancel (Boolean) Especifica si el control es el botén cancelar (el botén cancelar dispara el evento Clicked si el usuario pulsa la tecla ESC). Los valores son: True el botén es el botén cancelar, False el boton no es el botén cancelar. Default (Boolean) Especifca si el control es el control por defecto. El control por defecto contiene un borde y es activado cuando el usuario pulse la tecla Enter. 52 A&C Editores Text (String) Visible (Boolean) Capitulo 2 - Uso de controles Especifica el texto que se mostrara enel control. Especifica si el control es visible. Los valores son: True el control es visible, False el control no es visible. El control Picture a El control Picture nuestra un mapa de bits. Usted puede crear la imagen en otra aplicacion o usar un scanner para crearlo. La imagen debe estar almacenado en un formato BMP, RLE o WMF. Propiedades Border (Boolean) FocusRectangle (Boolean) PictureName (String) OriginalSize (Boolean) Width Especifica si el control tiene un borde. Los valores son: True el control tiene un borde, False el control no tiene un borde. Especifica si el control va a mostrar un rectangulo cuando el control tenga el foco. Especifica el nombre del archivo que contenga el grafico. Especifica si las dimensiones del grafico se mantendraén en su valor original. Los valores son: True se mantiene las dimensiones originales, False no se mantienen los valores originales. Especifica el ancho del control. A&C Editores 53 PowerBuilder 7.0 Enterprise Aplica 02 Desarrollar una aplicacién que permita mostrar el nombre del usuario y su respectiva clave de acceso. La clave de acceso tendré una longitud de cinco caracteres, se debe mostrar asteriscos (*) cuando el usuario ingrese algun valor en la caja de texto respectiva. Solucion: 4. Crear una nueva aplicacién, dando un clic en el boton New se observara la ventana de didlogo New dar un clic en la ficha Start Wizards, seleccionar el icono Application. 2. Digitar el nombre de la aplicacién (Aplica02) y el nombre de la libreria (Aplica02). 3. Dar nuevamente un clic en el boton New (a) para crear una nueva ventana, de la ventana de didlogo New dar un clic en la ficha Object, seleccionar el icono Window. 4. Ubicar en la ventana los siguientes controles: - Tres controles StaticTex - Dos controles CommandButton - Dos controles SingleLineEdit - Uncontrol Picture 5. Cambiar las respectivas propiedades de los controles tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Seguridad del Sistema pl Name p_llave PictureName c:\pb70\bmp\secur05 stl Text Ingrese su nombre y contrasefia Font 12, Bold 54 A&C Editores a Capitulo 2 - Uso de controles Control Propiedad Valor st2 Text &Usuario sts Text &Contrasefia sle_1 Name sle_usuario sle_2 Name sle_clave Limit 5 Password v eb Name cb_aceptar Text &Aceptar Default Me Enabled Desactivar cb_2 Name cb_cancelar Text &Cancelar Una vez colocado los controles y cambiar las propiedades se presentard la siguiente pantalla (Grafico 17): se ee ieee. G ae a A&C Editores 55 PowerBuilder 7.0 Enterprise 6. Grabar la ventana con el nombre w_clave. Escribir el codigo de la aplicacién Evento Open Objeto Aplication Open(w_clave) Evento Clicked Objeto cb_aceptar MessageBox("Sistema de seguridad”, "Gracias por su visita: “_, " + sle_usuario.text) Close(w_clave) Evento Other Objeto sle_usuario if{ (en(sle_usuario.text)<> 0) and (len(sle_clave.text)<> 0)) then cb_aceptar.Enabled=true else cb_aceptar.Enabled=false end if Evento Other Objeto sle_clave if{ (len(sle_usuario.text)<> 0) and {len(sle_clave.text)<> 0)) then cb_aceptar.Enabled=true else cb_aceptar.Enabled=false end if Evento Clicked Objeto cb_cancelar close(w_clave) Al ejecutar la aplicacién se mostrara la siguiente pantalla donde digitara el nombre y clave del usuario. Al ingresar los datos se active el botén Aceptar (Grafico 18): 56 A&C Editores Capitulo 2 - Uso de controles Dar un clic en el botén Cancelar del grafico anterior para terminar la aplicacién. EI Objeto Aplicacién El objeto aplicacién es un punto de entrada para una ventana que contiene una serie de controles. El objeto aplicacién contiene una serie de eventos Y Propiedades entre las que podemos mencionar: 1. El evento Open: ocurre cuando el usuario ejecuta una aplicacién. Normalmente en este evento se escribe cédigo que permita activar la ventana inicial de la aplicacién. 2. El evento Close: ocurre cuando el usuario cierra la aplicacion. Para cambiar las propiedades del objeto aplicacion se . debe utilizar la pagina de propiedades. La pagina de propiedades permite establecer las diferentes propiedades del objeto aplicacién como por ejemplo: DisplayName, MicrohelpDefault, DW\MessageTitle, ToolbarFrameTitle, ToolbarSheetTitle. A&C Editores 57 PowerBuilder 7.0 Enterprise Elcontrol Tab El control Tab contiene una serie de paginas donde cada pagina puede a su vez contener controles. Propiedades Aligment (Enumerated) Especifica la alineacion del texto en la etiqueta de cada pagina. Los valores son: Left!, Center!, Right!. BackColor (Long) Especifica un valor numérico correspondiente al color de fondo. Enabled (Boolean) Especifica en que momento el control esta activo. UnderLine (Boolean) Especifica si el texto de tabs esta subrayado. Los valores son: True el texto esta subrayado, False el texto no esta subrayado. El control MultiLineEdit a El contro! MultiLineEdit es una caja donde el usuario puede ingresar y editar mas de una linea de texto. Propiedades BackColor (Long) Especifica un valor numérico correspondiente al color de fondo. BorderStyle (Enumereted) specifica el estilo del borde de un control. Los valores son: StyleBox!, StyleLowered!, StyleRaised!, StyleShadowBox!. 58 A&C Editores Capitulo 2 - Uso de controles TextColor (Long) Especifica un valor numérico que representa el color del texto. VscrollBar (Boolean) Especifica si el control contiene una barra de desplazamiento vertical. Los valores son: True presenta una barra de desplazamiento, False no presenta una barra de desplazamiento. EI control PictureButton Se El control PictureButton muestra una imagen y es parecido al control CommandButton, es usado para ejecutar una accion. Por ejemplo puede usar un botén con una imagen que represente grabar un archivo o cancelar. Los formatos aceptados para el control PictureButton son: Y Bitmaps, con .BMP o .RLE extensién y Windows metafiles, con .WMF extension v GIF v JPEG Propiedades DisabledName (String) Especifica el nombre del archivo que se visualizaré cuando el contro! se encuentra desahilitado, PictureName Especifica el nombre del archivo que contiene el grafico que se visualizara en el control. A&C Editores 59 PowerBuilder 7.0 Enterprise Aplica 03 Desarrollar una aplicacién que permita ingresar los datos de los trabajadores. Usar un control Tab con dos paginas: a) En la primera pagina se debe ingresar los datos generales del trabajador. b) En la segunda pagina se debe seleccionar la condicién del trabajador (Estable 0 Contratado). Si es estable se debe seleccionar la categoria. A continuacién se debe ingresar las horas normales y las horas extras tanto para el estable como para el contratado. En el siguiente cuadro se establece el pago que se realiza segun la condicion del trabajador: [Condicén [si] [estable [8 | [Contratado [6 | En el siguiente cuadro se establece el pago de la bonificacién segun los niveles del trabajador: [Categorias | Pago | Nivel | 30 Nivel Il 20 Nivel Ill 15 Los trabajadores contratados no tienen bonificacién y las categorias sdlo se aplican para los trabajadores estables. Las horas extras se pagan 50% mas de las horas normales ya sea para el trabajador Estable o Contratado. 60 A&C Editores Capitulo 2 - Uso de controles Solucit 1. Iniciar una nueva aplicacién, digitar el nombre de la aplicacién (aplica03) y el nombre de la libreria (aplica03). 2. Crear una ventana (w_aplica04) para colocar los controles y cambiar las respectivas propiedades tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Empleados tab_1 Pointer HyperLink! tabpage_1 Text Datos Generales BackColor Cream PictureName Custom024! TabTextColor Marron TabBackColor Cream stl Text Cédigo: BackColor Cream st_2 Text Apellido: BackColor Cream st_3 Text Nombres BackColor Cream st_4 Text Direccién BackColor Cream st_5 Text Distrito BackColor Cream st_6 Text Teléfono BackColor Cream st7 Text Observacién A&C Editores 61 PowerBuilder 7.0 Enterprise Control Propiedad Valor BackColor Cream sle_1 Name sle_codigo Text wu sle_2 Name sle_apellidos Text =P sle_3 Name sle_nombres Text eu sle_4 Name sle_direccion Text «we sle_5 Name sle_telefono Text we mle_1 Name mle_observacion ddlb_1 Name ddlb_distrito Item Lima Cercado Callao Brena Carabayllo Comas Lince San Borja San Isidro Miraflores Surco eb_i Name cb_nuevo text &Nuevo cb_2 Name cb_salir Text &Salir Tabpage_2 Text Detalles 62 A&C Editores Capitulo 2 - Uso de controles Control Propiedad Valor BackdColor Sky PictureName Custom048! TabBackColor Sky TabTextColor Navy st_8 Text Categoria: BackColor Sky sto Text Horas Normales BackColor Sky st_10 Text Horas Extras BackColor Sky st_it Text Pago por horas Normales BackColor Sky st_12 Text Pago por Horas Extras BackColor Sky st_13 Text Pago total BackColor Sky TextSize 14 st_10 Text Bonificacién sle_6 Name sle_h_normales Text ee sle_7 Name sle_h_extras Text ee sle_8 Name sle_p_normales Text eee DisplayOnly 7] sle_9 Name sle_p_extras Text i A&C Editores 63 PowerB: ler 7.0 Enterprise Control Propiedad Valor DisplayOnly v sle_10 Name sle_pago_total Text aid DisplayOnly v sle_11 Name sle_boni Text «a DisplayOnly “] gb_t Name gb_condicion Text Condicién BackColor Sky rb_1 Name rb_estable Text Estable Checked [v] BackColor Sky rb_2 Name rb_contratado Text Contratado BackColor Sky Ib_1 Name lb_categorias Enabled Item Nivel | Nivel Il Nivel III TextColor Blue cb_3 Name cb_aceptar Text Aceptar Nota: El control ListBox se debe de activar sdlo cuando el trabajador sea estable. 64 A&C Editores Capitulo 2 - Uso de controles Disefio del control Tab A ccontinuacién se describira los pasos a seguir para construir el control Tab. i 1. Seleccionar el icono ei y ubicar en la ventana, tal como se muestra en la siguiente figura (Grafico 20): i oo 4 ee 2. Ubicar el mouse en la zona donde aparece el titulo de la pagina luego dar un clic con el botén derecho del mouse para seleccionar la opcién Insert Tabpage (Grafico 21): oo. A&C Editores 65 PowerBuilder 7.0 Enterprise 3. Para cambiar las propiedades de las paginas seleccionar una de ellas dando clic en el titulo, luego ubicar el puntero del mouse en la parte interior de la pagina para observar las propiedades de dicha pagina. Si la ventana de propiedades no se encontrara activada dar un clic con el botén derecho del mouse y seleccionar del menu contextual la opcién Properties...., esta accién activaré dicha ventana la cual nos permitiré cambiar las propiedades deseadas (Gratico 22): Nota: Al ejecutar la aplicacién y colocar el mouse sobre el titulo de una de las paginas del control Tab el puntero del mouse cambia, para realizar este cambio debe dar un-clic en la ficha Other de la ventana de propiedades dar un clic en el icono de la propiedad Pointer seleccionar el tipo de puntero (Grafico 23). Para que en cada titulo de las paginas del control Tab se visualice un icono, dar un clic en la ficha TabPage de la ventana de propiedades, luego dar un clic en el icono de la propiedad PictureName seleccionar el tipo de icono (Grafico 24) 66 A&C Editores Capitulo 2 - Uso de controles o ie | oe . oe oo oes Una vez colocado los controles y cambiar las propiedades se presentara la siguiente pantalla (Grafico 25): A&C Editores 67 PowerBuilder 7.0 Enterprise | oven [ne 4 rewxe Lobeenacn Declarar una variable global llamada nBoni de tipo int para la ventana w_aplica03 (Grafico 26), esta variable almacenara la bonificacién del trabajador dependiendo de la categoria del trabajador. Para declarar la variable de la ventana Script seleccione la opcién Declare dela lista desplegable que presenta los objetos y funciones de la ventana. ee cage Fate: Pee Distato ee | 2) teutee: [a | desea Grafico 26 68 A&C Editores Capitulo 2 - Uso de controles Escribir codigo de Ia aplicacién Evento.Open Objeto Aplication Open(w_aplica03) Evento CloseQuery Objeto w_aplica03 IF messagebox('Sistema de Planillas','Desea salir de la aplicacion',Question!,yesno!)=2 then Return 1 END IF Pagina 01 Evento Clicked Objeto cb_nuevo tab_l.tabpage_1.sle_codigo.text="" tab_1.tabpage_1.sle_nombres.tex' tab_1.tabpage_1.sle_apellidos. text: tab_1.tabpage_1.sle_direccion.text= ddlb_distritos.text="" tab_l.tabpage_1.sle_telefono.te: tab_1.tabpage_1.mle_observacion.text="" tab_1.tabpage_1.sle_codigo.setfocus() tab_1.tabpage_2.rb_estable.checked=False tab_l.tabpage_2.rb_contratado.checked=False integer li_Index li_Index = tab_l.tabpage_2. Ib_categorias.SelectItem(0) tab_l.tabpage_2. b_categorias.enable tab_1.tabpage_2.sle_h_normales.te: tab_1.tabpage_2.sle_h_extras.text=' tab_1.tabpage_2.sle_p_normales.text tab_1.tabpage_2.sle_p_extras.te “i tab_1.tabpage_2.sle_boni.text="" tab_1.tabpage_2.sle_pago_total.text="" A&C Editores 69 PowerBuilder 7.0 Enterprise Evento Clicked Objeto cb_salir close(w_aplica03) Pagina 02 Evento Other Objeto rb_estable IF tab_1.tabpage_2.rb_estable.checked=True THEN Ib_categorias.enabled=True ELSE Ib_categorias.enabled=False nboni=O END IF Evento Clicked Objeto rb_contratado integer li_Index li_Index = tab_1.tabpage_2.Ib_categorias.SelectItem(0) nboni=O Evento SelectionChanged Objeto Ib_categorias IF tab_1.tabpage_2.lb_categorias.selectedIndex()=1 THEN nboni=30 END IF IF tab_l.tabpage_2.lb_categorias.selectedIndex()}=2 THEN nboni=20 END IF IF tab_].tabpage_2.lb_categorias.selectedIndex()=3 THEN nboni=15 END IF 70 A&C Editores Capitulo 2 — Uso de controles Evento Clicked Objeto cb_aceptar int nH, nHE,nHora,nPagol,nPago2,nTotal IF tab_1.tabpage_2.rb_estable.checked=True THEN nHora=8 ELSE nHora=6 END IF nH=Integer{tab_1.tabpage_2.sle_h_normales.text) nHE=Integer(tab_1.tabpage_2.sle_h_extras.text) nPagol=nH*nHora nPago2=nHE*nHora * 1.5 nTotal=nPagol+nPago2+nboni tab_1 -tabpage_2.sle_p_normales.text=String(nPago yD tab_1.tabpage_2.sle_p_extras. text=String(nPago2) tab_l.tabpage_2.sle_boni.text=String(nboni) tab_1 -tabpage_2.sle_pago_total.text=String(nTotal) Al ejecutar la aplicacién se_mostrard la siguiente pantalla donde ingresara los datos del trabajador (Grafico 27): aul | [00001 7. Avellidos: [Rosales Manrrique Ea 2) * Distito | . Av. Cipres 567 [Callao gy jos405a2 Observacién: Profesional en fa carrera profesional de |Computacién e Informatica) A&C Editores 71 PowerBuilder 7.0 Enterprise Dar un clic’en la ficha Detalles para seleccionar el tipo de condicién: Estable o Contratado. Si la condicién del empleado fuese Estable, el control ListBox se activa y se deberd seleccionar el tipo de Categoria. Si es Contratado no se activara el control ListBox, luego ingresar las horas normales y las horas extras, tal como se muestra continuacion (Grafico 28): Al dar un clic en el botén Aceptar para mostrar los pagos respectivos: Pago por horas normales, pago por horas extras y bonificacién tal como se muestra en la siguiente pantalla (Grafico 29): 72 A&C Editores Capitulo 2 - Uso de controles Al dar un clic en el botén Nuevo se limpiardn los diferentes controles contenidos en las dos paginas. Al dar un clic en el botén Salir se presentaré un cuadro de didlogo pidiendo la confirmacién si se desea abandonar el sistema (Grafico 30): Grafico 30 A&C Editores 73 PowerBuilder 7.0 Enterprise El control DropDownListBox El contro! DropDownListBox combina las caracteristicas de un ListBox y una caja de edicién (SingleLineEdit). El usuario puede seleccionar un item o ingresar el dato en la caja de texto. Propiedades AllowEdit (Boolean) Especifica si el usuario puede ingresar texto en la caja de texto del control. Los valores son: True puede ingresar texto en la caja de texto, False.no se puede ingresar texto en la caja de texto. Item{] (String array) Especifica el contenido de la porcién del ListBox del DropDownListBox. Limit (Integer) Especifica el maximo numero de caracteres (0 a 32,767). que el usuario puede ingresar en la opcién del SingleLineEdit del DropDownLlistBox. ShowsList Especifica si los elementos de la lista son visualizados en el control. Si la propiedad es False entonces los elementos no se muestran en el control hasta hacer clic en el. Sorted (Boolean) Especifica si los elementos del control ListBox o del control DropDownListBox estaran ordenados en orden ascendente. Los valores son: True elementos ordenados, False elementos no ordenados. 74 A&C Editores Capitulo 2 - Uso de controles Aplica 04 Desarrollar una aplicacién que permita elaborar una proforma de ventas de articulos de cémputo. Se debe de ingresar los datos del cliente y seleccionar en un control DropDownListBox el distrito donde vive el cliente. En el control DropDownPictureListBox productos se debe seleccionar uno de ellos y luego ingresar la cantidad. Solucion: 1. Iniciar una nueva aplicacién, digitar el nombre de la aplicacién (aplica04) y el nombre de la libreria (aplica04) 2. Crear una ventana (w_aplica04) para colocar los controles y cambiar las respectivas propiedades tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Pedidos stl Text Distrito st2 Text Cliente st_3 Text Direccién st4 Text Productos sts Text Descripcién st6 Text Precio st7 Text Cantidad st_8 Text SubTotal A&C Editores 75 PowerBuilder 7.0 Enterprise Control Propiedad Valor st_9 Text 1G.V st_10 Text Total sle_1 Name sle_cliente sle_2 Name sle_direccion sle_3 Name sle_descripcion sle_4 Name sle_precio sle_5 Name sle_cantidad sle_6 Name sle_subtotal sle_7 Name sle_igv sle_8 Name sle_total ddib_1 Name ddlb_distrito AllowEditing v Items Ate Ancon Brena Comas Lince Rimac San Borja San Isidro ddplb_1 Name ddplb_productos AllowEditing v Items Mouse Monitor Lectora Teclado 76 A&C Editores Capitulo 2 - Uso de controles Control Propiedad Valor PictureName c:\pb70\bmp\mouse.bmp c:\pb70\bmp\monitor.bmp c:\pb70\bmp\cd.bmp c:\pb70\bmp\teclado.bmp PictureWidth 16 PictureHeigth 16 p_marco Name p_marco Visible pl PictureName c:\pb6\bmp\cd.bmp Visible p_2 PictureName c:\pb6\bmp\monitor.bmp Visible p_s PictureName c:\pb6\bmp\mouse.bmp Visible p_4 PictureName c:\pb6\bmpiteclado.bmp Visible cb_1 Name cb_aceptar Text &Aceptar cb_2 Name cb_nuevo Text &Nuevo cb_3 Name cb_salir Text &Salir Una vez colocado propiedades se presentaré la siguiente pantalla (Grafico 31): los controles y cambiar las A&C Editores 77 PowerBuilder 7.0 Enterprise Escribir codigo de la aplicacién Evento Open Objeto Aplication Open(w_aplica04) Evento CloseQuery Objeto w_aplica04 integer nResp nResp=MessageBox("Sistema de pedidos","Desea salir de la aplicacion",Question!,YesNo!) If nResp=2 Then RETURN 1 End If Evento SelectionChanged Objeto ddplb_productos string np string ls_item integer precio p_marco.visible=-TRUE np=ddplb_productos.Text IF np="Lectora" THEN p_marco,Picturename=p_1.PictureName 78 A&C Editores Capitulo 2 - Uso de controles precio=300 END IF IF np="Monitor" THEN p_marco.Picturename=p_2.PictureName precio=600 END IF IF np="Mouse" THEN p_marco.Picturename=p_3.PictureName precio=40 END IF IF np="Teclado" THEN p_marco.Picturename=p_4.PictureName precio=80 END IF sle_descripcion.Text=ddplb_productos.Text sle_precio.Text=String(precio) sle_cantidad.SetFocus() Evento Modified Objeto sle_cantidad Integer nSubTotal Double igv Double nTotal nSubTotal=Integer(sle_cantidad.text) *Integer(sle_precio. text) igv=nSubTotal*0. 18 nTotal=nSubTotal+igv sle_subtotal.text=String(nSubTotal) sle_igv.text=String(igv) sle_total.text=String(nTotal) Evento Clicked Objeto cb_aceptar MessageBox("Sistema de pedidos”,"Datos procesados") Evento Clicked Objeto cb_nuevo sle_cliente.Text="" sle_direccion. Text: sle_descripcion.Te: A&C Editores 79 PowerBuilder 7.0 Enterprise sle_precio.Text=' sle_cantidad.Text: sle_subtotal.Text= sle_igv.Text=' sle_total.Text=' ddlb_distrito.Text="" ddplb_productos.Text="" p_marco.Visible=FALSE sle_cliente.SetFocus() Evento Clicked Objeto cb_salir Close(w_aplica04) Al ejecutar la aplicacién se mostrar la siguiente pantalla (Grafico 32): 80 A&C Editores Capitulo 2 - Uso de controles Cuando termine de ingresar la cantidad dar un clic en et botén Aceptar para visualizar el siguiente mensaje (Grafico 33): Al dar un clic en el botén Aceptar se calculard el SubTotal, IGV y Total. Si desea puede dar un clic en el botén Nuevo para ingresar un nuevo pedido. Dar un clic en el botén Salir para abandonar el programa. Observara una ventana de didlogo que le pide confirmar su salida (Grafico 34): CG oe O Grafico. 34 Al dar un clic en el botén Sise terminaré la aplicacién. A&C Editores 81 PowerBuilder 7.0 Enterprise Resumen El evento CloseQuery El evento CloseQuery ocurre cuando la ventana es cerrada. Cuando el usuario cierre la ventana el cddigo escrito en el evento CloseQuery se ejecuta. El evento Modified El evento Modified ocurre cuando el contenido de un control ha cambiado. El evento SelectionChange EI evento SelectionChange ocurre cuando un item es seleccionado en un control ListBox o DropDownListBox. La funcién SetFocus () La funciédn SetFocus() ubica el foco sobre el objeto especificado o control. La funcién MessageBox La funcién MessageBox muestra e! didlogo MessageBox con el titulo, texto, icono y tipos de botones. La funcién retorna un valor de tipo entero que depende del numero del botén seleccionado (1, 2 0 3). Si ocurre un error la funcién retorna —1. 82 A&C Editores Sybase PowerBuilder Enterprise Version 7 Capitulo 3 Uso del lenguaje Capitulo 3 ~ Uso del Lenguaje Uso del Lenguaje Una aplicacién PowerBuilder 7.0 es una aplicacién dirigida por eventos. El usuario controla la aplicaci6n que se ejecuta provocando eventos. Por ejemplo: cada accién que realiza el usuario como abrir una aplicacion Provoca un evento. El lenguaje utilizado para escribir procedimientos se denomina PowerScript, que es un lenguaje simple y facil de aprender. Los Procedimientos pueden incluir sentencias, ordenes y funciones. PowerScript Basico Los procedimientos pueden contener una gran cantidad de elementos diferentes tales como: Elemento Ejemplo Declaracién de variables integer i_ultimo Sentencia de asignacién i_ultimo = i_ultimo + 1 A&C Editores 85 PowerBuilder 7.0 Enterprise Elemento Ejemplo Flujo de control If i_ultimo > 0 Then ... SQL incrustado Select emp_nombre Into:emp_nombre From empleado Where ... Llamadas a funcién result = sle_emp.Clear() A continuacién se presenta un ejemplo de un procedimiento para el evento Open de una aplicacién. Este procedimiento se ejecutara cada vez que se abra la aplicacion. Este procedimiento es particular porque conecta la aplicacion a la Base de Datos demo de PowerBuilder 7.0. Luego también se muestra como se conecta una aplicacion de PowerBuilder 7.0 en el entorno de desarrollo PowerBuilder 7.0 a una determinada Base de Datos. Ejemplo: /* conexion a la Base de Datos*/ //Ventas Sqica.DBMS="ODBC" Sqlca. DBParm="ConnectString='DSN=ventas:UID=dba:PWD=sq!" Connect; If Sqlca.SqlCode <> 0 Then MessageBox("Error de conexion" + & String(Sqica.SQLCode),Sqica.SqlErrText) Return Else MessageBox("Articulos ","Conexion Conforme") Open(w_aplica21) End If 86 A&C Editores Capitulo 3 - Uso del Lenguaje Comentarios: Las primeras dos lineas del procedimiento son un comentario. El /* inicia el comentario y el */ lo finaliza. También se puede utilizar // para usar el final de una linea como comentario, esto es: aza+1 /lesto es un comentario Tipos de Datos Identificadores Los identificadores en PowerScript identifican objetos tales como variables, etiquetas, funciones, ventanas, controles y menus. Un identificador debe comenzar con una letra y utilizar como maximo cuarenta caracteres, también debe tenerse en cuenta lo siguiente: - No debe contener espacios en blanco. - Puede incluir algunos caracteres no alfabéticos como: Guidn (-) Subrayado (_) Signo de dolar ( $ ) Signo de ntimero ( #) Signo de tanto por ciento ( % ) Los identificadores no diferencian las mayusculas, el identificador Lib_nombre es igual a lib_nombre y lib_Nombre. Aunque se pueden utilizar en un identificador caracteres no alfabéticos tales como un guidn o un subrayado, no es conveniente su uso, en su lugar es mejor utilizar maylsculas y mindsculas. Por ejemplo: es mejor utilizar EjemploVariableNombre que Ejemplo_Variable_Nombre. A&C Editores 87 PowerBuilder 7.0 Enterprise Tipos de datos estandar Cierto tipo de datos son intrinsecos al lenguaje PowerScript, pero la mayoria son tipos de datos que se encuentran en otros lenguajes de programacién. La siguiente tabla muestra los tipos de datos estandar: Tipo de datos Descripcion Blob (Binary Large Object) Datos sin formato, por ejemplo, una imagen 0 un bloque de texto. Boolean True o False. Char 0 Character Es Unico caracter. Date Fecha con el formato: yyyy-mm-dd yyvy, afio desde 1000 a 3000 mm, mes desde 01 a 12 dd, dia desde 01 a 31 Se requiere un guién de separacién, no se permiten blancos. DateTime Combinacién de una fecha y una hora en un Unico tipo de datos. Sdlo se utiliza para leer y escribir en una Base de Datos. Decimal Numeros decimales con signo hasta una longitud de 18 digitos. El punto decimal no se cuenta como un digito. Double Numeros en coma flotante, tiene hasta 15 digitos de precision y su rango va desde: 2.2250738585072E-308 a 1.79769313486232E+308. Integer, Int Son enteros con signo de 16 bits. 88 ® A&C Editores Capitulo 3 - Uso del Lenguaje Tipo de datos Descripcién Long~ Son enteros con signo de 32 bits. El tango va desde: -2,147,483,648 a +2,147483,647, Real Numero en coma flotante con una precisién de hasta 6 digitos. Su tango va desde: 1.175494E-38 a 3.402823E+38. String Contiene desde 0 hasta 60000 caracteres ASCII. Time Hora con el formato: hh:ss:ms hh, numero desde 00 hasta 23 mm, numero desde 00 hasta 59 ss, numero desde 00 hasta 59 ms, numero desde 00 hasta 999999 Unsignedinteger Enteros sin signo de 16 bits. Rango Unsignedint desde: 0 a 65,535. Ulnt Unsignedinteger UnsignedLong or Ulong Enteror sin signo de 32 bits. Rango desde: 0 a_4,294,967,295. Tipos de datos enumerados Los datos enumerados son especificos del lenguaje PowerScript. Los datos enumerados son utilizados en dos formas: * Como-un argumento de funcién. ¢ Para especificar la propiedad de objeto o control. Ejemplo: mle_edit.Alignment=Right! A&C Editores 89 PowerBuilder 7.0 Enterprise Declaraci6n de Variables Variables Para declarar una variable requiere solamente de dos partes: « Eltipo de dato. * Nombre de la variable. Ejemplo: int SubTotal Inicializaci6n de variables, Literales Se puede dar valor inicial a la variable al declararla. Por ejemplo: Int GranTotal = 3, SubTotal = 0 String metodo = “A34” Date hoy = 1998-11-15 Cada uno de los valores utilizados en la expresién anterior para inicializar una variable es un literal. Matrices Un array es una coleccién de elementos indexados de tipos de datos simples. Un array puede tener uno o mas dimensiones, es una serie de valores con un unico nombre. Se especifica su tamajfio al declararla. Por ejemplo: Int A[5] = {1, 2, 3, 4, 5} A los valores contenidos en la matriz se accede por medio de un indice. 90 A&C Editores Capitulo 3 ~ Uso del Lenguaje Matrices Multi-dimensionales Las matrices pueden tener multiples dimensiones. Por ejemplo: una matriz puede tener dos dimensiones. En ese caso se puede pensar en una matriz que tiene filas y columnas. El siguiente ejemplo declara una matriz de dos dimensiones: Int MyScore[2,3] No se puede inicializar una matriz al declarar. Este tipo de matrices puede tener su longitud fija. Alcance de las variables El alcance de una variable determinada desde que parte de una aplicacién puede ser utilizada. La manera de declarar la variable determina su aicance, este puede ser: Global Instancia Shared Local eoee Variables Globales Una variable Global es accesible desde cualquier parte de una aplicacién PowerBuilder 7.0. Se puede acceder a una variable global desde cualquier procedimiento de una aplicacién. Creacién de variables globales En la ventana Declare Instance Variables seleccione del cuadro de la derecha la opcién Global Variables, se mostrara la siguiente caja de didlogo que se utilizara para declarar las distintas variables globales de la aplicacion. A&C Editores 91 PowerBuilder 7.0 Enterprise cat ‘opente_apitesiay Variables Instancia Las variables instancia siempre se corresponden a una instancia de un objeto. Se podria querer asociar una variable con un objeto ventana. Las variables instancia pueden existir para los siguientes objetos: Ventana Aplicacién Objeto de usuario Menu ecee Creacién de variables de instancia En la ventana Declare Instance Variables podra declarar las variables en los correspondientes application painter, windows painter, user object painter 0 menu painter se puede declarar este tipo de variables. 92 A&C Editores Capitulo 3 - Uso del Lenguaje Alcance de las variables Instancia Las variables pueden tener uno de los tres siguientes niveles de acceso: Public Private Protected Cualquier procedimiento de una aplicacién puede acceder a una variable de instancia ptiblica. Las variables instancia se definen para un solo objeto. Sdlo desde el procedimiento escrito para ese objeto se puede acceder a una variable de instancia privada. Se puede acceder a una variable de instancia protegida desde cualquier Procedimiento de un determinado objeto o desde cualquier procedimiento de un objeto descendiente. A&C Editores 93 PowerBuilder 7.0 Enterprise Variables Locales Se puede declarar variables en cualquier procedimiento. Sdlo en el procedimiento se pueden referenciar las variables locales que se definen. Las variables locales guardan valores temporales. Variables Shared Una variable Shared (compartida) al igual que una variable de Instancia se ve y se comparte por todos los Script dentro de una ventana u otro objeto. A diferencia de una variable de Instancia sdlo existe una copia de la variable compartida, sin importar cuantas copias de un objeto pueda abrir. Los siguientes tipos de objetos pueden tener variables compartidas: Ventana Aplicacién Objeto de usuario Menu ccee Sentencia de asignaci6n Una sentencia de asignacién asigna valores a una variable. El signo igual indica asignacién. Por ejemplo: * Cadena1 = “Esto es una cadena” Asigna el valor: “Esto es una cadena” a la variable Cadenat. « Ratio =.05 Asigna el valor .05 a la variable denominada Ratio. 94 A&C Editores Capitulo 3 - Uso del Lenguaje Asignaciones multiples Tal como se muestra en la lista de la seleccién previa sobre operadores, el signo igual es también un operador légico. Por esta razon, PowerScript no soporta asignaciones multiples, Por lo tanto: A=B=C (no es una sentencia legal) Valores de matrices en sentencias de asignacién Se puede asignar multiples valores a una matriz con una Unica sentencia de asignacion. En la sentencia siguiente: Int MatrizA [] //matriz de longitud variable MatrizA =[1,2,3,4] //ala matriz se le asigna diversos valores Operadores adicionales PowerScript tiene también otros operadores que pueden ser de gran utilidad. A cualquiera que haya programado con C le resultaran familiares estos operadores. Operadores de asignacién _Ejemplo Equivale a: ++ i++ i/=2 Si se ha adoptado la practica de utilizar el signo menos en los nombres de variables, sera necesario dejar espacio en blanco entre los operadores — y=. A&C Editores 95 PowerBuilder 7.0 Enterprise Flujo de Control Las siguientes sentencias influyen en el flujo de control de un procedimiento que se esta ejecutando. Estos son las sentencias que pueden controlar el orden e ejecucién de las sentencias de un procedimiento. CALL Se puede crear objetos PowerBuilder 7.0 por medio de la herencia. Cada objeto de la cadena de herencia puede tener sus propios procedimientos. La sentencia Call ejecuta un procedimiento de un objeto ascendente de dicho objeto. Sintaxis: CALL ancestorobject {controlname}::event Parametro Descripcion Ancestorobject El nombre de un objeto que es ascendente del objeto que contiene el procedimiento. Controlname Nombre opcional de un control que se encuentra en el objeto ascendente. Event Evento asociado con el objeto ascendente. Ejemplo: CALL w_empleado::Open Esta sentencia llama al script del evento Open de‘la ventana ancestro. 96 A&C Editores Capitulo 3 - Uso del Lenguaje IF... THEN ELSE Una estructura de ‘control utilizada en el Script, que ejecuta una accién si la condicién ldgica es verdadera. Existen dos tipos de sentencias: IF la simple y IF la multiple. Sentencia If Simple La sentencia IF simple ejecuta un bloque de sentencias cuando la condicién es verdadera. Sintaxis: IF condicién THEN bloquedesentencias1 (ELSE bloquedesentencias2) ENDIF Pardmetro Descripcion Condicién Una sentencia que puede ser evaluada como verdad 0 como falsa. bloquedesentencias1 Conjunto de sentencias que se ejecuta cuando la condicién es verdadera. bloquedesentencias2 Conjunto de sentencias que se ejecutan cuando la opcidn es falsa. En el ejemplo: IF x+1=y THEN x=0 ELSEx=1 x pasara a tener el valor 0 si x mas 1 es igual y. Sixmas 1 noes igual a y, la variable x pasar a tener el valor 1. A&C Editores 97 PowerBuilder 7.0 Enterprise Sentencia If multiple La sentencia IF multiple permite la seleccién de una opcién entre sucesivas condiciones. Sintaxis: IF condicién1 THEN bloquedesentencias1 { ELSEIF condici6n2 THEN bloquedesentencias2 } {ELSE bloquedesentencias3 } ENDIF Parametro Descripcién condicién1, condicién2, condicién3 Sentencia que puede ser evaluada como verdad 0 como falso. bloquedesentencias1 Conjunto de sentencias que se ejecutan cuando la condiciéni es verdadera. bloquedesentencias2 Conjunto de sentencias que se ejecuta cuando. la condicién2 es verdadera. bloquedesentencias3 Las sentencias se ejecuta cuando la condicién2 es falsa En el ejemplo: IF X = Y THEN Beep(2) ELSEIF X=Z THEN 98 A&C Editores Capitulo 3 - Uso del Lenguaje Show (!b_parts); Ib_parts.SetState(5, TRUE) ELSEIF X="" THEN Show (lb_choose) ELSE Hide(cb_empty) Show(cb. full) END IF * Provoca un pitido si X es igual a Y. * Muestra el ListBox y resalta el elemento 5 si X es igual a Z, * -Muestra el Choose ListBox si X es blanco. * Oculta el botén 1 y muestra el botén 2 si ninguna condicién es verdadera. CHOOSE CASE La estructura de contro! Choose Case utiliza el valor de una expresion o de una variable para decidir entre una serie de opciones. El valor de la expresién determina que opcidén seleccionar. Sintaxis: CHOOSE CASE expresioncase CASE expresionopcion bloquedesentencias {CASE expresionopcion bloquedesentencias CASE expresionopcion bloquedesentencias {CASE ELSE bloquedesentencias} END CHOOSE A&C Editores 99 PowerBuilder 7.0 Enterprise Parametro Descripcién expresioncase Expresion cuya evaluacion determina un valor. expresionopcion Expresién que corresponde a una de las opciones del Case. bloquedesentencias Conjunto de sentencias que se ejecutan cuando su correspondiente expresion (expresionopcion) coincide con el valor resultante de las expresioncase. La expresioncase es una expresién de constantes, variables y operadores. Su evaluacién da lugar a un valor. El valor determina que opcién seleccionar. En el ejemplo: CHOOSE CASE Peso CASE IS < 16 Postage=Peso * 0.30 Method = "USPS" CASE 16 to 48 Postage = 4.50 Method = "UPS" CASE 49 to 60 Postage = 5.50 “Method = "UPS" CASE ELSE Postage = 25.00 Method = "FedEx" END CHOOSE Estas sentencias acceden a diferentes procedimientos basados en el valor de la variable Peso 100 A&C Editores Capitulo 3 - Uso del Lenguaje 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 finalizaci6n. 1. Hacer mientras la condicién sea verdadera. DO WHILE condicion bloquedesentencias LOOP 2. Hacer hasta que la condicién llegue a ser verdadera. DO UNTIL condicion bloquedesentencias LOOP 3. Repetir mientras la.condicién sea verdadera. DO bloquedesentencias LOOP WHILE condicion 4. Repetir hasta que la condicion llegue a ser verdadera. BO bloquedesentencias LOOP UNTIL condicién Parametro Descripcién condicion Determina el numero de veces que ejecuta el bloque de sentencias. bloquedesentencias Bloque de sentencias que se ejecutan. A&C Editores 101 PowerBuilder 7.0 Enterprise En el ejemplo: integer A=1,B=1 DO UNTIL A> 15 Beep(A) A=(A+1)*B LOOP, DO UNTIL ejecuta la funcién de Beep mientras A es mayor que 15. En el ejemplo: integer A=1,B=1 DO WHILE A <= 15 Beep(A) A=(A+1)°B LOOP DO WHILE ejecuta la funcién de Beep solo mientras a es menor igual a 15. En el ejemplo: integer A=1,B=1 DO Beep(A) A=(A+1)*B B=B+1 LOOP UNTIL A > 15 LOOP UNTIL ejecuta la funcién Beep hasta que el valor de A sea mayor que 15. 102 A&C Editores Capitulo 3 - Uso del Lenguaje En el ejemplo: integer A=1,B=1 DO Beep(A) A=(A+1)*B LOOP WHILE A <= 15 LOOP WHILE ejecuta la funcién BEEP mientras A es menor igual que 15. EXIT Una sentencia EXIT se puede utilizar en cualquier lugar de un bloque de sentencias. Esta sentencia provoca que finalice la ejecucién del bloque de sentencias y de la iteracion. Sintaxis: EXIT En el ejemplo: intA=1 int contador = 0 DO WHILE A < 20 IF contador = 15 THEN EXIT contador = contador + 1 A=A+1 LOOP, /Na sentencia EXIT pasa el control aqui A=0 La sentencia LOOP se ejecuta mientras el valor de A sea menor que 20. La sentencia IF del bloque de sentencia ejecuta una sentencia EXIT cuando el valor del contador se hace mayor que 15. Esto provoca que finalice la sentencia LOOP y se pase el control a la sentencia que va a continuacion de ella. A&C Editores 103 PowerBuilder 7.0 Enterprise En el ejemplo: intA=1 int contador = 0 FOR contador = 1 TO 25 A=A+10 : IF A> 15 THEN EXIT NEXT La sentencia se sigue ejecutando mientras el valor del contador sea menor que 15. La sentencia IF del bloque de sentencias ejecuta una sentencia EXIT cuando el valor de A se hace mayor que 15. Esto provoca que finalice la sentencia iterativa y pase el control a la sentencia que va a continuacién de la palabra NEXT. CONTINUE Cuando PowerBuilder encuentra una __ sentencia CONTINUE en un DO...LOOP o FOR...NEXT el control pasa al siguiente LOOP o a la sentencia NEXT. Sintaxis: CONTINUE En el ejemplo: integer A=1,B=1 DO WHILE A<11 A=Atl1 B=B+1 IF B > 3 THEN CONTINUE Beep (2) LOOP La funcién Beep se realiza sdlo en las dos primeras iteraciones del LOOP. 104 A&C Editores Capitulo 3 = Uso del Lenguaje En el ejemplo: integer A=1, B=1 FOR A=1 to 10 B=B+1 IF B > 4 THEN CONTINUE Beep (3) NEXT La funcién Beep se realiza sélo en las tres primeras iteraciones del LOOP. FOR... NEXT La sentencia FOR... NEXT ejecuta un bloque de sentencias en un determinado numero de veces. Los argumentos que se especifican en la sentencia determina el numero de veces que se ejecuta e! bloque. Sintaxis: FOR nomvar = inicial TO final {STEP incremento} bloque de sentencias NEXT Parametro Descripcién nomvar Variable que cuenta cada iteracion. inicial 7 Valor inicial que toma la variable al comienzo de la sentencia. final La sentencia finaliza cuando la variable es igual o superior ale valor. incremento La variable se incrementa (1) en este valor en cada bucle. bloque de sentencias Conjunto de sentencias que se ejecuta en cada bucle. A&C Editores 105 PowerBuilder 7.0 Enterprise En el ejemplo: FORN=5TO 25 STEP5 A=A+10 NEXT La variable N se incrementa en 5 en cada iteracién en vez de 1, que es el valor por defecto. El bloque de sentencias se ejecuta 5 veces. La variable N toma los valores 5, 10, 15, 20 y 25. El bloque de sentencias se repite una vez por cada uno de estos valores que toma la variable. HALT La sentencia HALT termina inmediatamente una aplicacién que se esta ejecutando. Una sentencia HALT provoca que la aplicacién se cierre inmediatamente. La sentencia HALT con la opcién CLOSE provoca el evento CLOSE de la aplicacién, la sentencia HALT CLOSE ejecuta el procedimiento del evento close de la aplicacién. Sintaxis: HALT {CLOSE} En el ejemplo: IF sle_palabraclave <> Mipalabraclave THEN HALT Cierra la aplicacion si la variable sle_palabraclave no coincide con la variable Mipalabraclave. En el ejemplo: IF sle_palabraclave <> Mipalabraclave THEN HALT CLOSE Provoca el evento close de la aplicacién si el usuario introduce incorrectamente la palabra clave. eee 106 A&C Editores Capitulo 3 ~ Uso del Lenguaje RETURN Una sentencia RETURN que se encuentra en un Procedimiento detiene la ejecucién de dicho procedimiento y espera a que se produzca el siguiente evento. Cuando un script llama a una funcién o evento y PowerBuilder encuentra una sentencia RETURN en el cédigo, RETURN retorna un control al punto que sigue en la funcién o evento que fue llamado. Sintaxis: RETURN { expresion } En el ejemplo: Beep(1) RETURN Beep(2) La segunda sentencia BEEP no se ejecuta. En el ejemplo: IF Arg2 <> 0 THEN RETURN Argt/Arg2 ELSE RETURN -1 END IF Esta sentencia el resultado de dividir arg1 entre arg2, si es que arg2 es distinto de cero. Retorna —1 si es igual a cero. A&C Editores 107 PowerBuilder 7.0 Enterprise Aplica 05 Crear una aplicacion que permita calcular el pago total a los profesionales independientes que laboran en una empresa. La empresa tiene los siguientes departamentos: Departamento_| Honorarios Profesionales S/. Contabilidad 1000 Administracién | 800 Ventas 700 Solucion: 4. Iniciar una nueva aplicacién, digitar el nombre de la aplicacién (aplica05) y el nombre de la libreria (aplica05). 2. Crear una ventana (w_aplica05) para colocar los controles y cambiar las respectivas propiedades tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Boleta de pago sti Text Cédigo Font Bold, 10 TextColor Blue st2 Text Nombre Font Bold, 10 TextColor Blue st_3 Text Ingreso Font Bold, 12 TextColor Blue st_4 Name st_fonavi Text Fonavi 108 A&C Editores Capitulo 3 - Uso del Lenguaje Control Propiedad Valor Font Bold, 10 TextColor Blue Visible st5 Name st_renta Text Imp. renta Font Bold, 10 TextColor Blue Visible st_6 Name stLafp Text AF.P Font Bold, 10 TextColor Blue Visible st7 Text Neto Font Bold, 10 TextColor Blue sle_1 Name sle_codigo TextColor Red BackColor Yellow sle_2 Name sle_nombre sle_3 Name sle_ingreso BorderStyle StyleBox! Enabled L | sle_4 Name sle_neto BorderStyle StyleBox! Enabled sle_5 Name sle_fonavi Visible A&C Editores 109 PowerBuilder 7.0 Enterprise Control Propiedad Valor BorderStyle StyleBox! Enabled sle_6 Name sle_renta BorderStyle StyleBox! Enabled Cl Visible C] sle_7 Name sle_afp BorderStyle StyleBox! Enabled Visible go_1 Text Departamento rb_1 Text Contabilidad Checked v rb_2 Text Administracion tbh_3 Text Ventas gb_2 Text Aportaciones cbx_1 Text Fonavi cbx_2 Text Imp. renta cbx_3 Text A.F.P pb_1 PictureName c:\pb70\bmp\check.bmp pb_2 PictureName c:\pb70\bmp\nuevo.bmp pb_3 PictureName c:\pb70\bmp\exit.bmp 110 A&C Editores Capitulo 3 - Uso del Lenguaje Una vez colocado los controles y cambiar las propiedades se presentard la siguiente pantalla (Grafico 35): Grafico 35 Escribir codigo de la aplicacién Evento Open Objeto Aplication Open (w_aplica05) El evento Closequery pediré una confirmacién para abandonar la aplicacién. Evento Closequery Objeto w_aplica0s IF messagebox('Sistema de Planillas','Desea salir de la aplicacion',Question!,yesno!)=2 then Return 1 END IF A&C Editores 111 PowerBuilder 7.0 Enterprise Evento Clicked Objeto pb_1 dec msueldo dec aporta1,aporta2,aporta3,neto int mf,mi,ma IF rb_1.checked THEN msueldo=1000 END IF IF rb_2.checked THEN msueldo=800 END IF IF rb_3.checked THEN msueldo=700 END IF IF cbx_l.checked THEN st_fonavi.visible=True sle_fonavi.visible=True st_fonavi.Text= "Fonavi" mf=1 ELSE st_fonavi.visible=False sle_fonavi.visible=False END IF IF cbx_2.checked then st_renta.visible=True sle_renta.visible=True st_renta.Text= "Imp. renta" mi=1 ELSE st_renta.visible=False sle_renta.visible=False END IF 112 A&C Editores Capitulo 3 - Uso del Lenguaje IF cbx_3.checked THEN sle_afp.visible=True st_afp.Text= "A.F.P" ma=1 ELSE st_afp.visible=False sle_afp.visible=False END IF aporta1l=msueldo*0.07*mf aporta2=msueldo*0, 10*mi aporta3=msueldo*0. 13*ma neto=msueldo - aportal - aporta2 - aporta3 sle_ingreso.text=string(msueldo,"S/ #,##0.00") sle_fonavi.text=string(aportal,"S/ #,##0.00") sle_renta.text=string{aporta2,"S/ #,##0.00") sle_afp.text=string(aporta3,"S/ #,##0.00") sle_neto.text=string(neto,"S/ #,##0.00") Evento Clicked Objeto pb_2 sle_codigo.text= sle_codigo.setfocus() cbx_1l.checked=false cbx_2.checked=false cbx_3.checked=false false rb_3.checked=false A&C Editores 113 PowerBuilder 7.0 Enterprise Evento Clicked Objeto pb_3 Close(w_aplica05) Al ejecutar la aplicacién el usuario debe de ingresar los datos personales del empleado, seleccionar en que departamento labora: Contabilidad, Administracisn o Ventas luego indicar que aportaciones se le van a retener: Fonavi, Impuesto a la renta y AFP (Grafico 36): Pilar Alva Bricefio Grafico 36 los datos ingresados son correctos debera pulsar el botén para visualizar los resultados: el ingreso que percibe el empleado, las aportaciones que realiza el empleado y finalmente visualizar el sueldo que le pagara la empresa (Grafico 37): 114 A&C Editores Capitulo 3 - Uso del Lenguaje ja Pilar Alva Bricerio _ 5 oe 1 : : ee Grafico 37 Cuando el usuario desee ingresar un nuevo registro pulsar el botén [Ti (GrAtico 38): | 2 f i j @ - a ae - me : 2 Gutesd - - a - - ae 8 Q ae ‘ - a COE A&C Editores 115 PowerBuilder 7.0 Enterprise Aplica 06 Desarrollar una aplicacién que permita calcular los montos por cantidad de paginas enviadas por fax. Los precios por pagina son: Local 0.5 x pagina Nacional 1.5 x pagina Extranjero 3.0 x pagina Solucion: 1. Iniciar una nueva aplicacion, digitar el nombre de la aplicacién (aplica06) y el nombre de la libreria (aplica06). 2. Crear una ventana (w_aplica06) para colocar los controles y cambiar las respectivas propiedades tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Sistema de Fax pl PictureName c:\pb70\bmp\fax.bmp st Text Telefax Service S.A. Font Bold, 14 TextColor Blue eb_1 Name cb_envios Text &Envios cb_2 Name cb_acerca Text &Acerca... cb_3 Name cb_salir Text &Salir Una vez colocado los controles y cambiar las propiedades se presentara la siguiente pantalla (Grafico 39): 116 A&C Editores Capitulo 3 - Uso del Lenguaje 3. Crear una segunda ventana (w_aplica06a). Para crear la ventana w_aplica06a dar un clic en el botén de Ia ficha Object seleccionar Window. Colocar los controles y cambiar las siguientes propiedades: Control Propiedad Valor Window Title Sistema de Fax sti Text Para TextColor Blue st_2 Text N° de Fax TextColor Blue st3 Text Cantidad TextColor Blue st4 Text Pagina TextColor Blue st_5 Text Categoria Font Regular, 12 TextColor Blue st_6 Text Importe A&C Editores 117 PowerBuilder 7.0 Enterprise Control Propiedad Valor TextColor Blue st7 Text Soles TextColor Blue st_8 Name st_mensaje sle_1 Name sle_para BorderStyle StyleBox! sle_2 Name sle_n1 BorderStyle StyleBox! Limit 7 sle_4 Name sle_cantidad BorderStyle StyleBox! sle_5 Name sle_importe BorderStyle StyleBox! cb_1 Name cb_aceptar Text &Aceptar cb_2 Name cb_cancelar Text &Cancelar cb_3 Name cb_Local Text &Local Enabled cb_4 Name cb_nacional Text &Nacional Enabled cb_5 Name cb_extranjero Text &Extranjero Enabled 118 A&C Editores Capitulo 3 - Uso del Lenguaje Una vez colocado los controles y cambiar las propiedades se presentara la siguiente pantalla (Gratico 40): | | | oy | | es SEE Ue EN aid See aaa Grafico 40 3. Crear una tercera ventana (w_aplica06b), colocar los. controles y cambiar las siguientes propiedades: Control Propiedad Valor Window Title Sistema de Fax mle_1 Text Sistema de Envio de Fax Compaiiia TeleFax S.A. Teléfono 534-2121 Lima ~ Pert BorderStyle StyleBox! BackColor Cream eb_1 Name cb_aceptar Text &Aceptar Default ¥ Una vez colocado los controles y cambiar las Propiedades se presentara la siguiente pantalla (Grafico 41): A&C Editores 119 PowerBuilder 7.0 Enterprise Escribir cédigo de la aplicacion Ventana 01 Evento Open Objeto Aplication Open (w_aplica06) El evento Closequery ocurre cuando una ventana es cerrada, antes que se dispare el evento Close. Se utiliza para confirmar si el usuario desea abandonar la aplicacién. Evento Closequery Objeto w_aplica06é IF MessageBox('Sistema de Fax’, ‘gDesea salir de la Aplicacién?’, Question!, YesNo!) = 2 THEN RETURN 1 END IF Para activar la ventana de envios (w_aplica06a) se programé el evento Clicked del botén cb_envios. 120 A&C Editores Capitulo 3 - Uso del Lenguaje Evento Clicked Objeto cb_envios Open(w_aplica06a) Para activar la ventana acerca (w_aplica06b) se Programé el evento Clicked del botén cb_acerca. Evento Clicked Objeto cb_acerca Open(w_aplica06b) Para salir de la aplicacién se programé el evento Clicked del botén cb_salir. Evento Clicked Objeto cb_salir Close (parent) Ventana 02 . Si el usuario ingreso algun valor a la caja de texto sle_cantidad se debe de activar los botones cb_local, cb_nacional, cb_extranjero, para lo cual se programé el evento Other. Evento Other Objeto sle_cantidad IF len(sle_cantidad.text)<>O0 .THEN cb_local.enabled=True cb_nacional.enabled=True cb_extranjero.enabled=True END IF Cuando el usuario de un clic en el botén Nacional se debe de calcular los montos segun las tarifas establecidas. Lo mismo sucede con los demas botones. A&C Editores . 121 PowerBuilder 7.0 Enterprise Evento Clicked Objeto cb_local st_mensaje.text="Envio a ciudad Local” sle_importe.text =string(integer(sle_cantidad.text)"0.5) Evento Clicked Objeto cb_nacional st_mensaje.text="Envio a ciudad Nacional” sle_importe.text =string(integer(sle_cantidad.text)*"1 .5) Evento Clicked Objeto cb_extranjero st_mensaje.text="Envio a ciudad Extranjero" sle_importe.text =string(integer(sle_cantidad.text)*3) Cuando el usuario de un clic en el botén Aceptar se presenta un cuadro de didlogo y se cierra la ventana actual. Evento Clicked Objeto cb_aceptar MessageBox ("Sistema de Fax" , "Datos Procesados") Close (w_aplica06a) Cuando el usuario de un clic en el botén Cancelar las cajas de texto deben de quedar limpias, los comandos deshabilitados y el enfoque lo debe de tener la caja de texto sle_para. Evento Clicked Objeto cb_cancelar sle_n1.Text=' sle_cantidad.Text: sle_importe.Text: st_mensaje.Text="" sle_para.setfocus() cb_local.enabled=False cb_nacional.enabled=False cb_extranjero.enabled=False 122 A&C Editores Capitulo 3 - Uso del Lenguaje Ventana 03 Cuando el usuario de un clic en el botén Aceptar se debe de cerrar la ventana actual. Evento Clicked Objeto cb_aceptar close(w_aplica06b) Cuando se ejecute la aplicacién obtendra la siguiente pantalla con tres botones: Envios, Acerca... y Salir usted podra dar clic en cualquiera de los tres botones(Grafico 42): Rcerie Grafico 42 Si damos un clic en la opcién Envios se mostrard la siguiente pantalla, donde se ingresara los datos que pide dicha ventana (Grafico 43): A&C Editores 123 PowerBuilder 7.0 Enterprise : : [Esther Femandez Loayza 4895854 12 “36 nvio a ciudad Extranjero Grafico 43 Ai dar un clic en el botén Aceptar se visualizara la siguiente ventana de didlogo que nos permitiré cerrar dicha ventana (Grafico 44): OO Ree sou Cuando seleccione la opcién Acerca... se presentara una pantalla mostrando el siguiente didlogo (Grafico 45): 124 A&C Editores Capitulo 3 - Uso del Lenguaje cur Sistema de Envio de Fax Cornpafiia TeleFax S.A. Teléfono 534-2121 Lima - Pert fo So Finalmente si seleccionamos la opcidn Salir se Presentara una caja de didlogo para pedir la confirmacién del usuario para abandonar la aplicacién (Grafico 46): Sistema de Fax Hy Speer a > 6 ae: — Si presiona el botén Sj abandonardla aplicacién y si presiona el botén No retornara a la pantalla anterior. A&C Editores 125 PowerBuilder 7.0 Enterprise Uso de prefijos en el nombre de los controles Cuando usted crea un control en una ventana PowerBuilder asigna un nombre Unico que es la concatenacion de un prefiio y un numero correlativo. A continuacién presentaremos un listado de los prefijos utilizados en el nombre de los controles: Control Prefijo CheckBox cbx_ CommandButton cb_ DataWindow dw_ DropDownListBox ddlb_ DropDownPictureListBox ddplb_ Graph gr GroupBox gb_ HProgressBar hpb_ HScrollBar hsb_ HTrackBar htb_. Line In_ ListBox Ib_ ListView Iv_ MultiLineEdit mle_ OLE 2.0 ole_ Picture Pp. PictureHyperLink phi_ PictureButton pb_ PictureListBox pib_ RadioButton rb_ Rectangle tl RichTextEdit rte_ RoundRectangle re SingleLineEdit sle_ StaticText stl StaticHyperLink shl_ Tab tab_ TreeView tv User Object uo_ VprogressBar vpb_ 126 A&C Editores Sybase PowerBuilder Enterprise Version 7 Capitulo 4 Ventanas Capitulo 4 - Ventanas Ventanas La interfaz entre un usuario y una aplicacién PowerBuilder 7.0 es una o més ventanas. El usuario interactia con la aplicacién en ejecucidn a través de la ventana activa. Las ventanas pueden mostrar informacién o responder a acciones del teclado o del ratén. El usuario puede introducir informacion en una ventana. Durante la utilizacién de una aplicacién, las ventanas se abren y cierran como respuesta a una orden del usuario. Estilo Una ventana, como cualquier otro objeto PowerBuilder 7.0, tiene atributos y eventos. Los atributos de la ventana controlan su apariencia y comportamiento. Por ejemplo, una ventana tiene atributos que controlan su tamafio y forma, o posiblemente su capacidad de ser redimensionada o ser visible, A&C Editores 129 PowerBuilder 7.0 Enterprise Los atributos de una ventana, tomados en conjunto, determinan el estilo de la ventana. El estilo de la ventana determina su apariencia y comportamiento. Construccién de una nueva ventana Utilice del PowerBar el icono i a continuacién observaremos la ventana de didlogo New seleccionar la ficha Object seleccione el icono Window para crear una nueva ventana. Custom Class Standard Clacs Custom Visual Extemal Visual Standard fsual Menu Stucture Funetion Connection Object Wizard COM/MTS Automation Compone... Server Wizard Dar un clic en el botén OK se presentara la Ventana de Distribucién (Layout) donde se colocaran los controles, ademas se-activan la Ventana de Propiedades (Properties) para realizar los cambios en las propiedades de la ventana y la Ventana Script para escribir el cddigo de los diferentes eventos de la ventana. 130 A&C Editores Capitulo 4 — Ventanas or] ea |sail etal Yin Shoe Grabar la ventana Para archivar este objeto ventana seleccione la opcién Save del mend File. Archive esta ventana con el nombre w_aplica07 como se muestra en la siguiente ilustracién. Observe que hay también un espacio para adjuntar un comentario con el nuevo objeto ventana. Observe también que aparece la via de acceso a la libreria. Esta deberia mostrar la via de acceso a la libreria de su aplicaci6n. Si desea tener una copia de la ventana actual puede utilizar la opcion Save A: la cual conduce a la ventana de dialogo Save Window similar al caso anterior. En el caso de no realizar cambios en la ventana actual la opcién Save esta deshabilitada, lo mismo ocurre con el icono correspondiente del PainterBar. A&C Editores 131 PowerBuilder 7.0 Enterprise Save Window 2 4 | a | ese oe i — ESLLEBE LNG! ee L Abrir una ventana existente Para abrir una ventana existente en la e aplicacion actual se debe dar un clic en el icono Open del PowerBar luego se observard la ventana de didlogo Open del control Object Type: seleccionar el objeto Window, esta accion presentara una lista de todas las ventanas creadas en la aplicacién actual, usted debe seleccionar la ventana que desea abrir tal como se muestra en el grafico siguiente, luego dar un clic en el boton OK. 132 A&C Editores Capitulo 4 - Ventanas . pe ca _ s Ae ee a Abrir una ventana existente en otra aplicacién Si desea abrir una ventana existente en otra aplicacién debe realizar los siguientes pasos: 1. Dar un clic en el icono a Select Application para seleccionar la aplicacién. Primero elegir la libreria (.pbl) y luego seleccionar el nombre de la aplicacion. A&C Editores 133 PowerBuilder 7.0 Enterprise ~ Z sos mie a Se S Se A + a : 7 2. Dar un clic en para visualizar las diferentes aplicaciones que se encuentran en Ia libreria. Be aka acral —— sma teE e © {BB apical6 abl = EES a i || i aes cee 7 — ] ee 134 A&C Editores Capitulo 4 - Ventanas 3. Seleccionar la aplicacion at BIRT y dar en el botén OK. 4. Finalmente dar un clic en a Open del PowerBar se observara la ventana de didlogo Open seleccionar la ventana a abrir tal como se muestra en el grafico siguiente, luego dar un clic en el botén OK. ae eo _ a A&C Editores 135 PowerBuilder 7.0 Enterprise Tipos de Ventana En PowerBuilder se puede elegir entre seis tipos de ventanas dependiendo de la funcién que se desee dar a dicha ventana. Los tipos de ventana son: main (principal). child (hija). popup (emergente). response (de respuesta). estructura MDI (MDI Frame —- Interfaz Multiple de Documentos). estructura MDI con microayuda (MDI Frame with microhelp). NALA NS En la ventana de Propiedades seleccionar de Windows Type el tipo de ventana. Dar un clic 1. Ventana principal (Main) Una ventana principal (Main) es la primera ventana que aparece en una aplicacién. Es una ventana aislada, y opera independientemente de otras ventanas de la aplicacién. La ventana w_aplica07 es una ventana principal. Esta es la eleccién por defecto para w_aplica07. 136 A&C Editores Capitulo 4 - Ventanas i eeeieie 2. Ventana hija (Child) Una ventana child (hija) muestra los estados de los elementos de la ventana Padre. Una ventana hija es secundaria respecto a una ventana padre, solamente se le permite existir dentro del marco de su ventana Padre. Por lo tanto, la ventana hija se cierra automéaticamente cuando se cierra la ventana padre. Una ventana hija no es nunca una ventana activa. A&C Editores 137 PowerBuilder 7.0 Enterprise 3. Ventanas emergentes (Popup) Las ventanas popup (emergentes) normalmente muestra informacién. Ejemplo, la ayuda en la linea. Una ventana emergente siempre se muestra en una ventana padre. La emergente no puede estar detrés de la ventana padre. Al contrario que una ventana hija, se puede mostrar fuera del marco de la ventana padre. Al minimizar la ventana emergente, se muestra el icono fuera de la ventana padre cerca de la parte inferior de la pantalla. Al_minimizar la ventana padre, también se minimiza la ventana emergente. A erclaea perenne ety ct ra aed) 4. Ventanas de respuesta (Response) Una ventana response (de respuesta) muestra un mensaje de error o aviso, Una ventana de respuesta puede requerir del usuario informacién critica. Una ventana de respuesta a menudo solicita al usuario informacién necesaria antes de poder continuar con el trabajo. 138 A&C Editores Capitulo 4 - Ventanas Una ventana de respuesta es la aplicacién modal; por lo tanto, el usuario no puede minimizar la ventana. Puesto que la ventana es modal, el usuario no puede seleccionar otra ventana de la aplicacion en ejecucién mientras se muestra la ventana de respuesta. El usuario puede utilizar ventanas de otras aplicaciones en ejecucién mientras se presente una ventana de respuesta. La ventana de respuesta permanece activa hasta que el usuario responda. Es decir, la ventana de respuesta permanece visible hasta que el usuario realiza una actividad especificada por la ventana de respuesta. ete a — oe o . —- oo ae a ee 4 3 ee | . 8 oe 5. Ventana MDI Una ventana MDI es una ventana conocida como marco que contiene otras ventanas llamadas hojas. Las descripciones de ventanas MDI (Interfaz Multiple de Documentos — Multiple Document Interface) se incluyen en un capitulo posterior. A&C Editores 139 PowerBuilder 7.0 Enterprise Aplica 07 Desarrollar una aplicacién que permita visualizar los diferentes tipos de ventanas. Soluci6n: 1. Iniciar una nueva aplicacién, digitar el nombre de la aplicacién (aplica07) y el nombre de Ia libreria (aplica07). 2. Crear una ventana (w_aplica07) para colocar los controles y cambiar las respectivas propiedades tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Ventana Principal Icon Window! BackColor White gb_1 Text Tipo de ventana BackColor White cb_1 Name cb_popup Text &Popup Default v eb_2 Name cb_child Text &Child ceb_2 Name cb_response Text &Response Una vez colocado los controles y cambiar las propiedades se presentara la siguiente pantalla (Grafico 47): 140 A&C Editores Capitulo 4 - Ventanas 2 oF oO Grafico 47 3. Crear una segunda ventana (w_aplica07a), colocar: los controles y cambiar las siguientes propiedades: Control Propiedad Valor Window Title Ventana PopUp (Emergente) BackColor White stt Text Ventana PopUp Font Bold, Italic, 12 BackColor White Una vez colocado los controles y cambiar las Propiedades se presentard la siguiente pantalla (Grafico 48): A&C Editores 141 PowerBuilder 7.0 Enterprise ame Ventana Popup Grafico 48 4. Crear una tercera ventana (w_aplica07b), colocar los controles y cambiar las siguientes propiedades: Control Propiedad Valor Window BackColor White sti Text Ventana Hija (Child) Font Bold, Italic, 12 BackColor White cb_i Name cb_salir Text Salir Una vez colocado los controles y cambiar las propiedades se presentara la siguiente pantalla (Grafico 49): 142 A&C Editores Capitulo 4 - Ventanas came Ventana Hija (Chilo) s Eee Grafico 49 5. Crear una cuarta ventana (w_aplica07c), colocar los controles y cambiar las siguientes propiedades: Control Propiedad Valor Window Title Ventana de Respuesta (Response) BackColor White st Text Ventana de Respuesta Font Bold, Italic, 12 BackColor White Una vez colocado los controles y cambiar las propiedades se presentaré la siguiente pantalla (Grafico 50): A&C Editores 143 PowerBuilder 7.0 Enterprise Sua Ne ack seoe Grafico 50 Escribir codigo de la aplicacién EventoOpen * Objeto Application open(w_aplica07) Ventana 01 Evento Clicked Objeto cb_popup open(w_aplica07a) Evento Clicked Objeto cb_child open{w_aplicaO7b) Evento Clicked Objeto cb_response open(w_aplica07c) 144 A&C Editores Capitulo 4 - Ventanas Ventana 03 Evento Clicked Objeto cb_1 close(parent) Cuando ejecute su aplicacién se mostrara la siguiente pantalla con tres botones: PopUp, Child y Response usted podra dar clic en uno de los tres botones (Grdfico 51): ei {Tipe de Ventan Grafico 51 Dar un clic en la opcién PopUp, se visualizara la siguiente pantalla (Grafico 52): Para salir de la ventana actual debe dar un clic en el icono zl A&C Editores 145 PowerBuilder 7.0 Enterprise Eien Tipo de Ventana; ei Gratico Al dar un clic en la opcién Child, se visualizaré la siguiente pantalla (Grafico 53): Bei Tipo de Ventana 7 ij | | | a i Ventana Hija (Child) 146 A&C Editores Sybase PowerBuilder Enterprise Version 7 Capitulo 5 Creacién de menus Capitulo 5 - Creacién de menus Creacion de menus Menus La operacién del ment es bastante familiar; cualquier aplicacién Windows, como por ejemplo PowerBuilder 7.0, dispone de alguno. Para afadir un menu, primero es preciso crearlo y después asociarlo a la ventana en que va a aparecer. Esta asociaci6n se realiza desde el Window Painter. Partes de un Menu Un menu es un objeto visual de PowerBuilder 7.0. Un menu permite al usuario seleccionar opciones o acciones de una lista. Una barra de menus es una alternativa para usar estas opciones como si fuesen botones. A&C Editores 149 PowerBuilder 7.0 Enterprise Al finalizar el trabajo con el Menu Painter, el menu se guarda en un libreria de la aplicacion PowerBuilder 7.0. Un menu también tiene atributos, los cuales rigen su presentacién o permiten el uso de teclas de acceso rapido o aceleradores. Se conoce como barra de menu la parte de la ventana en la que se muestra el menu; la barra de menu contiene una lista de érdenes 0 acciones, a las que se llama también elementos de menu. Todo elemento de un menu realiza alguna accién; una accion puede mostrar una nueva lista de opciones o elementos, es decir, un submenu. Presentacion de un Menu Existen varias formas de presentar un menu. Los menus desplegables (dropdown) son los que presentan las opciones de la barra de un menu. Al seleccionar uno de los elementos de un menu desplegable puede aparecer un menu en cascada. Los menus en cascada muestran posibles selecciones posteriores, todas ellas relacionadas con el elemento a partir del cual se mostraron. Un menu emergente (popup) aparece bajo peticién del usuario, normalmente haciendo clic, cerca de la posicién actual del cursor. Opciones en un Menu Existen varias opciones que ayudan en la compresion y uso de un menu. Por ejemplo, en el menu principal File, fas lineas de separacién agrupan aquellas ordenes del menu légicamente relacionadas. En la figura hay una detras del elemento Run/Preview. 150 A&C Editores Capitulo 5 - Creacién de menus Ss < _ Una marca de verificacién en la parte izquierda del elemento indica la activacién de ese elemento. En la figura no existe ninguna. Las teclas rapidas y aceleradores permiten un facil acceso a ordenes del menu desde el teclado. Una tecla rapida ejecuta un element menu con una sola combinacién del teclado. Por ejemplo, - [Q] abandona el sistema. Alguno elementos tiene una de las letras del texto presentado subrayada. Por ejemplo, el elemento File tiene la F subrayada, y el elemento Exit la x. Los caracteres subrayados son aceleradores; permiten navegar rdpidamente pr menu. Por ejemplo, despliega el menu File; selecciona elemento Né A&C Editores 151 PowerBuilder 7.0 Enterprise Cuando el texto de un elemento finaliza con tres puntos suspensivos indica que al seleccionarlo apareceraé un cuadro de didlogo. Por ejemplo, al seleccionar Save As... aparece una ventana en la que se solicita un nuevo nombre para un menu. Los elementos cuyo texto aparece degradado no se encuentran disponibles; cuando pueden _ seleccionarse apareceran en el color normal. Eventos Un elemento del menu tiene disponible dos eventos: selected y clicked. Al mover el cursor hasta un_elemento dado, se selecciona y dispara el evento selected despliega el menu File, y al navegar a lo largo del menu con las teclas de cursor, se va resaltando y volviendo a su aspecto normal cada elemento segtin vamos avanzando. El usuario puede seleccionar también un elemento haciendo clic sobre él y manteniendo pulsado el botén izquierdo del raton. El evento clicked se dispara al hacer clic sobre el elemento o al introducir la tecla rapida o acelerador para el mismo. Haciendo clic sobre el elemento File, se despliega el menu asociado. Manteniendo pulsado el botdn izquierdo y moviendo el cursor, se selecciona el elemento bajo el mismo. Al liberar el botén izquierdo, se completa el clic, activandose el elemento. Para explicar la creacién de menus se utilizara la aplicacién Aplica08 que presenta un menu con cinco opciones principales, cada una de ellas tiene un submenu asociado. Las opciones més utilizadas tendran un icono en la barra ubicada debajo del menu principal esta barra se conoce como Toolbar. 152 A&C Editores Aplica 08 Disefar un menu con las siguientes opciones: Capitulo 5 - Creacién de menus Archivos Clientes Alt+C Articulos Alt+R Proveedores Alt+ P. Utilitarios Alt+ U Reportes Articulos Listado de precios Stock en unidades Stock valorado Clientes Ficha personal Listado Accesorios Calculadora Block de notas Paint Word Pad Ayuda Indice Acerca de... Salir Alt+E Alt + P. Alt+U Alt+V Alt+F Alt+L A&C Editores 153 PowerBuilder 7.0 Enterprise Solucign: 1. Iniciar una nueva aplicacion, digitar el nombre de la aplicacién (aplica08) y el nombre de la libreria (aplica08). Creacion del menu I 2. Dar un clic en el icono i del PowerBar. 3. En la ventana de didlogo New seleccionar la ficha Object, dar un clic en el icono Menu (Grdafico 54): 642 8&8 & Custom Class Standard Class Custom Visual Extemal Visual Stendard Visual + po Structure Function Connection Object Wizard COM/MTS Automation Compone... Server Wizard Grafico 54 4. Dar un clic en el botén OK, seguidamente se observara la ventana de creacién de menus que contiene las siguientetes ventanas: (Grafico 55) - Ventana de Propiedades - Ventana de Cédigo 154 A&C Editores Capitulo 5 - Creacién de menus - Ventana WYSIWYG Menu View - Ventana Tree Menu View WYSIWYG Menu View Tree Menu View j ete tem re) Cédigo 5. Para crear la primera opcién del menu seleccionar la ventana Tree Menu View dar un clic con el botén derecho de! mouse en el icono [9 vas Untitled, elegir del menu contextual la opcién Insert SubMenu Item (Grafico 56). También puede crear la primera opcién del menu dando un clic en el menu Insert y luego Submenu Item (Grafico 57). A&C Editores 155 PowerBuilder 7.0 Enterprise ce a pervs et eee ee eee EOBN Es Grafico 57 6. Ingresar el titulo de la primera opcién del menu (&Archivos), tal como se muestra en la pantalla siguiente (Grafico 58): 156 A&C Editores Capitulo 5 - Creacién de menus Grafico 58 Creacion de los submenus 7. Para crear los submenus de la opcién Archivo seleccionar dicha opcién y dar un clic con el botén derecho del mouse para elegir del menu contextual la opcién Insert Submenu Item (Grafico 59). A&C Editores 157 PowerBuilder 7.0 Enterprise 8. Ingresar las diferentes opciones del menu Archivo ejemplo: &Clientes (Grafico 60). &archivo &Clientes| Grafico 60 9. En la ventana de Propiedades en el objeto MicroHelp ingresar un texto que serviré de ayuda visual para el usuario, esta ayuda se visualizara.en la Barra de Estado. Por ejemplo: Permite el ingreso de nuevos clientes. Para asignar teclas aceleradoras activar la opcién ShortCut Alt, luego en la lista despegable ShortCut Key la tecla indicada para nuestro ejemplo es C tal como se muestra a continuacién (Grafico 61): 158 A&C Editores Capitulo 5 - Creacién de menus Grafico 61 Creacién del Toolbar En una aplicacién MDI usted puede asociar un menu con un botén o Toolbar para esto existe dos pasos: a. Asociar el menu con el botén Toolbar. b. Asociar el botén Toolbar con una imagen. 10. Para construir el Toolbar de nuestro menu primero tenemos que seleccionar dicho menu para nuestro ejemplo es: A&C Editores 159 PowerBuilder 7.0 Enterprise Clientes, \uego en la ventana de Propiedades en la opcién ToolbarltemText escribir el texto: “Nuevos clientes”, que se muestra cuando el puntero del mouse se encuentra sobre la imagen del Toolbar, esto es en el momento de la ejecucién de la aplicacién. En la opcién ToolbarltemName indicar el nombre la imagen, tal como se muestra en el siguiente pantalla (Grafico 62): Grafico 62 Para continuar creando las demas opciones del menu principal debera seleccionar el icono [x cmiteco] Y repetir los 160 A&C Editores Capitulo 5 - Creacién de menus mismos procesos anteriores para la creacién del menu. Y si desea crear los submenus debe seleccionar el menu principal y seguir los mismos procesos anteriores de la creacién de los submenus y de igual manera repetir los pasos para crear el Toolbar (Grafico 63). Al llegar a la opcién Accesorios cambia el tipo de menu se debe crear un menu de tipo cascada. tarchivo Clientes [Alt+C) {AL A&tticulos [Alte] &Proveedores [Alt+P] 8Utiitarios (AR+U] &Reportes 5 Atticulos i Listado de precios [Alt+P] : Stock en funidades [Alt+U] Stock fvalorado [Alt+¥] Clientes SFicha personal [Alt+F] BListado [Alt+L] Grafico 63 Creacién de menu tipo cascada Para crear un conjunto de iconos desplegables ubicados en la opcién Accesorios seleccionar de la ventana Propiedades la pagina Toolbar, luego en Objetc Type seleccionar MenuCascade tal como se muestra en el grafico (Grafico 64). A&C Editores 161 PowerBuilder 7.0 Enterprise acho | bChertes (AeC] LAR Alsicuos [ARSE 1 A® Wroveedares (Ate? Utitarios ASU sRepaties Asticuos Listado de tprecos (ARP) ‘Stock en buridades [ARSU] ‘Stock Bvaltado (At Clientes ‘Fiche personal fAeF] Listado [AReL] Grafico 64 Para las opciones Calculadora, Block de notas, Paint y Word Pad proceder de forma normal, es decir en Object Type seleccionar Menu. eoermemereemenner an ‘OK Atsicios kA 9, Proveedaer ANP] twiltaros (ANU) tepotes Aaticalos “= Ustad de terecios [AR+P) Stock en turidades (ate) 1 Stock avaorado [AV] Clentes ‘Ficha personal (AL ‘istedo [AReL] Acceserioe Calcladora 162 A&C Editores Capitulo 5 - Creacién de menus Para las demas opciones seguir los pasos indicados anteriormente hasta completar todas las opciones del menu principal (Grafico 65). Grabar el menu Una vez terminada la fase de disefio se debe de grabar el menu con el nombre m_principal (Grafico 66): es eet Grafico 66 Crear la ventana principal Abrir una nueva ventana y cambiar la propiedad Window Type a mdihelp!, y asociar la ventana con el menu creado anteriormente indicando el nombre correspondiente en la opcion MenuName tal como se muestra en la siguiente pantalla (Grafico 67): A&C Editores 163 PowerBuilder 7.0 Enterprise — a — - ay 8 io 3 ee Grafico 67 aplica08. wi Grabar la ventana con el nombre igo de la aplicacién ir cod Escri (0 Aplication jet Obj Evento Open open(w_aplica08) Nn se mostrard la siguiente Cuando ejecute su aplicaciér pantalla (Grafico 68): A&C Editores 164 Capitulo 5 - Creacién de menus Grafico 68 Creacién de menu Popup Para crear menu popup se debe de utilizar la funcién PopMenu. La funcién PopMenu muestra un menu en las coordenadas indicadas. Sintaxi: menuname.PopMenu ( xlocation, ylocation ) Para el ejemplo vamos a utilizar el submenu Accesorios del menu principal m_principal, este menu se debe activar cuando el usuario de un clic con el botén derecho del mouse sobre la aplicacién. La ventana utilizada en el ejemplo anterior era una ventana mdihelp!, para poder activar el menu Popup se debe de cambiar al tipo Main El evento RbuttonDown Este evento se dispara cuando el usuario da un clic con el botén derecho del mouse sobre la ventana. En el evento RbuttonDown de la ventana escribir el siguiente cédigo: A&C Editores 165 PowerBuilder 7.0 Enterprise Evento RButtonDown Objeto w_aplica08 m_principal.m_accesorios.PopMenu & (w_aplica08. PointerX(), w_aplica08.PointerY()) Al ejecutar la aplicacién y dar un clic con e! botén derecho de mouse se presentara la siguiente pantalla (Grafico 69): {Untitled ed . oo oe a ae a ge ee gets ae Se Escribir codigo Cuando el usuario de un clic en la opcién Calculadora se debe de activar la aplicacién calculadora de Windows98. Para lograr este objetivo se debe de escribir codigo en la opcién indicada. 4) Seleccionar la opcién del menu para la cual se debe escribir el cédigo, para nuestro ejemplo la opcién es Calculadora (Gratico 70). 166 A&C Editores Capitulo 5 - Creacién de menus Le E:} m_principal Archivo &Reportes Accesorios Back de notas Paint Word Pad Bh Abyuda {BE asalir Grafico 70 2) Dar un clic con el botén derecho del mouse seleccionar del menu contextual la opcién Scrip para activar la ventana de edicién de cddigo (Grafico 71): 8Repottes Accesorios A&C Editores 167 PowerBuilder 7.0 Enterprise 3) Escribir el siguiente cddigo (Grafico 72): La funcién Run Permite ejecutar un archivo ejecutable (.exe), una vez terminada la aplicacién se retorna el contro! a PowerBuilder. Sintaxis: Run ( string {, windowstate } ) Ejemplo: Run("c:\Windows\calc.exe", Normal!) El ejemplo anterior activaraé la aplicacién calculadora de Windows. En el programa anterior pruebe las diferentes opciones del menu Accesorios. 168 A&C Editores Sybase PowerBuilder Enterprise Version 7 Capitulo 6 Funciones Capitulo 6 - Funciones Funciones PowerBuilder 7.0 posee una gran variedad de funciones que permite al programador desarrollar sus aplicaciones de una manera facil. Funciones de cadena Asc Obtiene el cédigo ASCIl correspondiente al primer caracter de una cadena. Ejemplo: Asc("A") Char Retorna el caracter correspondiente al cédigo ASCII. Ejemplo: string |ls_S. Is_S = Char(42) A&C Editores 171 PowerBuilder 7.0 Enterprise Fill Retorna una cadena con una _longitud determinada del caracter especificado. Ejemplo: Fill("*", 35) Left Retorna un ntimero especificado de caracteres comenzando por la izquierda. Ejemplo: Left("Carmen Martinez", 5) string emp_address emp_address=Left(sle_address.Text, 40) LeftTrim Retorna una copia de una cadena sin los espacios en blanco del lado izquierdo de la cadena. Ejemplo: LeftTrim(" RUTH") string emp_name emp_name = LeftTrim(mle_name.Text) Len Retorna la longitud de la cadena. Ejemplo: long s_address_len s_address_len = Len(sle_address.Text) Lower Una copia de una cadena convertida a minuscula. Ejemplo: Lower("Babe Ruth") 172 A&C Editores Match Mid Pos Reverse Right RightTrim Capitulo 6 - Funciones Determina si la cadena contiene un patron particular de caracteres. Ejemplo: Match(sle_ID.Text, “AA-Za-z]") Retorna una cadena que contiene un numero especificado de caracteres, comenzando de una posici6n indicada. Ejemplo: Mid("BABE RUTH", 5, 5) Retorna la posicién donde se encuentra una cadena dentro de otra cadena Ejemplo: Pos("BABE RUTH", "RU") Cambia el orden de los caracteres. de una cadena. Ejemplo: string Is_name ‘ Is_name = Reverse(sle_name.Text) Retorna un numero especificado de caracteres comenzando desde la derecha. Ejemplo: Right("BABE RUTH", 4) Right("BABE RUTH", 75) Retorna una copia de una cadena con los espacios en blanco eliminados de la derecha de la cadena. A&C Editores 173 PowerBuilder 7.0 Enterprise Space Trim Upper Ejemplo: RightTrim("RUTH ") Retorna una cadena de una _longitud determinada conteniendo espacios en blanco. Ejemplo: string Name Name = Space(4) Retorna una cadena con los espacios en blanco eliminados (izquierda y derecha). Ejemplo: Trim("| BABE RUTH ") string emp_fname emp_fname = Trim(sle_emp_fname.Text) Una copia de una cadena convertida a mayuscula. Ejemplo: Upper("Babe Ruth") Funciones de Fecha Day Retorna el dia del mes (un entero entre 1 y 31). Ejemplo: Day(1994-01-31) DayName Retorna el nombre del dia de la semana. Ejemplo: If(DayName(date_signed) <> “Sunday”, "Okay", "Invalid Date") 174 A&C Editores DayNumber DaysAfter Hour Minute Capitulo 6 - Funciones Retorna un numero que representa el dia de la semana. Ejemplo: Domingo es 1 Miércoles es 4 If(DayNumber(start_date) > 2, "Okay", "Wrong Day’) Retorna el numero de dias de una fecha después de la actual. Ejemplo: DaysAfter(1995-12-20, 1995-12-24) DaysAfter(1995-12-24, 1995-12-20) Esta expresion retorna -4. DaysAfter(1995-12-24, 1995-12-24) Esta expresidn retorna 0. DaysAfter(1994-12-29, 1995-01-03) Esta expresion retorna 5. Retorna un entero que corresponde al numero de horas de una hora dada Ejemplo: Hour(Now( )) Hour(19:01:31) Esta expresién retorna 19. Retorna un entero que representa los minutos de una hora dada. A&C Editores 175 PowerBuilder 7.0 Enterprise Month Now RelativeDate RelativeTime Second Ejemplo: Minute(19:01:31) Retorna un entero que representa el numero del mes (1 a 12). Ejemplo: Month(1994-01-31) Retorna la hora del sistema. Ejempio: Now() If(Now( ) < 08:00:00, '08:00:00', String(Now( ))) Retorna la fecha que ocurre n dias después de una fecha dada. Ejemplo: RelativeDate(1990-01-31, -10) Esta expresién retorna 1990-01-21. El tiempo que transcurre después de una hora dada. Ejemplo: RelativeTime(19:01:31, 10) Esta expresion retorna 19:01:21. Retorna el numero de segundos de una hora dada. Ejemplo: Second(19:01:31) 176 A&C Editores Capitulo 6 - Funciones Today Retorna la fecha actual del sistema. Ejemplo: Today( ) Year Retorna el afio (un entero entre 1000 y 3000). Ejemplo: Year(1995-01-31) Funciones Numéricas Abs Obtiene el valor absoluto de un numero. Ejemplo: integer i, num 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 numero entero que es menor 0 igual al numero especificado. Ejemplo: decimal dec, num dec = 4.8 num = Ceiling(dec) decimal num num = Ceiling(-4.2) num = Ceiling(-4.8) Esta sentencia retorna -4, A&C Editores 177 PowerBuilder 7.0 Enterprise Cos Obtiene el coseno del angulo. El angulo debe estar en radianes. Ejemplo: Cos(0) Cos(1) Esta sentencia retorna .540302. Cos(Pi(1)) Esta sentencia retorna -1. Exp Obtiene e elevado a la potencia de x. Ejemplo: Exp(2) Fact Obtiene él factorial del numero. Ejemplo: Fact(4) Fact(1) Fact(0) ambas sentencias retorna 1. Int Obtiene el menor numero entero que es menor o igual al numero especificado. Ejemplo: Int(3.2) Int(3.8) Int(-3.2) Int(-3.8) La siguiente sentencia retorna -4.0. 178 A&C Editores Log LogTen Max Min Mod Pi Capitulo 6 - Funciones Obtiene el logaritmo natural de un numero. Ejemplo: Log(10) Obtiene el logaritmo decimal de un numero, Ejemplo: LogTen(10) Retorna el mayor de dos numeros. Ejemplo: Max(4,7) Max(-4,-7) Esta expresion retorna -4. Retorna el menor de dos numeros. Ejemplo: Min(4,7) Min(-4,-7) Esta expresion retorna -7. Obtiene el mddulo de dos numeros (El resultado obtenido de la divisién del primer expresion con el segundo). Ejemplo: Mod(20, 6) Mod(25.5, 4) Esta sentencia retorna 1.5. Obtiene el valor de Pi (3.14159265358979323). Ejemplo: Pi(1) A&C Editores 179 PowerBuilder 7.0 Enterprise Rand Obtiene un numero entero aleatorio (entre 1 y un numero especifico). Ejempto: Rand(10) Randomize Inicializa el numero aleatorio genetador. Ejemplo: Randomize(0) Randomize(4) Round Obtiene un numero redondeado a un numero decimal elegido. Ejemplo: Round(9.624, 2) Round(9.625, 2) Esta sentencia retorna 9.63. Round(9.6, 3) Esta sentencia retorna 9.600. Round(-9.625, 2) Esta sentencia retorna -9.63. Round(-9.625, -1) Esta sentencia retorna NULL: Sign Obtiene un numero (-1, 0, 0 1) indicando el signo de una expresion. Ejemplo: Sign(5) Sign(0) Esta sentencia retorna 0 (cero no tiene signo). 180 A&C Editores Sin Sqrt Tan Capitulo 6 - Funciones Sign(-5) Esta sentencia retorna -1(el numero es negativo). Obtiene el seno de un Angulo. El angulo esta en radianes. Ejemplo: Sin(1) Sin(0) Esta sentencia retorna 0. Sin(Pi(1)) Esta sentencia retorna 0. Obtiene la raiz cuadrada de una expresion. Ejemplo: Sart(2) Sqrt(-2) Esta sentencia resulta un error en tiempo de ejecucién. Obtiene la tangente de un Angulo. El Angulo esta en radianes. Ejemplo: Tan(0) Tan(Pi(1)) Tan(1) Esta sentencia retorna 1.55741. A&C Editores 181 PowerBuilder 7.0 Enterprise Truncate Obtiene un numero truncado ai un determinado expresion decimal. Ejemplo: Truncate(9.22, 1) Esta sentencia retorna 9.2. Truncate(9.28, 1) Esta sentencia retorna 9.2. Truncate(9.9, 0) Esta sentencia retorna 9. Truncate(-9.29, 1) Esta sentencia retorna -9.2. Funciones de Conversion Asc Char Dec Obtiene el valor ASCII de un caracter. Ejemplo: String Is_name IF Asc(ls_name) > 64 and Asc(Is_name) < 91 THEN ... Obtiene un caracter. Ejemplo: string Is_S Is_S = Char(42) Obtiene el contenido de una cadena como un decimal. Ejemplo: Dec("24.3") Dec(sle_salary. Text) 182 A&C Editores Double Integer Long Real Capitulo 6 - Funciones Obtiene el contenido de una cadena como un doble. Ejemplo: Double("24.372") Obtiene el contenido de una cadena como un entero. Ejemplo: Integer("24") Integer(sle_Age.Text) Obtiene el contenido de una cadena como un long. Ejemplo: Unsignedint nLow UnsignedInt nHigh long LValue nLow = 12345 nHigh = 0 LValue = Long(nLow, nHigh) MessageBox("Long Value", Lvalue) Obtiene el contenido de una cadena como un real. Ejemplo: Real("24") Real(sle_Temp.Text) A&C Editores 183 PowerBuilder 7.0 Enterprise Aplica 09 Desarrollar una aplicacién que permita el ingreso de los datos personales de los trabajadores. Se debe ingresar el apellido paterno, materno, nombres, direccién y teléfono. El cédigo es autogenerado: toma el primer caracter de apellido paterno y el primer caracter del apellido materno, para luego unir con un numero correlativo. Solucion: 1. Iniciar una nueva aplicacién, digitar el nombre de la aplicacién (aplica09) y el nombre de la libreria (aplica09). 2. Crear una ventana (w_aplica09) para colocar los controles y cambiar las respectivas propiedades tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Uso de funciones BackColor Cream sti Text Cédigo st2 Text Fecha st3 Text A. Paterno st_4 Text A. Materno st_5 Text Nombres st6 Text Direccién st7 Text Teléfono sle_1 Name sle_codigo Enabled 184 A&C Editores Capitulo 6 - Funciones Control Propiedad Valor sle_2 Name sle_fecha sle_3 Name sle_paterno sle_4 Name sle_materno sle_5 Name sle_nombres sle_6 Name sle_direccion sle_7 Name sle_telefono Ib_1 Name (b_clientes Ib_2 Name Ib_codigo eb_t Name cb_agregar Text &Agregar Enabled rs cb_2 Name cb_nuevo Text &Nuevo Enabled cb_3 Name cb_salir Text &Salir Default v Cuando termine de colocar los controles y cambiar las propiedades obtendra una pantalla como al siguiente (Gratico 73). A&C Editores 185 PowerBuilder 7.0 Enterprise ‘66igo Fecha ‘APateme: 2 ‘AMstomo: 7 | (Nombres EE 2 Direecién: 2 | ra Escribir cédigo de la aplicacion Evento Open Objeto Application Open(w_aplica09) Evento Open Objeto w_aplica09 sle_fecha.text=string(today()) Evento Other Objeto sle_nombre IF LEN(sle_nombres.Text)> 0 THEN cb_agregar.Enabled=TRUE ELSE cb_agregar.Enabled=FAISE, END IF 186 A&C Editores Capitulo 6 - Funciones Evento Clicked Objeto cb_agregar Integer nRow1,nRow2 String s,cl,c2 nReg=nReg+1 cb_agregar.Enabled=FALSE cb_nuevo.Enabled=TRUE s = UPPER(sle_paterno.Text)+" & "+UPPER(sle_materno.Text)+" "+UPPER(sle_nombres.Text) c1=UPPER(LEFT(sle_paterno.Text, 1)) c2=UPPER(LEFT(sle_materno. Text, 1)) nRow]1 = Ib_clientes.AddItem(s) sle_codigo.Text=c1+c2+RIGHT("000"+STRING(nReg),4) nRow2 = Ib_codigo.Addltem(sle_codigo.Text) Evento Clicked Objeto cb_nuevo cb_nuevo.Enabled=FALSE sle_codigo. text=" sle_paterno.text: sle_materno.text: sle_nombres.text=' sle_direccion. text sle_telefono.text sle_fecha.text="" sle_paterno.SetFocus() Evento Clicked Objeto cb_salir Close(w_aplica09) Cuando ejecute su aplicacién se mostraré una pantalla como la siguiente en la cual ingresara los datos requeridos (Grafico 75). A&C Editores 187 PowerBuilder 7.0 Enterprise Fecha [Samana | APatemo: ‘A Matera | [Rosales Lopez | sents Diecin : [Giovanna Lay San Luis 867 | Teldfone i = — xe Ee Grafico 75 Dar un clic en el botén Agregar para que se genere el cédigo (Grafico 76). aAr ees Fecha [62020000 _ eee | Abate AMaterno | Rested | Nonbees Direccién; || [Giovanna —————_[aaw. San Luis 567 i | Teléfono. | Grafico 76 188 A&C Editores Capitulo 6 - Funciones Funciones definidas por el usuario El lenguaje PowerScript tiene una gran variedad de funciones pero si en el proceso de desarrollo se necesita codificar un 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 PowerScript que realiza algun proceso. Para construirla se utiliza el Function Painter. Una vez construida dicha funcién se salva en una libreria para su posterior uso. Tipos de Funciones Existen dos tipos de funciones definidas por el usuario: Funciones Globales Las cuales no estén asociadas a ningun objeto de la aplicacién y son accesibles desde cualquier punto de la aplicacion. Eunciones a nivel de objeto Estas funciones estan definidas por un tipo particular de ventana, menu, objeto de usuario. Nombrando las funciones Los nombres de funciones pueden tener hasta 40 caracteres. Es una buena norma adaptar una convencién de nombres para nombrar a las funciones definidas por el usuario de tal forma que puedan ser reconocidas facilmente. Por ejemplo: A&C Editores 189 PowerBuilder 7.0 Enterprise Tipo de Funci6n Prefijo Global fe Nivel de Ventana wi Nivel de Menu mft_ Nivel de Objeto de Usuario uf_ Nivel de Objeto de Aplicacién af_ Definiendo el tipo de dato de retorno Muchas funciones realizan algin proceso, luego retorna un valor. Este valor puede ser el resultado de un proceso o el valor que indica si la funcién se ha ejecutado satisfactoriamente o no. Para hacer que la funcidn retorne un valor se debe definir un tipo de dato a retornar. Se usa la palabra reservada RETURN para devolver valor. Si se desea retornar ningun valor define (none) como tipo de dato. Invocando a la funcién Cuando se invoca a una funcién se cierran los argumentos entre paréntesis inmediatamente después del nombre de la funcién. Ejemplo: Int nSuma NSuma=f_Suma(12,89) Ejemplo: Dec npromedio //Se invoca a la funcion promedio nPromedioP=promedio(nNota1,nNota2,nNota3,nNota4) 190 A&C Editores Capitulo 6 - Funciones Aplica 10 Desarrollar una aplicacién que permita calcular la nota final de un alumno y su condici6n al finalizar el curso. El sistema de evaluacion consiste en tomar 4 practicas y un examen final. El promedio se calcula de la siguiente manera: Promedio de practicas = promedio de las tres mejores notas {eliminar la menor nota de las cuatro practicas). Promedio Final = (promedio de practicas + examen final) / 2 Si el alumno obtiene una nota >= 13, su certificacién sera aprobado. Si el alumno obtiene una nota <= 10, su condicién sera ninguna. En caso contrario su condicién sera de asistencia. Utilizar dos funciones de usuario: promedio y condicién. Solucion: 1. Iniciar una nueva aplicacién, digitar el nombre de la aplicacién (aplica10) y el nombre de la libreria (aplica10). 2. Crear una ventana (w_aplica10) para colocar los controles y cambiar las respectivas propiedades tal como se indica en la tabla siguiente: Control Propiedad Valor Window Title Funciones definidas por el usuario Icon c:\pb70\bmp\Note04.ico st Text Fecha TextColor Blue st_2 Text Cédigo TextColor Blue A&C Editores isi PowerBuilder 7.0 Enterprise Control Propiedad Valor st3 Text Apellidos TextColor Blue st_4 Text Nombres TextColor Blue st_5 Text Examen Final TextColor Blue sle1 ° Name sle_fecha BorderStyle StyleBox! sle_2 Name sle_codigo BorderStyle StyleBox! TextColor Red BackColor Yellow sle_3 Name sle_apellidos BorderStyle StyleBox! sle_4 Name sle_nombres BorderStyle StyleBox! sle_5 Name sle_final BorderStyle StyleBox gb_1 Text Nota de practicas TextColor Blue st_6 Text Primera st_7 Text Segunda sts Text Tercera sto Text Cuarta sle_6 Name sle_primera 192 A&C Editores Capitulo 6 - Funciones Control Propiedad Valor BorderStyle StyleBox! sle_7 Name sle_segunda BorderStyle StyleBox! sle_8 Name sle_tercera BorderStyle StyleBox! sle_9 Name sle_cuarta BorderStyle StyleBox! gb_2 Text Observaciones TextColor Blue st_10 Text Promedio sti Text Condicién sle_10 name sle_promedio BorderStyle StyleBox! Enabled rl sle_11 name sle_condicion BorderStyle StyleBox! Enabled cb_1 Name cb_correcto Text &Correcto cb_2 Name cb_nuevo Text &Nuevo cb_3 Name cb_salir Text &Salir pil PictureName c:\pb70\bmp\books A&C Editores 193 PowerBuilder 7.0 Enterprise Cuando termine de colocar los controles y cambiar las propiedades obtendra una pantalla como al siguiente (Grafico 77): Grafico 77 Creacién de las funciones de usuario Nombre la funcion: Promedio 14) De la ventana Scrip seleccionar del control la opcién Funtions tal como se muestra en el siguiente grafico (Grafico 78): 194 A&C Editores Capitulo 6 - Funciones 2) En el didlogo Function Name colocar el nombre de la funcidn: Promedio, en el didlogo Access sefialar public, en el didlogo Returns Type seleccionar el tipo de dato que retornara la funcién en nuestro caso sera: real (Grafico 79). (Functions) £1] promedo() retuns reat cs [ee Uti: Ree public ©] [Poneda See : EE ee ee on ace Grafico 79 3) En la seccién Argument Type indicar el tipo de dato y en el dialogo Argument Name indicar el nombre de los argumentos (Grafico 80). [Funcions) 2] T _tromedo (integer natal} veture = cal naga OE Tartine Slhex 8] Pronesio —_ eae i soa robe ; ftege Soa a ” Sema seena A&C Editores 195 PowerBuilder 7.0 Enterprise 4) Si desea agregar otro argumento dar un cliccon el boton derecho del mouse dentro del! didlogo y del menu contextual seleccionar la opcion Add Parameter (Grafico 81). = gine Type = tiene: 2) in rt ae oe is | . So eS ee a eee te Graftico 81 5) Escribir el codigo de la funcién de usuario: Para Promedio (Grafico 82) fi nbrone((notat-notazenotagenatan) amin) /3 return (aPron) 196 A&C Editores Capitulo 6 - Funciones Para Condicién (Grafico 83) ee ta ng TF Pronto THE ntar=" Hinguna’ eLSE Te nPran>49 THEN, near="Aprabade” Escribir cédigo de la aplicacion Evento Open Objeto Aplication Open (w_aplica 10) Evento Closequery Objeto w_aplica10 IF MessageBox('Funciones definidas por el usuario’, ‘Desea salir de la Aplicaci6én?’, Question!, YesNo!) = 2 THEN RETURN 1 END Para mostrar la fecha del sistema se utiliza la funcion today(). Evento Open Objeto w_aplica10 sle_fecha.text=string(today()) A&C Editores 197 PowerBuilder 7.0 Enterprise Evento Clicked Objeto cb_correcto Int nNotal,nNota2,nNota3,nNota4,nExa dec nPromedioP,nPromedioG string cMensaje nNotal=integer(sle_primera.text) nNota2=integer(sle_segunda.text) nNota3=integer(sle_tercera.text) nNota4=integer(sle_cuarta.text) nExa=Integer(sle_final.text) //Se invoca a la funcién promedio nPromedioP=promedio(nNota 1 ,nNota2,nNota3,nNota4) nPromedioG=(nPromedioP+nExa)/2 npromedioG=round(npromedioG,0) //Se invoca a la funcién condicion cMensaje=condicion(nPromedioG) sle_promedio.text=string(nPromedioG) sle_condicion.text=cMensaje Evento Clicked Objeto cb_nuevo sle_codigo.text="" sle_apellidos. text: _sle_nombres. text sle_primera.text=' sle_segunda.text sle_tercera.te: sle_cuarta.text sle_final.text: sle_promedio.text: sle_condicion.text="" sle_cédigo.SetFocus() .Evento Clicked Objeto cb_salir close(w_aplica10)} 198 A&C Editores Capitulo 6 - Funciones Cuando ejecute su aplicacién se mostraré una pantalla como la siguiente en la cual ingresara los datos requeridos (Grafico 84): Ee Zapata Llauca Maria Grafico 84 Dar un clic en el botén Correcto para visualizar los resultados del promedio y de la condicién (Grafico 85): SOON a (Zapata Llauca Maria 2 2 15 4 14 bE a 12 e Grafico 85 A&C Editores 199 PowerBuilder 7.0 Enterprise Si desea ingresar un nuevo registro dar un clic en el botén Nuevo para visualizar un nuevo registro. Dar un clic en el botén Salir para abandonar la aplicacién, se observara una ventana de didlogo que le pedira la confirmacion para el abandono del programa (Grafico 86). Grafico 86 200 A&C Editores Sybase PowerBuilder Enterprise Version Base de datos Capitulo 7 - Base de Datos Base de Datos Conceptos generales Base de Datos Una Base de Datos es una coleccidn de tablas, vistas, indices, procedimientos almacenados que se definen con el propdsito de llevar a cabo ciertas operaciones con los datos. La informacién almacenada en una Base de Datos normalmente esta relacionado con un tema especifico como por ejemplo: Los articulos de un almacén, los clientes de un banco, etc. El Database Painter @ Cualquier gestor de Base de Datos incluye, ademas del motor de la Base de Datos, una serie de herramientas complementarias, como por ejemplo: utilidades SQL para la creacién y manipulacién de tablas. Algunas de estas funciones pueden realizarse desde el Database Painter. El acceso a estas A&C Editores 203 PowerBuilder 7.0 Enterprise facilidades puede verse limitado por los permisos que el administrador de la Base de Datos haya asignado al usuario que las esta utilizando, o por las propias posibilidades del Database Painter. En este capitulo se explicara los pasos a seguir para crear una nueva Base de Datos utilizando Adaptive Server Anywhere 6.0 que es la utilidad que permite crear, manipular Base de Datos. Atributos adicionales de una columna Con PowerBuilder 7.0 es posible crear y mantener formatos de presentacién y validacién, mascaras de edicién y valores iniciales, y por lo tanto, utilizables en las aplicaciones PowerBuilder 7.0. Estos atributos se conocen como adicionales y se aplican a columnas. Afectan a la presentacion en pantalla del contenido de las columnas. Por ejemplo, una mascara de edicién determina que caracteres pueden usar un usuario. Los formatos de validacién comprueban la validez de los valores introducidos. Utilidad para la manipulacién de datos El Database Painter contiene una utilidad para introducir, actualizar y borrar informacién de la Base de Datos. La interfaz de esta herramienta es simple y facil. Utilidad para la administracién de la Base de v Datos El Database Painter también incluye una utilidad para la administracién de la Base de Datos. Con esta herramienta es posible cambiar permisos de acceso, asi como construir y ejecutar sentencias SQL. 204 A&C Editores Capitulo 7 - Base de Datos Creacion de una Base de Datos Existen dos formas para crear una nueva Base de Datos: ira. Forma Dar un clic sobre el icono Database - correspondiente. 2da. Forma Dar un clic en el icono a New, de la ventana de dialogo New seleccionar la ficha Database a continuacién dar un clic en la opcién Database Painter. Database} Quey Data Pipeline ened Tanto para la primera forma como para la segunda forma el Database Painter intenta hacer una conexi6n a la ultima Base de Datos usada, en nuestro caso a la Base de Datos de ejemplo que suministra PowerBuilder 7.0 A&C Editores 205 PowerBuilder 7.0 Enterprise Dar un clic en (4 de la carpeta Utilities para expandir dicha carpeta. En esta carpeta se encuentran diferentes utilidades que nos permiten operar sobre Base de Datos como por ejemplo: crear una nueva Base de Datos, borrar una Base de Datos, importar y exportar datos y acceder al administrador ODBC. Esta Ultima utilidad nos permite activar la ventana Administrados de Origen de datos ODBC que nos permite crear un Origen de datos de usuario ODBC. &1-Ga TES | BY Create ASA Database “Wy Delete ASA Database {$8 Import and Export Data BS ODBC Administrator Dar doble clic en Create ASA Database se observara la siguiente pantalla: 206 A&C Editores Capitulo 7 - Base de Datos Create Adaptive Serves Anywhere Database Se wean ee ee ‘De la ventana Create Adaptive Server. Anywhere Database dar un clic en el botén Browse... para indicar la ruta y el nombre de la nueva Base de Datos, para nuestro ejemplo la Base de Datos tendré como nombre SistemaNotas. A&C Editores 207 PowerBuilder 7.0 Enterprise Dar un clic en el botén Guardar. Se observara la siguiente pantalla dar un clic en el botén OK PowerBuilder 7.0 comenzaré a crear la conexién con la nueva Base de Datos. A continuacién se observara que se ha creado un icono que representa a la Base de Datos: #)-G) Procedures & Functions GQ Tables #-GQ Users G2 Views 208 A&C Editores Capitulo 7 - Base de Datos Seleccionar la carpeta Tables, dar clic con el botén derecho del mouse de! menu contextual seleccionar la opcién New tables... que nos permitira crear una nueva tabla. &® Sistemanotas GQ Driver Information -(Q Groups 8-3) Metadata Types f-GQ Procedures & Functions A continuacién debemos indicar los campos, los tipos de datos correspondientes a la tabla a crear. Para nuestro ejemplo la tabla tendra los siguientes campos: Nombre Tipo Amplitud Idcurso char 3 Curso varchar 30 Hteoria char a] Hpractica char 8 Finicio date Ftermino date Costo integer Ademas se debe indicar el numero de posiciones decimales (Dec) y si el campo aceptara valores nulos (Null) finalmente el valor por defecto almacenar en dicho campo (Default). A&C Editores 209 PowerBuilder 7.0 Enterprise Esta informacién se debe ingresar en la siguiente caja de dialogo: eee) Al cerrar la ventana Columns observara una ventana de didlogo que le pedira grabar la tabla. Dar un clic en el botén Si. IRC Cm ey ee ue ay =| He ear ee Se observara una ventana de didlogo donde debe ingresar el nombre de la tabla para nuestro ejemplo es: Cursos, al ingresar el nombre dar un clic en el botén OK. 210 A&C Editores Capitulo 7 - Base de Datos Bodal a = Para ingresar el texto que se visualizara en la cabecera (Header) y etiqueta (Label) seleccionar la tabla cursos dar clic con el botén derecho del mousey seleccionar del menu contextual la opcién Add To Layout. Per Serer rere moet Tnsaledalabaseeeaces DIR Dee Conmectinteface IN ede vax, JOM JDBC Miro ad Se agregard la siguiente ventana con la tabla cursos, dar un clic derecho sobre el campo idcurso del menu contextual seleccionar la opcién Properties. A&C Editores 211 PowerBuilder 7.0 Enterprise i! Databere - 2 Conmeckons: (Active Connection -SietemaNotat) Insintome va 10M IDRC Miowst At 305 sDBC sin vat SSMS SOL See BX (064 Dace 80.4/805 ‘pec EAS Dene 08 V9 pet Se agregara la ventana Column dar un clic en fa ficha Headers escribir en Label la etiqueta tal como se muestra a continuacién: Thad Databeceirerinces DIA Direct Connect iteace Ins tomas v9X IDM JOEC Mest {3051086 Sun MSSIMS SOL Server 6X Det Once 804305 nec Sandee Ss a oe coupe 212 A&C Editores Capitulo 7 - Base de Datos Una vez que ingresé el nombre de la etiqueta cerrar la ventana, grabar los cambios dando un clic en el botén Si. Realizar los mismos pasos para cambiar las etiquetas de los campos. Hasta aqui hemos logrado crear nuestra primera tabla. Para continuar con la aplicacién debemos crear una segunda tabla de nombre Alumnos, con los siguientes campos: Nombre Tipo Amplitud Null idalumno char 3 No nrecibot char 6 No nrecibo2 char 6 No apellidos varchar 40 No nombres varchar 30 No idcurso char 3 No condicion char 1 No pago integer No deuda integer Yes pagodeuda integer Yes ciclo char 6 No fecha date No practica1 integer Yes practica2 integer Yes practica3 integer Yes practica4 integer Yes exfinal integer Yes promedio decimal 5 2 Yes observacion varchar 15 Yes A&C Editores 213 PowerBuilder 7.0 Enterprise Clave Primaria La clave primaria la forman una o mas columnas de la tabla que identifican Unicamente a cada una de sus filas. Del conjunto de claves candidatas para la tabla, sdlo se pueden seleccionar una de ellas como clave primaria. La creacion de clave primaria garantiza por ejemplo: que la Base de Datos no debe contener dos registros que tengan el mismo valor en el contenido del campo seleccionados como clave primaria. Creacién de la clave primaria para la tabla cursos 14. Seleccionar la tabla Cursos dar un clic con el botén derecho del mouse, del menu contextual seleccionar la opcién New - Primary Key tal como se muestra a continuacion: 2. Se adiciona la ventana Primary Key marcar el campo idcurso como clave primaria. 214 A&C Editores Capitulo 7 — Base de Datos ete ee ae i una ventana de didlogo que le permi efectuados. ary Key (SistemaNotas} —— Ce eo _ i eee 4. Repetir los pasos anteriores para crear la clave primaria de la tabla Alumnos por el campo idalumno. A&C Editores 215 PowerBuilder 7.0 Enterprise Clave Fordnea (ajena) Una clave foranea es una combinacién de una o mas columnas de una tabla que sirven para identificar a una o mas filas de otra tabla. Una clave fordnea relaciona informacién de dos tablas. Una tabla puede contener varias claves foraneas, ya que su informacién puede estar relacionada con mds de una tabla. Creaci6n de la clave fordnea para la tabla Alumnos 1. Seleccionar la tabla Alumnos dar un clic con el botén derecho del mouse, de! menu contextual seleccionar la opcién New - Foreign Key tal como se muestra a continuacién: 2. Se observara la ventana Foreign Key de la ficha General ingresar el nombre de la clave fordnea xidcurso, marcar el campo idcurso tal como se muestra a continuacion: 216 A&C Editores Capitulo 7 - Base de Datos 3. Seleccionar la ficha Primary Key indicar el nombre de la tabla en este caso la tabla es: cursos (i Dies Cares inetace IN3 ae vox JOMJOBC Miso ae 203 080 Sun vi MSS MS SOL Seve 6X Bt Once BOAO ayo seq 4. Cerrar la ventana, dar un clic en el botén Si para grabar los cambios hechos. A&C Editores 217 PowerBuilder 7.0 Enterprise Sed oe Ingresar Datos a las tablas Para ingresar datos a la tabla Cursos seleccionar dicha tabla y luego dar un clic en el cualquiera de los botones Data manipulation del DataBase Painter Bar. Puede cambiar el ancho de las columnas segtn convenga, pulsar (flecha abajo) ag para ingresar nuevos registros. Ingresar los siguientes datos utilizando el botén Data manipulation (grid): 218 A&C Editores Tabla Cursos ‘Curse iSPRovEdT MS.WORD SoooNIVELT Man S:WORD 20 Nivel i Capitulo 7 - Base de Datos Teta “Price FechoinooFecha miso [Sa ie19sA2022 Vvevz000) 172000 DOGIDWiét6 Teiaeo “17e2c000 (00 13-1200 w6-18 t7eian00 7ezra0n0 Oi POWERBLILDER TONVELT Wi1822 Aii832 Tranaeed “irexco 71. TURGO PASCAL 7ONIVELT DO US 12NA 14-18 Tote “Warne War" “Visual ase So nivel vat" "Visual BASIC 60 NVEL A vor) VISUAL C++ nivEL! DOG I2 wise i7eilaioa eD=o0o Sa 1619843022 1701/2000 “i720 SA 17-208A2022 1712000 | 1702/2000 VFI" ViSUAL FOKERO BO NIVEL | 06 08-10 Mi 14-16: 17012000 702/005 VE2 VISUAL FORE RO Bo NEL (00 Fsieno Yé-i8 TeVARe0 ”Ireico00 VEE MSUAL FOXPROGO NEL i 00 10-136068-10 HDran0 ireare0 Sar Sot SERVER. RIVE 892” Sal SERVER FO iWVEL I Wot Waive 98 VEL elit Salazar Fuentes van act 0 Guzman lores Rodrigo. ETP ae Ssloedo Rodriguez Luis Albeno Vet P ar) ‘Apatcio Montes Rosa Acc iso ‘Santa Cruz Morales” Ana Maria AWI igo ‘Bermudez Rosas Man awa ia bento Marales "ian acre aa “Becerra Ross Pedro acre iso Baca Aguiar Giantanco El C™ eo. ioio ‘Aguilar Malpatida” Manbet xt” iG ed i or ere eco pierces Apelidos SATEDSA2224 170172000 A200 ‘SA08-(2 8A 0103 1712000 “72/3000 ‘sA.08-1200 26-19 i71/2c00 Nambres._Idcurse;Condicien Pago Deuce Pagoder A&C Editores 219 PowerBuilder 7.0 Enterprise sai Es una herramienta para organizar, gestionar y recuperar datos almacenados en una Base de Datos. El nombre SQL es una abreviatura de Structured Query Language (Lenguaje de Estructuras de Consultas). SQL es un lenguaje que se puede utilizar para interactuar con una Base de Datos relacional. SQL es un lenguaje completo de control e interaccién con un sistema de gestion de Base de Datos. La sentencia SELECT La sentencia Select recupera datos de una Base de Datos y los devuelve en forma de resultados de la consulta. Para consultas sencillas, la peticin inglés y la sentencia Select de SQL son muy similares. Cuando las peticiones se hacen mas complejas, deben utilizarse caracteristicas adicionales de la sentencia Select para especificar la consulta con precision. La sentencia Select consta de seis clausulas. Las clausulas SELECT y FROM de la sentencia son necesarias. Los cuatro restantes son opcionales. Se incluyen en la sentencia Select solamente cuando se desean utilizar las funciones que proporcionan. Sintaxis: SELECT [predicado] { * | tabla.* | [tabla.Jcampo1 [AS alias1] [, {tabla.Jcampo2 [AS alias2] [, ...]]} FROM expresiontabla [, ...] [IN basededatosexterna] [WHERE... ] «] [GROUP B {ORDER BY... ] [HAVING... ] 220 A&C Editores Capitulo 7 - Base de Datos La sintaxis de la instruccién SELECT consta de las siguientes partes: Parte Descripcién predicado tabla campo1, campo2 alias, alias2 expresiontabla basededatosexterna Uno de los siguientes predicados: ALL, DISTINCT, DISTINCTROW o TOP. Puede utilizar el predicado para limitar el ntimero de registros devueltos. Si no especifica ninguno, el valor predeterminado es ALL. Especifica que se seleccionan todos los campos de la tabla o tablas especificadas. El nombre de la tabla que contiene los campos de la que se van a seleccionar los registros. Los nombres de los campos que contienen los datos que desea recuperar. Si incluye mas de un campo, éstos se recuperan en el orden enumerado. Los nombres que se van a utilizar como encabezados de columnas en vez de los nombres de columnas originales en‘tabla. El nombre de la tabla o las tablas que contienen los datos que desea recuperar. El nombre de la Base de Datos que contiene las tablas en expresiontabla si no estan en la Base de Datos activa. A&C Editores : 221 PowerBuilder 7.0 Enterprise La funcién de cada clausula esta resumida a continuacion: « La clausula Select lista los datos a recuperar por sentencia Select. Los items pueden ser columnas de la Base de Datos o columnas a calcular por SQL cuando efectue la consulta. « Laclausula From lista las tablas que contiene los datos a recuperar por la consulta. Las consultas que extraen sus datos de una unica tabla. * Laclausula Where dice a SQL que incluya sdlo ciertas filas de datos en los resultados de la consulta. Se utiliza una condicién de busqueda para especificar las filas deseadas. « La cldusula Group By especifica una consulta sumaria. En vez de prodcir una fila de resultados por cada fila de datos de la Base de Datos, una consulta sumaria agrupa todas las filas similares y luego produce una fila sumaria de resultados para cada grupo. e La clausula Having dice a SQL que incluya sdlo ciertos grupos producidos por la clausula Group By en los resultados de la consulta. Al igual que la clausula Where, utiliza una condicién de busqueda para especificar los grupos deseados. ¢ Laclausula Order By ordena los resultados de la consulta en la Base de Datos de una o mas columnas. Si se omite, los resultados de la consulta no aparecen ordenados. La clausula SELECT La clausula Select que inicia cada sentencia SELECT especifica los items de datos a recuperar por la consulta. Los items se especifican generalmente mediante una lista de seleccidn, una lista de ftems de seleccién separados por comas. Cada items de seleccidn de la lista genera una Unica columna de 222 A&C Editores Capitulo 7 - Base de Datos resultados de consulta, en orden de izquierda a derecha. Un item de seleccion puede ser: ¥ Un nombre de columna, identificando una columna de la tabla designada en la clausula From. Cuando un nombre de columna aparece como item de seleccién, SQL simplemente toma el valor de esa columna de cada fila de la tabla de Base de Datos y lo coloca en la fila correspondiente de los resultados de la consulta. y Una constante, especificando que el mismo valor constante va a aparecer en todas las filas de los resultados de la columna. Y Una expresién SQL, indicando que SQL debe calcular el valor a colocar en los resultados, segun el estilo especificado por la expresion. La clausula FROM La clausula FROM consta de la palabra clave FROM, seguida de una lista de especificaciones de tablas separadas por comas. Cada especificacién de tabla identifica una tabla que contiene datos a recuperar por la consulta. Estas tablas se denominan tablas fuente de la consulta, ya que la fuente de todos los datos que aparecen en los resultados. Consultas Sencillas Las consultas SQL més sencillas solicitan columnas de datos de una Unica tabla en la Base de Datos. A&C Editores 223 PowerBuilder 7.0 Enterprise Creacién de consultas con Adaptive Server Anywhere 6.0 Para realizar los diferentes ejemplos utilizamos las herramientas proporcionadas por PowerBuilder 7.0. Primeramente debemos estar conectados con la Base de Datos SistemaNotas. 5-@ SOEs 1 BG Driver Information -Q Groups Gi) Metadata Types (24 Procedures & Functions @& Tables £8) GM Users GQ Views Dar un clic en el menu View del sistema seleccionar la opcién Interactive SQL se observara la ventana ISQL Sessién. Escribir las sentencias sQL 224 A&C Editores Capitulo 7 — Base de Datos En esta ventana se debe escribir la siguiente sentencia SQL: SELECT * FROM Cursos; Seleccion de todas las columnas (SELECT *) A veces es conveniente visualizar el contenido de todas las columnas de una tabla. Esto puede ser particularmente util cuando uno va a utilizar por primera vez una Base de Datos y desee obtener una rapida compresién de su estructura y de los datos que contiene. Por conveniencia, SQL permite utilizar un asterisco (*) en lugar de la lista de seleccién como abreviatura de “todas las columnas”. Ejemplo 01: La siguiente sentencia SQL extrae todos los campos y registros de la tabla Articulos. SELECT * FROM Cursos; Nota: La sentencia SELECT debe terminarcon ; Para obtener los resultados dar un clic en el icono (Execute) para mostrar la siguiente pantalla: mis A&C Editores 225 PowerBuilder 7.0 Enterprise Curso. MSACCES "(00.08.1200 12:14 1701/2000 "AUTOCAD NIVEL TSA TS16 MA 12.14 177012000. AUTOCAD NEL” SAT. 19SA 1416 i7oira800 AUTOCAD NIVEL It 00 0812 SA 12-14 t7eoI000 AUTOCAD NIVEL IV” SA Té-190 G8.10 i7i0i/a000 BORLAND C++ NIVELT (00 09-12.JU 14:16: 1700172000" ‘BORLAND C++ NIVEL ii” "06 16-1850 16-20 1710172000 BORLAND C++ NIVEL il” “00 16-1800 1a Tove COREL ORAW NVEL I" SA08-12584 13-14 70172000" nSesceU nouvel i” SA 6 Sa ie 18 tine WSEICEL atone” 603800 1 a0, “MS-PROVECT TSA Te-19'SA 70-22 17172000 | MS-WORO 2000NIVEL1 00 08-12. Vi 14-16 17/01/2000 Wg Won zoo NVELI” 56 13 1650 68 00 Fei BOWexouloea 70 uNeLi Wiisz2 W102 ova Eiemplo 0: Escribir una sentencia SQL que presente los campos cédigo de curso y nombre del curso. SELECT idcurso, curso FROM Cursos; MS-EXCELL 2000NIVEL MS-EXCELL 2000NIVEL II MS-PROYECT MS-WORD 2000NIVEL | MS-WORD 2000 NIVEL II WWERBUILDER 7.0 NIVEL | TURBO PASCAL 7.0 NIVEL | MISUAL BASIC 6.0 NIVEL T™ VISUAL BASIC 6.0 NIVEL! | VISUAL CAS NIVEL T VISUAL FOXPRO 6.0 NIVELT | VISUAL FOXPRO 6.0 NIVEL Il _ VISUAL FOXPRO 6.0 NIVEL lll, SQL SERVER 7.0 NIVE! SQLSERVER 7.O NIVEL TT WINDOWS 98 NIVEL1 r 226 A&C Editores Capitulo 7 - Base de Datos Campos Calculados Ademas de las. columnas cuyos valores provienen directamente de la Base de Datos, una consulta SQL puede incluir campos calculados cuyos valores se calculan a partir de los valores de los datos almacenados. Para solicitar un campo calculado, se especifica una expresion SQL en la lista de seleccién. Las expresiones SQL pueden contener sumas, restas, multiplicaciones y divisiones. Para los ejercicios siguientes crearemos la Base de Datos Ventas, con las siguientes tablas: Categorias Nombre Tipo Amplitud idcategoria char 6 nombre varchar 20 Clave primaria: idcategoria Articulos Nombre Tipo Amplitud idarticulo char 6 idcategoria char 6 nombre varchar 30 unidad varchar 15 punitario numeric 7 2 pcosto numeric 7 2 stock numeric 5 0 npedido numeric 5 0 discontinuo numeric 1 0 Clave primaria: idarticulo Clave foranea: idcategoria A&C Editores 227 PowerBuilder 7.0 Enterprise Empleados Nombre Tipo Amplitud idempleado char 6 apaterno varchar 30 amaterno varchar 30 nombre varchar 30 foto long binary cargo varchar 15 estado numeric 1 fingreso date direccion varchar 30 distrito char 3 telefono char 7 Clave primaria idempleado Clientes Nombre Tipo Amplitud idcliente char 6 nombres varchar 30 direccion varchar 30 iddistrito char 3 telefono char 7 estado numeric 1 Clave primaria: idcliente Clave fordnea: iddistrito Facturas Nombre Tipo Amplitud idfactura char 6 idcliente char 6 fecha date idempleado char 6 total numeric 7 2 228 A&C Editores Capitulo 7 - Base de Datos igv numeric ff 2 tpagO numeric 7 2 Clave primaria: idfactura Clave foranea: idcliente idempleado Detalles_Fact Nombre Tipo Amplitud idfactura char 6 idarticulo char 6 nombre varchar 30 punitario numeric 7 2 cantidad numeric 7 2 stotal numeric 7 2 Clave primaria: idfactura + idarticulo Clave foranea: idarticulo Distritos Nombre Tipo Amplitud iddistrito char 3 nombre varchar 30 Clave primaria: iddistrito Control Nombre Tipo Amplitud idcondicion numeric 6 idarticulo numeric 6 idempleado numeric 6 idcliente numeric 6 idfactura numeric 6 Clave primaria: idcondicion A&C Editores 229 PowerBuilder 7.0 Enterprise Ejemplo 03: Escribir una sentencia SQL que presente los campos cédigo de articulo, nombre del articulo y stock valorado (precio * stock). SELECT idarticulo, nombre, punitario * stock FROM Articulos; Epson LX<300 o0002 Epson FX1170 looo003 “Epson Fx2170 1320000 o00004 EpsontG-2070—~*~*~S~—S 7 1150000 (000005 Epson Styllus 300 Seema 3500 00 looc006" Epson Stylus 1620 9000 00 000007" Sansung SVGA 0.28 5500 00, 00008 View Sony Color SVG eee 5400 00 UG Color "2500 00, Pentium MMX 200 Mhz “28200 60 Pentium MMX 233 Mhz 43700,00 Pentium MMX 300 Mhz : 2500000 Compac Presario 2200 28000 010, pac 6 ~— 30000 00 Compac Presario 4524 : 3200000 Compac Presario 380 36000,00 Ejemplo 04: Escribir una sentencia SQL que presente los campos cédigo de articulo, nombre del articulo y la utilidad por articulo (precio unitario — precio de costo). SELECT idarticulo, nombre, punitario - pcosto FROM Articulos; 230 A&C Editores Capitulo 7 - Base de Datos [dericula Nombre __Arficulos,punitaria Ariculos. posto, VEpsonFxt170 TO. Epson FX2170 ‘Epson LO-2070 “Epson Stylus 300 “Epson Styllus 1520 ‘Sensung SVGA0.28 View Sony Color SV (6 Color ‘Pentium MN 200 Miz Pentium MIM 233 Mihi ‘Pentium MM 300 Mhz ies caress Presario 2200 (000017 imation 35 / 3.00) Ejemplo 05: Escribir una sentencia SQL que presente los campos cédigo de articulo, nombre del articulo, precio unitario y IGV (IGV es un campo calculado). SELECT idarticulo, nombre, punitario, IGV = punitario * 0.18 FROM Articulos; A&C Editores 231 PowerBuilder 7.0 Enterprise Idatticulo = Nombre Punitariol lov 000001 Epson L<300 | 400,00)" "72,0000 (000002 Epson FX-1170 i | (000003 Epson Fx2170 000004 Epson L@-2070- 000005” Epson Styilus 300 loonoa6 “Epson Styilus 1620 [000007 Sansung SVGA 0.28 locoo08 View Sony Color SVG 540,00) 87 2000 loocoos ls Color 600,00 30,0000 000010 Pentium MMX 200 Mh: 200,00,” 3780000 000017 Pentium MM 233 Mi i 207 0000. 63,0000 900,90," 162,000) 560,00, 99,0000 504 0000: 40 0000 000015 Compac Presario 45: &76,0000 000016” Compac Presario 380 | 3600.00) 6300000 Seleccién de Ia fila (clausula WHERE) Las consultas SQL que recupera todas las filas de una tabla son utiles para inspeccién y elaboracién de informes sobre la Base de Datos. Generalmente se deseard seleccionar solamente parte de las filas de una tabla, y sdlo se incluiran esas filas en los resultados. La clausula WHERE se emplea para especificar las filas que se desean recuperar. La clausula WHERE consta de la palabra clave WHERE seguida de una condicién de busqueda que especifica las filas a recuperar. Por cada fila, la condicién de busqueda puede producir uno de tres resultados: 232 A&C Editores Capitulo 7 - Base de Datos * Si la condicién de busqueda es TRUE (CIERTA), la fila se incluye en los resultados de la consulta. e Si la condicién de busqueda es FALSE (FALSA), la fila se excluye de los resultados de la consulta. * Si la condici6n de busqueda tiene un valor NULL (DESCONOCIDO), Ia fila se excluye de los resultados de la consulta. Ejemplo 06: Escribir una sentencia SQL que presente los campos cédigo de articulo, nombre del articulo, precio unitario pertenecientes a la categoria monitores. SELECT idarticulo, nombre, punitario FROM Articulos WHERE idcategoria = ‘'MONO01'; Idarticulo, Nombre Punitario, 00007 ‘Sansung SVGA0.28 | 650,00) oo0008 ‘View Sony Color 5 540,00 000009 LG Color Ejemplo 07: Escribir una sentencia SQL que presente los campos cédigo de articulo, nombre del articulo, stock, de los articulos cuyo stock sea menor igual que 10 unidades. SELECT idarticulo, nombre, stock FROM Articulos WHERE stock <= 10; A&C Editores 233 PowerBuilder 7.0 Enterprise Epson FX-1170 ST ‘Epson LQ-2070 10) 5 Epson Stylus 300 10 Fos oeelimed : a “10 iew Sony Color SVG. 10 LG Color : 5. Pentium MMX 300 Mhi 10, (Compac Presario 2200 10, i ompac Presario 4506 10; mpac Presario 4524 10) 3 Compac Presario 380, Ejemplo 08: Escribir una sentencia SQL que presente los campos cédigo de articulo, nombre del -articulo, precio unitario, pertenecientes a la categoria impresoras pero con un precio unitario menor igual a 500. SELECT idarticulo, nombre, punitario FROM Articulos WHERE idcategoria = IMP001' AND punitario < 500; Idarticulo __ Nombre 1000001 ° Epson LX-300 Punitario} 234 A&C Editores Capitulo 7 - Base de Datos Filas duplicadas (DISTINCT) Si una consulta incluye la clave primaria de una tabla en su lista de seleccidn, entonces cada fila de resultados sera unica (ya que la clave primaria tiene un valor diferente de cada fila). Si no se incluye la clave primaria en los resultados, pueden producirse filas duplicadas. Se puede eliminar filas duplicadas de los resultados dela consulta insertada la palabra clave DISTINCT en la sentencia SELECT justo antes de la lista de seleccién. Si se omite la palabra clave Distinct, SQL no elimina las filas duplicadas. También se puede especificar la palabra clave ALL para indicar explicitamente que las filas duplicadas sean tetenidas, pero es innecesario ya que éste es el comportamiento por omisi6n. Condicién de busqueda SQL ofrece un rico conjunto de condiciones de busqueda que permite especificar muchos tipos diferentes de consultas eficaz y naturalmente. A continuacién describimos cinco condiciones basicas de busqueda (llamadas predicadas en el estandar ANSI/ISO): * Test de comparacién. Compara el valor de una expresién con el valor de otra. ¢ Test de rango. Examina si el valor de una expresién cae dentro de un rango especificado de valores. * Test de pertenencia a conjunto. Comprueba si el valor de una expresion se corresponde con uno de un conjunto de valores. * Test de correspondencia con patron. Comprueba si el valor de una columna que contiene datos de cadena de caracteres se corresponde a un patron especificado. * Test de valor nulo. Comprueba si una columna tiene un valor NULL (desconocido). A&C Editores : 235 PowerBuilder 7.0 Enterprise Test de comparacién (=, <>, <, <=, >, >=) La condicién de busqueda mas comun utiliza en una consulta SQL es el test de comparacién. En un test de comparacién, SQL calcula y compara los valores de dos expresiones SQL por cada fila de datos. Test de rango (BETWEEN) SQL proporciona una forma diferente de condicién de busqueda con el test de rango (BETWEEN). EI test de rango comprueba si un valor de dato se encuentra entre dos valores especificados. Implica el uso de tres expresiones SQL. La primera expresién define el valor a comprobar; las expresiones segunda y tercera definen los extremos superior e inferior del tango a comprobar. Los tipos de datos de las tres expresiones deben ser comparables. Ejemplo 09: Escribir una sentencia SQL que presente los campos cédigo de articulo, nombre del articulo y precio unitario de los articulos cuyos precios sean mayores que 400 y menores que 1000. SELECT idarticulo, nombre, punitario FROM Articulos WHERE punitario BETWEEN 400 AND 1000; Nombre Punitario: 101 Epson X00 __ 400,00 00002 Epson Fx1170 e000 CO0006 Epson Styllus 120 900,00, oco007 Sansung SVGA0.28 550,00 oonnos LS Color SSS 0D 236 A&C Editores

You might also like