Sqlserver Powerbuilder SISTEMA MATRICULA

78
Programacion en PowerBuilder y Sql Server Ing. Oswaldo Navarrete E. Página 1 PowerBuilder SQL Server TECNICA DE PROGRAMACION, MODELO DE DATOS Y TECNICA DE PROGRAMACION, MODELO DE DATOS Y TECNICA DE PROGRAMACION, MODELO DE DATOS Y TECNICA DE PROGRAMACION, MODELO DE DATOS Y CONEXIÓN CONEXIÓN CONEXIÓN CONEXIÓN A BASE DE DATOS A BASE DE DATOS A BASE DE DATOS A BASE DE DATOS EN EL DESARROLLO DE EN EL DESARROLLO DE EN EL DESARROLLO DE EN EL DESARROLLO DE SOFTWARE EN POWERBUILDER Y SOFTWARE EN POWERBUILDER Y SOFTWARE EN POWERBUILDER Y SOFTWARE EN POWERBUILDER Y SQL SERVER SQL SERVER SQL SERVER SQL SERVER Entorno de Programacion: PowerBuilder Gestor de base de Datos: SQL Server Tecnología de conexion: ODBC/DSN Software modelo: Gestion academica de matricula y notas Ing. Oswaldo Navarrete Espejo Email: [email protected] Ica-Peru

Transcript of Sqlserver Powerbuilder SISTEMA MATRICULA

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 1

PowerBuilder

SQL Server

TECNICA DE PROGRAMACION, MODELO DE DATOS Y TECNICA DE PROGRAMACION, MODELO DE DATOS Y TECNICA DE PROGRAMACION, MODELO DE DATOS Y TECNICA DE PROGRAMACION, MODELO DE DATOS Y CONEXIÓN CONEXIÓN CONEXIÓN CONEXIÓN A BASE DE DATOSA BASE DE DATOSA BASE DE DATOSA BASE DE DATOS EN EL DESARROLLO DE EN EL DESARROLLO DE EN EL DESARROLLO DE EN EL DESARROLLO DE SOFTWARE EN POWERBUILDER YSOFTWARE EN POWERBUILDER YSOFTWARE EN POWERBUILDER YSOFTWARE EN POWERBUILDER Y SQL SERVERSQL SERVERSQL SERVERSQL SERVER

Entorno de Programacion: PowerBuilder Gestor de base de Datos: SQL Server Tecnología de conexion: ODBC/DSN Software modelo: Gestion academica de matricula y notas Ing. Oswaldo Navarrete Espejo Email: [email protected] Ica-Peru

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 2

CONTENIDO

INTRODUCCIÓN POWRBUILDER Y SQL SERVER Generalidades Principales características Datawindows Creacion de datawindows control con datawindows obj eto Conexión ODBC/DSN Creacion de la base de datos Conexión a Microsoft Server Aspectos básicos Instancia de SQL Server Quien es dbo? Que es cuenta de usuario? Conexión con las base de datos Profile de conexión Creacion del WorkSpace, la aplicación y el script d e conexión ESTRUCTURA Y DESARROLLO DEL SISTEMA Estructura y Codigos fuentes de formularios Formulario de procesamiento de datos de asignaturas Formulario de procesamiento de datos de alumnos Formulario de procesamiento de datos de docentes Formulario de procesamiento de datos de matricula Formulario de procesamiento de notas-Primer parcial Formulario de procesamiento de notas-Segundo parcia l Windows principal y Windows menú Base de datos y tablas REFERENCIAS BIBLIOGRAFICAS

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 3

INTRODUCCION Power Builder permite a los desarrolladores los beneficios de un desarrollo rápido de aplicaciones de Base de Datos basadas en Objetos, permitiendo aprovechar las ventajas de la arquitectura Cliente/Servidor y usar todas las facilidades del Graphic User Interface. (GUI). Las aplicaciones desarrolladas en Power Builder son independientes del sistema de administración (DBMS) de Base de Datos (DB) que se esté usando. Power Builder cuenta con comandos y funciones orientadas principalmente al manejo de bases de datos relaciónales, pero además cuenta con generadores de informes, pantallas, menús, consultas (SQL) y aplicaciones. El trabajo esta principalmente orientado al desarrollo de aplicaciones Cliente/Servidor con conectividad a Bases de Datos, al uso de comandos y funciones, siempre orientado hacia el desarrollo de aplicaciones de la vida real. En el desarrollo de un sistema informatico Cliente/Servidor en Power Builder, se necesita conocer el uso correcto de la sintaxis de conexión a la base de datos en el evento OPEN del desarrollo de la aplicación, asi como también establecer las propiedades de conexión a bases de datos mediante el profile de bases de datos, el desarrollo y estructura de datawindows, asi como el manejo de la interfaz de usuario con el empleo de diversos controles de objetos y comandos

¿Control de Datos y manejo de informacion, sin util izacion de los Gestores y procesadores de Bases de Datos?

En virtud del actual desarrollo de la Tecnologia informatica, el Control Computarizado de una Unidad Academica de un Centro Superior de Estudios constituye un proceso academico/administrativo de vital importancia en el procesamiento de datos que proyecte una administracion agil, oportuna, seria y responsable de la informacion academica de los alum nos, docentes y asignaturas de cualquier año academico/ciclo. Y si el servicio informatico se brinda a traves de internet, se deduce que dicha Unidad Academica utiliza las herramientas informaticas en concordancia con las exigencias informaticas y computarizadas de la modernidad tecnologica del manejo administrativo de la Unidad Academica.

En la mayoria de las unidades academicas de los Centros Superiores de Estudios existe aun el control manual de matriculas a traves de pre-fichas que estructura el alumno mediante una accion personal en las Oficinas administrativas con perdida de tiempo, tramites burocraticos y deficiencias en la atencion administrativas. No brindan informacion oportuna de los cursos, syllabus, docentes y carga lectiva y con la exigencia de tramites administrativos que se inicia en el Decanato, pasa a la Direccion Academica luego al Secretario Academico, al administrativo y finalmente llega la documentacion al docente para iniciar el retorno documentario

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 4

POWERBUILDER Y SQL SERVER

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 5

Generalidades

PowerBuilder es una herramienta de desarrollo de clase empresarial desarrollada por la empresa Sybase. PowerBuilder es orientada a objetos y permite el desarrollo de diferentes tipos de aplicaciones y componentes para arquitecturas cliente/servidor, distribuidas y Web.

PowerBuilder es un entorno grafico de programación que esta compuesto de diferentes herramientas que permiten el desarrollo rapido de aplicaciones. Con estas herramientas se pueden desarrollar aplicaciones Cliente / Servidor a traves de ODBC o Drivers Nativos para la Base de Datos.

Una aplicación Cliente/Servidor pone en comunicación una estacion de trabajo con un Servidor de Bases de Datos Central. Este modelo 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 las estaciones de trabajo remotas (Clientes). Las aplicaciones que se ejecutan en las estaciones Cliente, acceden a los datos que se encuentran en el Servidor

PowerBuilder es un software de aplicación que se utiliza para desarrollar aplicaciones de manera rapida y usa tecnologías RAD como Cliente/Servidor y las iniciativas orientadas al Web

PowerBuilder se usa como herramientas de desarrollo la cual utiliza y manipula datos de una o varias bases de datos a la vez de diferentes fabricantes de gestion de bases de datos relacionales. Para ello debe conectarse a la base de datos utilizando una conexión para cada base de datos. En Power Builder se pueden crear aplicaciones no solo para Windows, sino tambien para UNÍX y MACINTOSH.

Power Builder es un producto SYBASE, el cual viene acompañado de una base de datos relacional de nombre ANYWHERE

Power Builder soportA multi plataformas desarrolladas y desplegadas

Principales características

Características basicas de Power Builder

. Soporte una gran variedad de sistemas de gestion de base de datos, tales como Sybase, Oracle, Sql Server, Dbase(dbf), entre otras . Tiene capacidad de acceder a información de multiples bases de datos y mostrar esta información en una unica ventana . Se trabaja en un ambiente cliente / servidor . Posee un objeto inteligente llamado DataWindows que realiza directamente la interfaz con la base de datos sin requerir que el programador conozca SQL . Capacidad de utilizar sentencias SQL combinadas en el codigo . Se puede trabajar en multiples plataformas ya que soporta diferentes sistemas operativos y posee drivers nativos para las bases de datos mas comerciales . La creación de aplicaciones es sencilla . Se realiza poca programación

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 6

PowerBuilder incluye, dentro de su ambiente integrado de desarrollo, herramientas para crear la interfaz de usuario, generar reportes y tener acceso al contenido de una base de datos. PowerBuilder también incluye un lenguaje de programación llamado Powerscript , el cual es usado para especificar el comportamiento de la aplicación en respuesta a eventos del sistema o del usuario, tal como cerrar una ventana o presionar un botón. Las aplicaciones desarrolladas con PowerBuilder se ejecutan exclusivamente en el sistema operativo Microsoft Windows, aunque cierto tipo de componentes que no incluyen una interfaz de usuario (llamados componentes no visuales o NVOs) y que encapsulan sólo lógica de aplicación, se pueden ejecutar en otros sistemas operativos como Unix, usando la "Máquina Virtual de PowerBuilder" o PBVM incluida dentro del servidor de aplicaciones EAServer de Sybase.

Adicionalmente, PowerBuilder posee un objeto nativo para la gestión de datos llamado DataWindow, el cual puede ser usado para crear, editar y visualizar datos de una base de datos. Este objeto patentado por Sybase da al desarrollador un conjunto amplio de herramientas para especificar y controlar la apariencia y comportamiento de la interfaz de usuario, y también brinda acceso simplificado al contenido de la base de datos. Hasta cierto punto, el DataWindow libera al programador de las diferencias entre sistemas de gestión de base de datos de diferentes proveedores. Recientemente, Sybase introdujo al mercado el DataWindow.NET, un componente que extiende las bondades del DataWindow y acelera el rendimiento de aplicaciones en ambientes de desarrollo .NET.

Datawindows

Es una tecnología patentada por Sybase, permite acelerar el desarrollo de aplicaciones y provee capacidades de acceso a datos, de validación y de actualización. En resumen, el DataWindow es un objeto de PowerBuilder que permite interactuar con una base de datos.

Características

• Incorpora más de 200 funciones y eventos, ya previamente incorporados dentro del DataWindow.

• Soporte para formato y validación de campos. • Puede ser manejado por Base de Datos o por fuentes externas. • Se puede incorporar tanto en Objetos Visuales como en Objetos No-Visuales. • Los DataWindows no sólo se pueden utilizar en aplicaciones Cliente/Servidor sino que también

se pueden utilizar para crear aplicaciones Web que se realicen con PowerBuilder.

Algunos tipos de presentación de los DataWindows:

• Crosstab • Freeform • Graph • Grid • Group • Label • Tabular

Es la característica mas importante del Power Builder. El DataWindows es la forma en que sus aplicaciones presentan los datos de la base de datos y quizas incluso datos no específicamente de una base de datos al usuario final, DataWindows pueden ser pantalla de consulta, formato de entrada de datos, reporte de impresión,etc.

Un Datawindows es un objeto visual de acceso a los datos

Basicamente este pintor genera una representación visual de una sentencia sql de tipo select

Un Datawindows es un objeto que se usa para recuperar, presentar y manipular datos de una base de datos relacional u otra fuente de datos

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 7

Diseño de un Datawindows

1. El primer paso consiste en seleccionar la opción New. 2. De inmediato insurge la pantalla New que permite definir el tipo de presentacion

En esta pantalla elegimos el estilo de presentación del Datawindows (por ejemplo podemos utilizar el tipo GRID)

3. Escoger un Data Source para el objeto Datawindow en la pantalla siguiente (Por ejemplo se puede escoger la fuente de datos SQL Select):

4. Ejecutamos click en Next 5. En la siguiente pantalla elegimos la tabla que queremos manejar con el Datawindows

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 8

6. Seleccionada la tabla ejecutamos click en Open . Insurge la siguiente pantalla con los campos del Datawindows

7. Una vez seleccionados los campos de la tabla de trabajo del Datawindows retornamos a de configuración de la presentación del objeto

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 9

Ejecutamos click en Next

8. Visualizamos la siguiente pantalla con las características del Datawindows

Ejecutamos click en Finish y se presenta el Datawindows

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 10

9. Finalmente le damos un nombre al Datawindows

Para terminar se ejecuta click en OK

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 11

Propiedades de actualización de un datawindows Por defecto el objeto DataWindow solo puede actualizar una tabla. Para indicar las propiedades de actualización ejecute el comando U p d a t e P r o p e r t i e s del menú Row , y tendremos acceso al diálogo S p e c i f y U p d a t e P r o p e r t i e s , es en estediálogo donde indicaremos las características de actualización que tendrá elDataWindow. Finalizado el proceso de creación del datawindows, es necesario definir las propiedades de actualizacion de las tablas y de esta manera determinamos si el datawindows tiene la capacidad de actualizacion de datos. Entonces, vamos a definir la forma en que el datawindows deberá insertar, actualizar o incluso borrar cualquier numero de filas o datos de una tabla:

1. Registrar las propiedades de actualizacion de ta blas

En la pantalla principal seleccione la opción ROWS.

Al ejecutar click en esta opción Rows se nos presenta una nueva pantalla, en la cual elegimos la opción Update properties

Al ejecutar click en la subopcion Update properties insurge la siguiente pantalla que nos permite especificar las propiedades de actualización de datos

Opcion ROWS

Update Properties

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 12

Una tabla suele tener una columna o una combinación de columnas cuyos valores identifican de forma única cada fila de la tabla. Estas columnas se denominan claves principales de la tabla y exigen la integridad de entidad de la tabla

Es muy importante definir las propiedades de actualización de la tablas, por cuanto el sistema exige al procesar datos que exista una identificación única de cada fila de la tabla. Este es el caso de procesamiento de notas y matriculas, por ello el diseño del datawindows requiere fijar estas propiedades.

Una clave primaria puede estar definida por un grupo de atributos que si bien pueden repetirse en un mismo atributo, las combinaciones existentes en cada línea es única.

Las características de la actualización de la información en el datawindows son:

ALLOW UPDATE : Esta casilla simplemente indica si el datawindows tiene la capacidad de actualizar o no, si esta casilla no esta marcada entonces todas las opciones de la ventana no están disponibles, ni la capacidad de actualizar por medio de la función UPDATE()

TABLE TO UPPATE : Indica el nombre de la tabla a la que afectara en acciones de actualización

Where Clause for Update/Delete

KEY COLUMNS : Esta opción esta descrita para ser utilizada cuando únicamente un usuario utiliza la tabla, o igualmente cuando la tabla es actualizada de forma LOCK o bloqueada

KEY AND UPDATABLE COLUMNS :: Actualiza basado en las columnas que pueden serlo

KEY AND MODIFIED COLUMNS : Genera un script tipo SQL utilizando como base las columnas descritas en la parte de columnas únicas o llave única

Key Modification

USE DELETE THEN INSERT: Genera 2 scripts tipo SQL al momento de hacer un update en la tabla, el primero esta basado en un DELETE y el segundo utiliza uno basado en un INSERT

USE UPDATE: Esta actualiza la tabla basado en un script SQL que genera un UPDATE

UNIQUE KEY COLUMN(S): Aqui despliega las columnas que en un principio deberian estar relacionadas con una llave primaria, o en otras palabras, en columnas que deberian ser tratadas como únicas, adicionalmente a esta llave primaria, el usuario puede seleccionar columnas adicionales, para ser tratadas como únicas, el botón PRIMARY KEY, incluye directamente las columnas que componen la llave primaria de la tabla, de no existir limpia todas las columnas seleccionadas

IDENTITY COLUM: Incluye una columna tipo identity o auto-incremental

Con todo lo anterior expuesto determinas la forma en que el datawindows deberá insertar, actualizar o incluso borrar cualquier numero de filas o datos de una tabla. Y por supuesto esta va a ser reflejado en el momento del update del datawindows

2. Registrar el TAB ORDER de las columnas del Datawi ndows.

Una ventana Windows que contiene un datawindows para la modificación de datos como es el caso de registros de notas, requiere en forma obligatoria que a través de la ventana principal seleccione FORMAT y luego TAB ORDER y proceda a registrar numeración de cada campo del datawindows, ya que si permanece en cero no podrá modificar datos del datawindows

La siguiente imagen ilustra el tab order del datawindows que permite la modificación de datos

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 13

CREACION DE WINDOWS (VENTANA) CON UN DATAWINDOWS CONTROL Y UN DATAWINDOWS OBJETO

Un objeto DataWindows debe ser insertado con una ventana regular, en todo diseño de un DataWindow forman parte dos objetos:

1.- DataWindow Object .- que es diseñado con el DataWindow Painter.

2.- DataWindow Control .- Es un control donde se insetara el DataWindows Object

La siguiente pantalla nos permite apreciar el datawindows control asi como el datawindows objeto

Para crear un datawindows control con un datwindows objeto ejecutamos los siguientes pasos:

1. Ejecutar clic en la opción NEWS

Columnas numeradas. El valor 0 no permite editar datos

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 14

2. En la ventana News que insurge seleccionamos PB Object

Luego seleccionamos Windows y ejecutamos click en Ok

3. Se presenta la interfaz de usuario (ventana Windows) y en ella insertamos el datawindows object, para lo cual seleccionamos la opción INSERT, luego CONTROL y en la pantalla de objetos seleccionamos DATAWINDOWS . La siguiente grafica ilustra lo mencionado:

4. Insertamos el datawindows objeto en la ventana Windows y luego se definen las propiedades del data Windows objeto. Para ello ejecutamos click derecho y seleccionamos propiedades, inmediatamente fijamos el nombre de la ventana control y el datawindows objeto que debemos trabajar

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 15

5. Finalizado la creación de un datawindows control con un datawindows objeto, se proceda a desarrollar el script del evento OPEN para conectar el datawindows con la base de datos, y limpiar el bufer del datawindows y editar el SQL del datawindows. Se trae la información (retrieve()) de la consulta que esta en el datawindows objeto

Las funciones principales de un Datawindows son:

SetTransObject . Hace que un control DataWindows use un objeto de transacción especificado por el programador. El objeto de transacción proporciona la información necesaria para comunicarse con la Base de Datos. Retorna 1 si ha ocurrido un error. Sirve para conectar tu dw con la BD

Retrieve(). Trae la información de la consulta que esta en el datawindows object

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 16

InsertRow(0). Inserta un registro en blanco en tu Dw

DeleteRow(Row). Borra el Dw del registro especifico en la variable ROW

Update(). Hace la actualizacion del Dw sobre la tabla

El INSERTROW y el DELETEROW no ejecuta los cambios en la tabla, sino solamente en tu aplicación.

CONEXION ODBC/DSN, TECNICA DE PROGRAMACION Y

MODELO DE DATOS PowerBuilder es un entorno grafico de programación orientado a objetos muy potente y profesional, mediante el cual se desarrollan aplicaciones Cliente/Servidor con tecnologia RAD y abierto a la mayoria de los Gestores de bases de datos del mercado (Sql Server, Oracle, Dbase, Access) SQL Server es un potente Gestor de Base de Datos relacional con el cual se procesan los datos de las tablas del presente trabajo a traves de los DataWindows. En tal consideración el Power Builder como el SQL Server constituye una real alternativa de trabajo en base de datos cuando se requiere alta velocidad y procesamiento masivo de datos

Antes de comenzar a trabajar en una aplicación PowerBuilder se debe:

- Crear la base de datos Sql Server - Establecer el enlace ODBC DSN - Crear un database profile .

CREACION DE LA BASE DE DATOS CON SQL SERVER 2005

MICROSOFT SQL SERVER 2005

Microsoft SQL Server es un sistema para la gestión de bases de datos producido por Microsoft basado en el modelo relacional. Sus lenguajes para consultas son T-SQL y ANSI SQL. Microsoft SQL Server constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle o PostgreSQL o MySQL .

Características de Microsoft SQL Server

• Soporte de transacciones. • Escalabilidad, estabilidad y seguridad. • Soporta procedimientos almacenados. • Incluye también un potente entorno gráfico de administración, que permite el uso de comandos

DDL y DML gráficamente. • Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y

los terminales o clientes de la red sólo acceden a la información. • Además permite administrar información de otros servidores de datos.

Este sistema incluye una versión reducida, llamada MSDE con el mismo motor de base de datos pero orientado a proyectos más pequeños, que en sus versiónes 2005 y 2008 pasa a ser el SQL Express Edition, que se distribuye en forma gratuita.

Para el desarrollo de aplicaciones más complejas (tres o más capas), Microsoft SQL Server incluye interfaces de acceso para varias plataformas de desarrollo, entre ellas .NET, pero el servidor sólo está disponible para Sistemas Operativos Windows.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 17

Cada instalación de SQL Server tiene varias bases de datos. SQL Server tiene cuatro bases de datos del sistema (master, model, tempdb y msdb) y cada instalación de SQLServer tiene una o varias bases de datos de usuarios. La siguiente grafica nos muestra las bases de datos del sistema y la de usuarios instalados para el presente trabajo:

SQL Server esta diseñado para operar de forma eficiente en varios entornos: - Como sistema de base de datos cliente-servidor de dos estratos o de varios estratos - Como sistema de bases de datos de escritorio

Los sistemas cliente-servidor estan construidos de tal modo que la base de datos puede residir en un equipo central llamado servidor y ser compartida por varios usuarios. Los usuarios tienen acceso al servidor a traves de una aplicación de cliente o de servidor.

En un sistema cliente-servidor de dos estratos , los usuarios ejecutan una aplicación en su equipo local, llamado cliente, que se conecta a traves de la red con el servidor que ejecuta SQL Server. La aplicación de cliente ejecuta las reglas de la compañía y el codigo necesario para presentar el resultado al usuario. Tambien se conoce como cliente amplio - En un sistema cliente-servidor de varios componentes , la logica de la aplicación de cliente se ejecuta en dos ubicaciones: - El cliente reducido se ejecuta en el equipo local del usuario y se encarga de presentar resultados al

usuario - La logica de la compañía se encuentra en aplicaciones de servidor que se ejecutan en un servidor.

Los clientes reducidos solicitan funciones a la aplicación de servidor, a su vez, es una aplicación multiproceso capaz de operar con varios usuarios.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 18

Conexión a Microsoft SQL Server 2005 Database Engi ne (Motor de base de datos de SQL Server 2005). Aspectos básicos Para la conexion a Sql Server debemos tener en cuenta tres aspectos: Tipo de Servidor, Nombre del servidor y Autenticacion.

Tipo de servidor

Al registrar un servidor desde el Explorador de objetos, seleccione el tipo de servidor al que se conectará: Database Engine (Motor de base de datos), Analysis Services, Reporting Services, SQL Server Mobile o Integration Services. El resto del cuadro de diálogo muestra simplemente las opciones que se aplican al tipo de servidor seleccionado. Cuando se registra un servidor desde Servidores registrados, el cuadro Tipo de servidor es de sólo lectura y coincide con el tipo de servidor que se muestra en el componente Servidores registrados. Para registrar un tipo distinto de servidor, seleccione Database Engine (Motor de base de datos), Analysis Services, Reporting Services, SQL Server Mobile o Integration Services desde la barra de herramientas Servidores registrados antes de comenzar a registrar un nuevo servidor.

Nombre del servidor

Seleccione la instancia de servidor a la que va a conectarse. De forma predeterminada, aparecerá la instancia de servidor a la que se ha conectado por última vez.

Nota: Para conectarse a una instancia de usuarios activos de SQL Server 2005 Express Edition, utilice el protocolo de canalizaciones con nombre que especifica el nombre de canalización, tal como np:\\.\pipe\3C3DF6B1-2262-47\tsql\query. Para obtener más información, vea la documentación de SQL Express.

Autenticación

Dispone de dos modos de autenticación al conectarse a una instancia del Database Engine (Motor de base de datos):

Modo de autenticación de Windows (autenticación de Windows)

El modo de autenticación de Microsoft Windows permite al usuario conectarse mediante una cuenta de usuario de Windows.

Autenticación de SQL Server

Cuando un usuario se conecta con un nombre y una contraseña de inicio de sesión determinados desde una conexión no confiable, SQL Server realiza la autenticación y comprueba si se ha configurado una cuenta de inicio de sesión de SQL Server y si la contraseña especificada coincide con la almacenada anteriormente. Si SQL Server no tiene configurada una cuenta de inicio de sesión, la autenticación no se realizará correctamente y el usuario recibirá un mensaje de error.

Nombre de usuario Escriba el nombre de usuario con el que se va a conectar. Esta opción sólo está disponible si ha seleccionado la autenticación de Windows para conectarse.

Inicio de sesión

Escriba el inicio de sesión con el que va a conectarse. Esta opción sólo está disponible si ha seleccionado la autenticación de SQL Server para conectarse.

Contraseña

Escriba la contraseña del inicio de sesión. Esta opción sólo es editable si ha seleccionado la autenticación de SQL Server para conectarse.

Conectar

Haga clic aquí para conectarse al servidor seleccionado anteriormente.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 19

Opciones

Haga clic aquí para que se muestren las opciones adicionales de conexión al servidor, como registrar un servidor y recordar la contraseña.

¿ Como se conecta Microsoft SQL Server Management S tudio con la base de datos? En el presente trabajo la conexión es la siguiente:

En el trabajo con el Gestor de Bases de Datos SQL Server debemos tener en cuenta tres aspectos importantes: - Instancia de SQL Server - dbo - Cuenta de Usuario INSTANCIA DE SQL SERVER 2005 Una instancia de SQL Server es una instalación del motor de bases de datos SQL Server con una configuración determinada y sus propias bases de datos (las bases de datos del sistema y la o las bases de datos de usuario). En un mismo equipo, pueden instalarse y ejecutarse varias Instancias (distintos procesos sqlserver.exe, cada uno con su configuración y bases de datos). SQLEXPRESS es el nombre de la instancia creada en la instalacion por defecto del motor de bases de datos de SQL Server. Por lo tanto para usar esta instancia, podemos hacerlo de dos formas, una usando (local) delante de la instancia creada: (local)\SQLEXPRESS y la otra es usando el nombre del equipo, por ejemplo: PC4\SQLEXPRESS. Esta instancia SQLEXPRESS tiene una configuración determinada y sus propias bases de datos (las bases de datos del sistema, y la o las bases de datos de usuario)

Cada base de datos mantiene sus propios ficheros de datos (donde se almacenan las tablas, índices, vistas, procedimientos almacenados, y resto de objetos de base de datos), ficheros LOG (donde se almacenan las transacciones de dicha base de datos), configuración, intercalación, nivel de compatiblidad.

En nuestro caso se instala una unica instancia de SQL Server con nombre de bases de datos únicos Según el entorno de trabajo y las características de procesamiento informatico se instalan la o las Instancias de SQL Server. Es recomendable instalar cada instancia en un servidor dedicado. Es decir si necesitamos cuatro instancias, utilizar cuatro servidores. Es evidente que en muchos casos esto se deseara reducir por costes, y/o porque no sea necesario una infraestructura tan exquisita. En ocasiones surge la duda de si utilizar multiples instancias o multiples bases de datos, cuando solo disponemos de un único servidor. Esta problemática tiene dos puntos de vista: Es mas interesante una única instancia que sobrecargar la maquina con multiples instancias que puedan pelear por los recursos (memoria, procesador y acceso a disco), y además simplificar la administración (copias de seguridad, service packs, etc). Sin embargo, si tenemos una única instancia de SQL Server, y deseamos utilizarla para cubrir varios entornos de ciclo de vida, tenemos el problema de que los nombres de las bases de datos son únicos, es decir, si la base de datos de nuestra Intranet en el entorno de desarrollo y en el entorno de producción se llama ProcesoDB, para el entorno de pruebas tendremos que darle otro nombre.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 20

QUIEN ES DBO O PROPIETARIO DE LAS BASES DE DATOS Que es dbo? SQL Server denomina dbo a aquellas cuentas de usuario que han creado bases de datos en la instancia y tambien a los usuarios miembros del rol sysadmin Si tu cuenta es dbo ya sea porque tu creaste la base de datos o porque eres miembro del grupo sysadmin, entonces todos los objetos que construyas seran propiedad de la cuenta dbo automáticamente. Ademas, gracias a que eres dbo, tienes todos los permisos para hacer cualquier cosa en la base de datos y tambien puedes asignarlos a otras cuentas de usuario Dbo es una cuenta de usuarios muy especial ya que no puede ser utilizada para establecer conexiones a la Base de Datos, pero cuenta con privilegios especiales. La cuenta dbo es especial también porque es el dueño de la Base de Datos.

En SqlServer todos los objetos tienen un dueño y aquellos objetos creados por cuentas que forman parte del rol sysadmin pertenecen a la cuenta dbo automáticamente. En contraste, aquellos objetos creados por cuentas que no son dbo pertenecen a las cuentas de usuario que los crearon. Por ejemplo si la cuenta juanp (quien es el dueño de la base de datos o miembro del grupo sysadmin crea una tabla llamada “alumnos”, entonces juanp no necesita calificar el nombre del objeto y puede referirse a dicha tabla simplemente como “alumnos”. Sin embargo, si juanp no es ni miembro del grupo sysadmin ni el creador de la base de datos, entonces la tabla le pertenece a el mismo y tendra que referirse a ella como “juanp.clientes” Todo objeto de la base de datos pertenece a un esquema. Cada usuario tiene un esquema por defecto. Si creas una tabla siendo dbowner (de ahí lo de dbo) y no indicas nada respecto al esquema se crea por defecto el objeto en el esquema dbo Dbo es el esquema predeterminado en SqlServer Las bases de datos han sido creadas en la instancia SQLEXPRES por la cuenta de usuario que maneja este equipo PC4 y por lo tanto es una cuenta dbo SQL Server denomina como dbo a aquellas cuentas de usuario que han creado bases de datos en la instancia y también a los usuarios miembros del rol sysadmin

QUE ES CUENTA DE USUARIO? Que es una cuenta de usuario? Una cuenta de usuario es la información que indica a Windows los archivos y carpetas a los que puede obtener acceso, los cambios que puede realizar en el equipo y las preferencias personales. Las cuentas de usuario permiten que se comparta el mismo equipo entre varias personas, cada una de las cuales tiene sus propios archivos y configuraciones. Cada persona obtiene acceso a su propia cuenta de usuario con un nombre de usuario y contraseña. Existen tres tipos distintos de cuentas: . Estandar . Administrador

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 21

. Invitado Cada tipo de cuenta proporciona al usuario un nivel diferente de control sobre el equipo. La cuenta estandar es la que se utiliza para las tareas de trabajo usuales. La cuenta de administrador proporciona el máximo control sobre un equipo y solo se debe utilizar cuando sea necesario. La cuenta de invitado se destina principalmente a personas que necesitan obtener acceso temporalmente a un equipo.

La siguiente imagen ilustra la cuenta de usuario del actual equipo PC4

Una cuenta de usuario es una colección de información que indica a Windows los arhivos y carpetas a los que puede obtener acceso, los cambios que puede realizar en el equipo y las preferencias personales. Las cuentas de usuario permiten que se comparta el mismo equipo entre varias personas, cada una de las cuales tiene sus propios archivos y configurciones. Cada persona obtiene acceso a su propia cuenta con un nombre de usuario y contraseña NOMBRE DEL SISTEMA: PC4 (Pc de sistema) NOMBRE DEL DOMINIO: PC4 NOMBRE DEL SERVIDOR: PC4\SQLEXPRESS AUTENTICACION: AUTENTICACION DE WINDOWS NOMBRE DE USUARIO: PC4/OSWALDO

CONEXION CON LA BASE DE DATOS

ADO contiene la colección de objetos para crear una conección a bases de datos y leer datos desde tablas, trabajando como una interface hacia l a fuente de datos.

ADO, sin embargo, no se comunica directamente con la base, sinó que accede a ella a traves de una interface intermediaria llamada OLE DB. En general, después de crear una conección a la base de datos, se puede ignorar la existencia de OLE DB, debido a que este driver hace todo su trabajo en " background". Existen dos maneras para que el proveedor OLE DB brinde acceso a una base de datos. Indirectamente De este manera se accede mediante un driver ODBC.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 22

Directamente De esta manera se accede mediante un driver OLE DB nativo.

Métodos para acceder a bases de datos Microsoft SQL Server.

a. Conectar a SQL Server con OLE DB

El modo preferido para conectar a una base de datos SQL Server, es utilizar un proveedor nativo OLE DB para SQL Server. Este ejemplo abre una conexión a la base de datos Pubs en un servidor Microsoft SQL Server llamado tuBase.

Este script crea una instancia del objeto Connection . Luego la conexión a SQL Server es abierta con un script de conexión que contiene 5 parametros: El proveedor OLE DB (Provider), la fuente de datos (data source), la base de datos (database), el nombre de usuario (user ID) y la clave (password).

El parámetro PROVIDER es utilizado para especificar el nombre del proveedor OLE DB a usar en la conexión, este ejemplo utiliza un proveedor OLE DB nativo para SQL Server. En es caso de no especificar ningún proveedor, se utilizará el driver ODBC para OLE DB por defecto.

El parámetro DATA SOURCE, es utilizado para proveer el nombre del Servidor SQL.

El parámetro UID indica el login para acceder al servidor SQL Server. Este ejemplo utiliza el login sa, sin embargo, es comveniente utilizar otro login, por cuestiones de seguridad.

Igualmente el parámetro UID es opcional, si no se coloca nada en el, la conexión será hecha con la cuenta IUSER_MachineName .

El parámetro PWD contiene la clave para acceder al servidor SQL.

Finalmente el parámetro DATABASE es utilizado para específicar una particular base de datos, localizada en el Servidor SQL.

b. Conectar a SQL Server con ODBC El método tradicional para conectar una base de datos es a traves de ODBC, y existen tres maneras para hacer esto. Guardando la información en el registro de Windows, en un archivo de texto o dentro del string de conexión mismo.

Crear un DSN de Sistema para Microsoft SQL

Antes de crear el script para almacenar la información de la conexión en el registro de Windows es necesario crear un DSN de Sistema.

1) Ejecutar el administrador de datos ODBC, dentro del panel de control.

2) Una vez adentro seleccionar DSN de Sistema o System DSN.

3) Presionar Agregar o Add, seleccionar SQL Server Driver y presionar Fin o Finish.

4) Ingresar un nombre (por ejemplo; miDns) y una descripción, y después seleccionar el Servidor o Server, al cúal se necesita conectar. Si el SQL Server esta localizado sobre alguna máquina con IIS (Internet Informatión Server), hay que seleccionar Local. Si en cambio, el Servidor esta localizado sobre Internet, hay que ingresar una dirección IP o un nombre de dominio o domain name.

5) Seleccionar el método de autenticación. Presionar Next o Próximo 3 veces para para evitar las próximas 2 pantallas.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 23

6) Finalmente se puede testear la nueva conexión, si todo salio bien, el nuevo DSN de Sistema o System DSN, ah sido creado.

Para utilizar esta conexión dentro de las páginas ASP o mediante otro medio (CGI por ejemplo) es necesario ingresar un script como este, en este caso para páginas ASP.

Crear un DSN de Archivo para Microsoft SQL Server

En lugar de almacenar la información de la conexión en el Windows Registry, como en el ejemplo anterior, es posible guardar esta información en un archivo de texto, creando un File DSN o DSN de Archivo. Para crear este archivo, hay que como siempre, abrir la fuente de datos ODBC, seleccionar File DSN o DSN de Archivo , presionar Agregar o Add y específicar el nombre y un lugar donde será almacenado el archivo que contendrá la información de la conexión. Los pasos que siguen son idénticos al ejemplo anter ior.

Si por ejemplo, el el DSN de Archivo que se creó, de llamara MiArchivoDSN, se tendría que utilizar un string como este para abrir la conexión a la base de datos.

Colocar la información de la conexión dentro del script.

Este método es sumamente sencillo, y no es necesario configurar nada en el Administrador ODBC.

Todos estos métodos son sencillos de implementar y la elección de alguno de ellos dependerá del tipo de conexión, seguridad e información que se tenga del servidor. Pero es necesario mencionar que es posible crear una conexión mediante un archivo Microsoft Data Link , cómo se explica en el artículo, Manejando conexiones con archivos Data Link. Este método puede simplificar y dar más seguridad a la conexión.

ADO contiene la colección de objetos para crear una conección a bases de datos y leer datos desde tablas, trabajando como una interface hacia l a fuente de datos.

ADO, sin embargo, no se comunica directamente con la base, sinó que accede a ella a traves de una interface intermediaria llamada OLE DB. En general, después de crear una conección a la base de datos, se puede ignorar la existencia de OLE DB, debido a que este driver hace todo su trabajo en "background". Existen dos maneras para que el proveedor OLE DB brin de acceso a una base de datos. Indirectamente De este manera se accede mediante un driver ODBC.

Directamente De esta manera se accede mediante un driver OLE DB nativo.

Métodos para acceder a bases de datos Microsoft SQ L Server.

a. Conectar a SQL Server con OLE DB

El modo preferido para conectar a una base de datos SQL Server, es utilizar un proveedor nativo OLE DB para SQL Server. Este ejemplo abre una conexión a la base de datos Pubs en un servidor Microsoft SQL Server llamado tuBase.

Este script crea una instancia del objeto Connection . Luego la conexión a SQL Server es abierta con un script de conexión que contiene 5 parametros: El proveedor OLE DB (Provider), la fuente de datos (data source), la base de datos (database), el nombre de usuario (user ID) y la clave (password).

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 24

El parámetro PROVIDER es utilizado para especificar el nombre del proveedor OLE DB a usar en la conexión, este ejemplo utiliza un proveedor OLE DB nativo para SQL Server. En es caso de no especificar ningún proveedor, se utilizará el driver ODBC para OLE DB por defecto.

El parámetro DATA SOURCE, es utilizado para proveer el nombre del Servidor SQL.

El parámetro UID indica el login para acceder al servidor SQL Server. Este ejemplo utiliza el login sa, sin embargo, es comveniente utilizar otro login, por cuestiones de seguridad.

Igualmente el parámetro UID es opcional, si no se coloca nada en el, la conexión será hecha con la cuenta IUSER_MachineName .

El parámetro PWD contiene la clave para acceder al servidor SQL.

Finalmente el parámetro DATABASE es utilizado para específicar una particular base de datos, localizada en el Servidor SQL.

b. Conectar a SQL Server con ODBC El método tradicional para conectar una base de datos es a traves de ODBC, y existen tres maneras para hacer esto. Guardando la información en el registro de Windows, en un archivo de texto o dentro del string de conexión mismo.

Crear un DNS de Sistema para Microsoft SQL

Antes de crear el script para almacenar la información de la conexión en el registro de Windows es necesario crear un DNS de Sistema.

1) Ejecutar el administrador de datos ODBC, dentro del panel de control.

2) Una vez adentro seleccionar DSN de Sistema o System DSN.

3) Presionar Agregar o Add, seleccionar SQL Server Driver y presionar Fin o Finish.

4) Ingresar un nombre (por ejemplo; miDns) y una descripción, y después seleccionar el Servidor o Server, al cúal se necesita conectar. Si el SQL Server esta localizado sobre alguna máquina con IIS (Internet Informatión Server), hay que seleccionar Local. Si en cambio, el Servidor esta localizado sobre Internet, hay que ingresar una dirección IP o un nombre de dominio o domain name.

5) Seleccionar el método de autenticación. Presionar Next o Próximo 3 veces para para evitar las próximas 2 pantallas.

6) Finalmente se puede testear la nueva conexión, si todo salio bien, el nuevo DSN de Sistema o System DSN, ah sido creado.

Para utilizar esta conexión dentro de las páginas ASP o mediante otro medio (CGI por ejemplo) es necesario ingresar un script como este, en este caso para páginas ASP.

Crear un DNS de Archivo para Microsoft SQL Server

En lugar de almacenar la información de la conexión en el Windows Registry, como en el ejemplo anterior, es posible guardar esta información en un archivo de texto, creando un File DSN o DSN de Archivo. Para crear este archivo, hay que como siempre, abrir la fuente de datos ODBC, seleccionar File DSN o DSN de Archivo , presionar Agregar o Add y específicar el nombre y un lugar donde será almacenado el archivo que contendrá la información de la conexión. Los pasos que siguen son idénticos al ejemplo anter ior.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 25

Si por ejemplo, el el DNS de Archivo que se creó, de llamara MiArchivoDSN, se tendría que utilizar un string como este para abrir la conexión a la base de datos.

Colocar la información de la conexión dentro del script.

Este método es sumamente sencillo, y no es necesario configurar nada en el Administrador ODBC.

Todos estos métodos son sencillos de implementar y la elección de alguno de ellos dependerá del tipo de conexión, seguridad e información que se tenga del servidor. Pero es necesario mencionar que es posible crear una conexión mediante un archivo Microsoft Data Link , cómo se explica en el artículo, Manejando conexiones con archivos Data Link. Este método puede simplificar y dar más seguridad a la conexión.

En nuestro programa informatico para conectar una base de datos de SQL Server con PowerBuilder, primero debe tener una conexion ODBC, o en su defecto debes tener instalado el SQL SERVER en la maquina donde tienes el PB, bueno sea cual sea tu caso, debes de ahi crearle un PROFILE EL PROFILE, debes acceder a DB Profile, click derecho y ADD PROFILE, como ya tienes un ODBC creado, tendras q ir a la primera ficha, CONEXION o CONNECTION, ahi especificaras el nombre de tu base de datos, luego escogeras el ODBC Q ya has creado, y luego si tu Base de datos tiene usuario y contraseña de Acceso, la pondras , sino por defecto tendras q colocar "SA" Si tienes el SQL Server instalado en tu maquina no necesitaras del ODBC, pues automaticamente en tu DB Profile aparecera una OPCION Q DIRA SQL SERVER .... cuando despliegues esa opcion, no aparecera nada o talvez dos lineas, pero no veras tu BASE DE DATOS, para eso deberas hacer click derecho sobre SQL SERVER, y ahi saldra una opcion ADD o Agregar, listo, solo tendras q poner el nombre de tu servidor y el nombre de la Base de datos q quieras conectar.

Crear ODBC DSN de conexión a la base de datos Para la creación del DSN de ODBC es necesario ejecutar los siguientes pasos: Ejecutamos click en Inicio, panel de control, herramientas administrati vas, orígenes de datos ODBC En la ventana que se presenta elegimos DSN de sistema

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 26

Luego ejecutamos click en Agregar y apreciamos la siguiente ventana

Elegimos el controlador SQL Native Client y luego Finalizar

Aparece la siguiente ventana

En esta ventana señalamos el nombre del origen de datos , también una descripción del origen de datos y el nombre del servidor , que en nuestro caso particular por ser un dbo empleamos PC4\SQLEXPRESS

Luego se comprueba la autenticidad del ID de inicio

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 27

En la siguiente ventana de crear un nuevo origen de datos para SQL Server , fijamos el nombre de la base de datos

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 28

Ejecutamos click en Finalizar y en la nueva ventana Configuracion de ODBC se ven los detalles de creación de un nuevo origen de datos ODBC

Para seguridad de que el DSN de ODBC nos permite la conexión a la base de datos ejecutamos click en la opción Probar origen de datos

Ejecutamos click en Aceptar y en la ventana Administrador de orígenes de datos apreciamos el DSN creado

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 29

Finalmente click en Aceptar.

Conectar a Sql Server desde Power Builder 11 A partir de la Versión 11.0 Sybase ha incluido nuevamente los drivers nativos para la conexión a Microsoft Server 2000 y 2005 que fueron excluidos en las versiones 10 y 10.5 para conectarse por OLE DB. Ahora nuevamente la conexión se realiza nativamente a traves de un nuevo DBMS creado para tal fin, es decir ya el DBMS para conectarse nativamente no es MSS sino que es el nuevo SNC (SQL NATIVE CLIENT) //Profile de SQL Server 2005 sqlca.dbms=”SNC” sqlca.LogPass=”clave” sqlca.ServerName=”servidor” sqlca.LoId=”usuario” sqlca.Autoconmit=true sqlca.dbparm=”Database=’basededatos’,AppName=’miprograma’,Host=’estacion1’”

Conectar a Sql Server desde Power Buider 10

PowerBuider en la versión 10 ya no tiene la opcion de configuración de drivers nativos (MSS Microsoft SQL Server) en el DBProfile. Ahora para conectarse “nativamente” debe utilizar ADO.NET, , OLE DB. O si lo prefiere por el tradicional ODBC con sus limitantes de rendimiento conocidas. A continuación le mostraremos la manera de conectarse “nativamente” por OLE DB a SQL Server Abrir el Database Profiles: Luego seleccione OLE Microsoft OLE DB y haga clic en Nuevo: Seleccione en Provider: SQLOLEDB DataSource: Nombre del Servidor de Base de datos (nombre o IP) User ID: Nombre del usuario de la base de datos Password: Clave del Usuario de la base de datos Extended: Aquí se define la base de datos asi: Database=NOMBRE_DE_LA_BASE_DE_DATOS

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 30

Para conectarse desde el PowerScript use la siguiente sintaxis

//Profile local

SQLCA.DBMS=”OLE DB” SQLCA.LogPass=”CLAVE” SQLCA.LogId=”sa” SQLCA.AutoCommit=False SQLCA.DBParm=”PROVIDER=’SQLOLEDB’,DATASOURCE=’192.168.09’,PROVIDERSTRING=’database=MIBASE’

PROFILE DE CONEXION

¿Qué es un database profile?. Es el enlace que utilizarán los painters del entorno PowerBuilder a la base de datos.

Con esta herramienta es posible configurar las conexiones a las bases de datos que vamos a utilizar en tiempo de desarrollo .

CREACION Y DEFINICION DE LAS CARACTERISTICAS DEL PROFILE DE CONEXIÓN Se realiza a través del botón CONTROL DE PERFILES DE BASES DE DATOS (DB Profile ) tal cual se aprecia en la siguiente imagen

Ejecutamos click en la opción DB Profile e ingresamos a la ventana Database Profiles , tal como se muestra en la siguiente imagen

DbProfile

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 31

En esta ventana Database Profiles elegimos la opción ODB ODBC y luego click en New para ingresar a la ventana del setup – ODBC que se muestra a continuación

En esta ventana debemos definir las siguientes características de la conexión a la base de datos: Profile Name Data Source User ID Password

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 32

Luego click en OK A partir de aqui ya esta establecida la conexion a la base de datos. Para saber si se esta conectado o no con la Base de Datos, debemos chequear que el perfil de nuestra conexión este acompañado del siguiente icono y si es asi, entonces ya estaremos conectado

Creacion del WorkSpace, la aplicación y el script d e conexion

Para iniciar el desarrollo del proyecto del sistema en PowerBuilder, creamos el WorkSpace. El Workspace o espacio de trabajo es un archivo de extensión .pbw el cual PB crea, donde se guardan las configuraciones del proyecto que se esta desarrollando. Se encuentra ubicado en la powerbar ó file/open workspace. Para proceder a crear el WorkSpace ejecutamos click en File del menú principal y luego News. Aparece la ventana News en la cual seleccionamos WorkSpace y luego OK.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 33

En la nueva ventana New Workspace seleccionamos la carpeta donde se va a guardar el Workspace de trabajo que estamos creando y luego le damos el nombre. Ejecutamos click en Guardar

Luego creamos la aplicación

Una vez creado el espacio de trabajo, debemos crear nuestra aplicación. Una aplicación tiene como elementos a las ventanas, los menús, los DataWindows y los objetos de usuario.

6

Propiedades de la Aplicación Tópico Descripción

General Permite obtener información

del objeto aplication.

Font Permite definir características

de presentación visual de

elementos.

Icon Permite definir el icono de la

aplicación.

Variable Permite conocer las variables

globales por defecto y su tipo.

Libraries Permite declarar las librerías

que conforman la aplicación.

Para crear la aplicacion ejecutamos click en File de las opciones principales y luego News. Aparece la ventana News y selecionamos Target, Application y luego OK

Inmediatamente después de ejecutar click en OK insurge la ventana Specify News Aplication and Library , tal como apreciamos a continuacion

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 34

En esta ventana digitamos el Nombre de la Aplicación, la Librería y el destino . Luego ejecutamos click en Finish

De esta manera se ha creado el workspace y la aplicación. Podemos visualizar este espacio de trabajo para nuestra aplicacion ingresando a Power Builder y ejecutando el workspace creado visualizando la siguiente pantalla donde ya se ha establecido la aplicación

Script de la aplicacion

En el evento Open procedemos a ejecutar el script de la aplicación para la conexión con la base de datos utilizando el DSN ODBC creado anteriormente

SQLCA.DBMS="ODBC"

SQLCA.AutoCommit=False

SQLCA.DBParm="ConnectString='DSN=pbsqlodbc;UID=;PWD='"

connect Using sqlca;

//connect;

//preguntamos si ha ocurrido un error en la conexio n

if sqlca.sqlcode<>0 then

Messagebox("Error de conexion",sqlca.sqlErrText)

halt

else

// Messagebox("conexion exitosa",sqlca.sqlErrText)

open(w_principal)

end if

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 35

SQLCA

El objeto de transacción por defecto se llama SQLCA, que significa área de comunicaciones SQL.

SQLCA tiene 15 propiedades, de las cuales 10 se utilizan para conectarse a su base de datos. Una de las 10 propiedades de la conexión es DBMS. La propiedad DBMS contiene el nombre de la base de datos a la que desea conectarse.

El SQLCA es por defecto el objeto transaccion que se utiliza en Datawindows o DataStore e inclusive en sentencias SQL, el proposito de este objeto es el de comunicar su sentencia sql, datawindow o datastore con la base de datos. El SQLCA es el objeto transacsacional que se encarga de controlar la conexión a la base de datos. Cada vez que se hace una operación sobre la base de datos el SQLCA, contiene el resultado final de esta operación. Algunas de las consultas u operaciones que se pueden ejecutar sobre la base de datos son las siguientes: Insert, Select, Delete, Update y otras. Si el SQLCA.Code (indicador del resultado de la operación), fue mayor a cero, significa que algún error ocurrió durante la consulta. Cuál error?, pues el número que contenga el SQLCA.Code. En el caso de que este sea 100, significa que la consulta fue correcta, pero no se logró obtener información. Por eso generalmente se utiliza la siguiente instrucción luego: Messagebox('ERROR('+String(SQLCA.SQLCode)+')', 'ERROR INTERNO: '+SQLCA.SQLErrText) Ahí te dará el número del error y el mensaje generado por la base de datos. Ahora bien, si se logró conseguir la información depende de varias cosas. Primero, que no se haya producido error, segundo, que se haya podido recuperar alguna información válida. Para el caso: Select tb_in_lista_precios.precio,

Script de la conexión de la aplicación a base de datos

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 36

Into :p From tb_in_lista_precios Where tb_in_lista_precios.cod_empresa= :c_emp; If SQLCA.Code = 0 Then If IsNull(p) Then Messagebox('ERROR', 'ERROR No es posible recuperar la información') End If Else Messagebox('ERROR('+String(SQLCA.SQLCode)+')', 'ERROR INTERNO: '+SQLCA.SQLErrText) End If

Script de conexión creando el objeto de transacción El código para conectarse es el siguiente: / /te creas una variable de instancia i_sqlca transaction i_sqlca i_sqlca = CREATE Transaction // CONEXION CON LA BD i_sqlca.DBMS = "ODBC" i_sqlca.AutoCommit = False i_sqlca.DBParm = "Connectstring=´DSN=nombre_dsn´" //nombre_dsn es el nombre odbc creado CONNECT Using i_sqlca ; //se verifica que se haya conectado con la BD if i_sqlca.sqlcode < 0 then //ha ocurrido un error return -1 else //ha ido todo bien return 1 end if

Propiedades del Objeto de Transacciones La siguiente tabla describe cada propiedad del objeto de transacciones. Para cada una de las diez propiedades de conexión, también se lista el campo equivalente en el diálogo de Configuración de Perfiles de Bases de Datos.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 37

Sintaxis y uso del parámetro DBParm La sintaxis y el uso dependerá de la interfaz de base de datos que está utilizando. Algunos DBParms ODBC no son validos para su uso con SQL Anywhere Usando DBParms con ODBC Estos parámetros de base de datos son compatibles con la interfaz de PowerBuilder ODBC sólo si el controlador ODBC que está utilizando y el DBMS de back-end compatible con la función

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 38

DBParm Parametro ConnectString Descripción Especifica los parámetros necesarios para conectarse a una base de datos. Se aplica a ODBC Sintaxis La sintaxis ConnectString muestra en una sola línea. Debe incluir toda la ConnectString entre comillas simples y los parámetros por separado dentro de la ConnectString con punto y coma. Sintaxis ODBC Connectstring = "DSN = nombre de la fuente de datos _ _; {UID = usuario _ ID; PWD = contraseña; controlador específico _ _ parámetros} ' Parámetro Descripción nombre_fuente_datos Un nombre que identifica la fuente de datos ID_usuario (Opcional) La identificación de usuario requerida para conectarse a la

fuente de datos contraseña (Opcional) La contraseña requerida por

ID_usuario para conectarse a la fuente de datos driver_specific_parameters (Opcional) Cualquier otra específica del controlador

parámetros necesarios para conectar

Ajuste de los parámetros DBParm

En PowerBuilder, usted puede ajustar los parámetros DBParm mediante una de las siguientes:

• Edición del perfil de base de datos cuadro de diálogo Configuración de la conexión en el entorno de desarrollo

• Especificación de los parámetros de conexión en un script de la aplicación

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 39

Ajuste de los parámetros DBParm en el entorno de desarrollo

Edición de perfiles de base de datos

Para establecer los parámetros DBParm para una conexión de base de datos en el entorno de desarrollo de PowerBuilder, debe modificar el perfil de base de datos para esa conexión.

Límite de caracteres para cadenas DBParm

Cadenas que contienen los parámetros DBParm que se especifican en el cuadro de diálogo Configuración de perfil de base de datos para la conexión puede ser de hasta 999 caracteres de longitud.

Este límite se aplica sólo a DBParm parámetros que se establecen en un perfil de base de datos en el entorno de desarrollo. Cadenas DBParm especificados en guiones PowerBuilder como propiedades del objeto de la transacción no se limitan a una longitud especificada.

Lo que se hace

Puede establecer los parámetros DBParm en el cuadro de diálogo Configuración de perfil de base de datos para su conexión.

Ajuste de los parámetros DBParm en un script de aplicaciones PowerBuilder

Si está desarrollando una aplicación PowerBuilder que se conecta a una base de datos, debe especificar los parámetros de conexión necesarios en el guión apropiado como propiedades del objeto de transacción por defecto (SQLCA) o un objeto de transacción que cree. Por ejemplo, puede especificar los parámetros de conexión en la secuencia de comandos que se abre la aplicación.

Uno de los parámetros de conexión que puede especificar en un script es DBParm. Usted puede hacer esto:

• (Recomendado) Copia de la sintaxis PowerScript DBParm de la ficha Vista previa en el cuadro de diálogo Configuración de perfil de base de datos en la secuencia de comandos

• Codificación PowerScript para establecer los valores de la propiedad DBParm del objeto de transacción

• Lectura de valores DBParm de un archivo de texto externo

Copia de la sintaxis DBParm fromthe ficha Vista previ a

La forma más fácil de especificar los parámetros de DBParm en un script de aplicación PowerBuilder es copiar la sintaxis DBParm PowerScript de la ficha Vista previa en el cuadro de diálogo Configuración de perfil de base de datos en su guión, la modificación de la transacción por defecto el nombre del objeto (SQLCA) si es necesario.

Como se establecen los parámetros DBParm en el cuadro de diálogo Configuración de perfil de base de datos en el entorno de desarrollo, PowerBuilder genera la sintaxis correcta conexión de la ficha Vista previa. Por lo tanto, la copia de la sintaxis directamente desde la ficha Vista previa asegura que se utiliza la sintaxis correcta PowerScript DBParm en el script.

Para copiar la sintaxis DBParm de la ficha Vista previa en el script:

1. En una o más páginas de ficha en el cuadro de diálogo Configuración de perfil de base de datos para su conexión, los valores de los parámetros de suministro de DBParm desea establecer. Por ejemplo, en la ficha Red en la configuración del perfil de base de datos - Adaptive Server

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 40

Enterprise cuadro de diálogo contiene la configuración de la red de los parámetros relacionados con DBParm que la interfaz admite. Este ejemplo muestra los valores no predeterminados para Nombre de la aplicación (se corresponde con el parámetro DBParm AppName) y el nombre de estación de trabajo (se corresponde con el parámetro DBParm Host):

Para obtener información sobre los parámetros DBParm para su interfaz y los valores para el suministro, haga clic en Ayuda.

2. Haga clic en Aplicar para guardar los cambios a la ficha actual sin cerrar el perfil de base de datos de cuadro de diálogo Configuración.

3. Haga clic en la ficha Vista previa.

La sintaxis correcta PowerScript DBParm para cada muestra opción seleccionada en el cuadro Base de datos Sintaxis de conexión. Por ejemplo:

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 41

4. Seleccione una o varias líneas de texto en el cuadro de base de datos Sintaxis de conexión y haga clic en Copiar. PowerBuilder copia el texto seleccionado al portapapeles.

5. Haga clic en Aceptar para cerrar el perfil de base de datos de cuadro de diálogo Configuración.

6. Pegar el texto seleccionado de la ficha Vista previa en su guión, la modificación de la transacción por defecto el nombre del objeto (SQLCA) si es necesario.

Codificación PowerScript para establecer los valores de la propiedad DBParm

Otra forma de especificar los parámetros de conexión en un script es mediante la codificación de PowerScript para asignar valores a las propiedades del objeto de transacción. PowerBuilder utiliza un objeto especial no visual llamado un objeto de transacción para comunicarse con la base de datos. El objeto de transacción por defecto se llama SQLCA, que significa área de comunicaciones SQL.

SQLCA tiene 15 propiedades, de las cuales 10 se utilizan para conectarse a su base de datos. Una de las 10 propiedades de la conexión es DBParm. DBParm contiene DBMS parámetros específicos que permiten la aplicación de aprovechar las características de diversos soporta la interfaz de base de datos.

Para establecer los valores de la propiedad DBParm en un script de PowerBuilder:

1. Abra el script de la aplicación en la que desea especificar parámetros de conexión. Para obtener instrucciones, consulte la Guía del usuario.

2. Utilice la sintaxis siguiente para especificar PowerScript parámetros DBParm. Asegúrese de separar los parámetros DBParm con comas, y adjuntar toda la cadena de DBParm entre comillas dobles.

SQLCA.dbParm = "parameter_1, Parámetro_2, parameter_n"

Por ejemplo, la siguiente declaración en un script de PowerBuilder se establece la propiedad DBParm de una fuente de datos ODBC denominado Ventas. En este ejemplo, la propiedad DBParm consta de dos parámetros: ConnectString y asíncrona.

SQLCA.dbParm = "connectstring =" DSN = Ventas; UID = PB; PWD = xyz ', Async = 1 "

3. Compilar el script de PowerBuilder para guardar los cambios.

En Powerbuilder es posible realizar la conexión a la fuente de datos, sin necesidad de definir un DSN del sistema y se logra definiendo la propiedad DBParm. Ej. Si deseamos conectar la aplicación a un DBF, el código sería el siguiente SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq="+gs_path+"\bd;'" y para una tabla libre de Visual Fox SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 42

SQLCA.DBParm = "ConnectString='Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB="+gs_path+"\bd;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;',StaticBind=0" De forma similar, sería posible realizar la conexión a cualquier fuente de datos, si se especifica de forma correcta el connectionstring en el DBParm. Powerbuilder y Mysql Conexión a Mysql desde Powerbuilder SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DRIVER={MySQL ODBC 3.51 Driver};SERVER="+servidor+";PORT=3306;DATABASE=mibase;USER=miuser;PASSWORD=mipass;OPTION=135168;',DisableBind=1" Connect using SQLCA; Notas: 1) La opción utilizada en el connectionstring OPTION=135168, es especial para que powerbuilder funcione sin problemasen en el manejo de sus Datawindows y en el Powerscript 2) La opcion DisableBind=1 hace que no se verifique el tamaño de una columna y el tamaño en el Datawindow, si no se agrega esta opción, la aplicación es muy probable que funcione sin tener ningún problema, pero si en la base se datos se cambia algún tamaño en alguna columna que aparece en el Datawindow, entonces si marcará un error porque los tamaños seria diferentes y es precisamente el DisableBind=1, lo que hace que no se cheque esto.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 43

ESTRUCTURA Y

DESARROLLO

DEL SISTEMA

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 44

ESTRUCTURA Y CODIGOS FUENTES DE FORMULARIOS Windows w_clave

Evento Open sle_clave.password=true llenausuario( )

(Functions) – llenausuarios string cod,usu,cla declare lista cursor for select COD_USU,USUARIO,CLAVE from SISTEMA; open lista; fetch lista into :cod,:usu,:cla; do while sqlca.sqlcode<>100 ddlb_usuario.additem( usu); fetch lista into :cod,:usu,:cla; loop close lista; (Declare) – Instance variables integer intento

cb_1 – Ingresar string cod,usu,cla intento=intento+1 if len(ddlb_usuario.text)<>0 and len(sle_clave.text)<>0 then select COD_USU,USUARIO,CLAVE into :cod,:usu,:cla from SISTEMA where USUARIO=:ddlb_usuario.text; if usu=upper(ddlb_usuario.text) and trim(cla)=upper(trim(sle_clave.text)) then open(w_principal) close(w_clave) elseif intento=3 then messagebox("Seguridad","Se agotaron los intentos") halt else messagebox("Seguridad","Clave incorrecta") ddlb_usuario.reset( ) llenausuario( )

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 45

sle_clave.text="" ddlb_usuario.setfocus( ) end if else messagebox("Mensaje- SISAD","Ninguno de los campos debe estar en blanco") end if cb_2 – Cancelar halt

ddlb_usuario - Dropdownlistbox

Sle_clave

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 46

WINDOWS PRINCIPAL Y WINDOWS DEL MENU La siguiente imagen muestra el diseño de la ventana principal w_principal En la ventana de propiedades de la ventana w_principal señalamos el MenuName: m_principal a fin de ejecutar la presentación del menú

Para diseñar el menú principal ejecutamos clic en FILE del powerbar, luego NEWS, PBObject, seleccionamos MENU y finalmente OK En la ventana de diseño del menú, creamos las siguientes opciones: Generacion de las opciones y subopciones

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 47

Interfaz de usuario de procesamiento de datos de as ignatura: w_asignatura El formulario w_asignatura para la captura de datos de las asignaturas se muestra en la imagen siguiente:

Boton de comando AGREGAR: cb_1 Evento clicked sle_1.text="" sle_2.text="" sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_17.text="" sle_1.enabled=TRUE sle_2.enabled=TRUE sle_3.enabled=TRUE sle_4.enabled=TRUE sle_5.enabled=TRUE sle_6.enabled=TRUE sle_7.enabled=TRUE sle_8.enabled=TRUE sle_9.enabled=TRUE sle_10.enabled=TRUE

Botones de comandos cb

Cuadros de edición sle

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 48

sle_11.enabled=TRUE sle_12.enabled=TRUE sle_13.enabled=TRUE sle_14.enabled=TRUE sle_15.enabled=TRUE sle_16.enabled=TRUE sle_17.enabled=TRUE cb_1.enabled=false cb_2.enabled=false cb_3.enabled=false sle_1.enabled=TRUE cb_6.enabled=TRUE sle_1.setfocus( ) Boton de comando MODFICAR: cb_2 Evento clicked sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_17.text="" sle_1.enabled=TRUE sle_2.enabled=TRUE sle_3.enabled=TRUE sle_4.enabled=TRUE sle_5.enabled=TRUE sle_6.enabled=TRUE sle_7.enabled=TRUE sle_8.enabled=TRUE sle_9.enabled=TRUE sle_10.enabled=TRUE sle_11.enabled=TRUE sle_12.enabled=TRUE sle_13.enabled=TRUE sle_14.enabled=TRUE sle_15.enabled=TRUE sle_16.enabled=TRUE sle_17.enabled=TRUE cb_1.enabled=false cb_2.enabled=false cb_3.enabled=false cb_4.enabled=true sle_1.enabled=TRUE cb_6.enabled=FALSE cb_7.enabled=TRUE cb_8.enabled=FALSE sle_1.setfocus( )

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 49

Boton de comando ELIMINAR: cb_3 Evento clicked // Limpiar los cuadros de edicion sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_17.text="" //Activar-desactivar los botones de comandos cb_1.enabled=false cb_2.enabled=false cb_3.enabled=false cb_4.enabled=true cb_8.enabled=true sle_1.enabled=TRUE sle_1.setfocus( ) Boton de comando CONSULTAR: cb_4 Evento clicked open(w_consuasig2) Boton de commando SALIR: cb_5 Evento clicked close(w_asignatura) Cuadro de edición CODIGO: sle_1 Evento modified if cb_6.enabled=true or cb_7.enabled=true then sle_2.enabled=TRUE sle_3.enabled=TRUE sle_4.enabled=TRUE sle_5.enabled=TRUE sle_6.enabled=TRUE sle_7.enabled=TRUE sle_8.enabled=TRUE sle_9.enabled=TRUE sle_10.enabled=TRUE sle_11.enabled=TRUE sle_12.enabled=TRUE sle_13.enabled=TRUE sle_14.enabled=TRUE sle_15.enabled=TRUE sle_16.enabled=TRUE sle_17.enabled=TRUE end if if cb_7.enabled=true or cb_8.enabled=true then string c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 50

select dcodcu,dnomcu,anio,codfac,facultad,dcodeap,escuela,semes,nroasi,nhorast,nhorasp,nhorass,nhorasl,nhoras,creditos,prereq,nparciales into :c1,:c2,:c3,:c4,:c5,:c6,:c7,:c8,:c9,:c10,:c11,:c12,:c13,:c14,:c15,:c16,:c17 from ASIGNAT where rtrim(dcodcu)=rtrim(:sle_1.text); sle_1.text=c1 sle_2.text=c2 sle_3.text=c3 sle_4.text=c4 sle_5.text=c5 sle_6.text=c6 sle_7.text=c7 sle_8.text=c8 sle_9.text=c9 sle_10.text=c10 sle_11.text=c11 sle_12.text=c12 sle_13.text=c13 sle_14.text=c14 sle_15.text=c15 sle_16.text=c16 sle_17.text=c17 if cb_7.enabled=true then if keydown(keyenter!) then sle_2.setfocus( ) end if End if end if Boton de commando GRABAR: cb_6 Evento clicked insert into ASIGNAT (dcodcu,dnomcu,anio,codfac,facultad,dcodeap,escuela,semes,nroasi,nhorast,nhorasp,nhorass,nhorasl,nhoras,creditos,prereq,nparciales) values(:sle_1.text,:sle_2.text,:sle_3.text,:sle_4.text,:sle_5.text,:sle_6.text,:sle_7.text,:sle_8.text,:sle_9.text,:sle_10.text,:sle_11.text,:sle_12.text,:sle_13.text,:sle_14.text,:sle_15.text,:sle_16.text,:sle_17.text); sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_17.text="" sle_1.enabled=FALSE sle_2.enabled=FALSE sle_3.enabled=FALSE sle_4.enabled=FALSE sle_5.enabled=FALSE sle_6.enabled=FALSE sle_7.enabled=FALSE sle_8.enabled=FALSE sle_9.enabled=FALSE sle_10.enabled=FALSE sle_11.enabled=FALSE sle_12.enabled=FALSE sle_13.enabled=FALSE

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 51

sle_14.enabled=FALSE sle_15.enabled=FALSE sle_16.enabled=FALSE sle_17.enabled=FALSE cb_1.enabled=true cb_2.enabled=true cb_3.enabled=true cb_4.enabled=true cb_6.enabled=false cb_7.enabled=false cb_8.enabled=false Boton de comando ACTUALIZAR: cb_7 Evento clicked Update ASIGNAT set dnomcu=:sle_2.text,anio=:sle_3.text,codfac=:sle_4.text,facultad=:sle_5.text,dcodeap=:sle_6.text,escuela=:sle_7.text,semes=:sle_8.text,nroasi=:sle_9.text,nhorast=:sle_10.text,nhorasp=:sle_11.text,nhorass=:sle_12.text,nhorasl=:sle_13.text,nhoras=:sle_14.text,creditos=:sle_15.text,prereq=:sle_16.text,nparciales=:sle_17.text where dcodcu=:sle_1.text; sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_17.text="" sle_1.enabled=FALSE sle_2.enabled=FALSE sle_3.enabled=FALSE sle_4.enabled=FALSE sle_5.enabled=FALSE sle_6.enabled=FALSE sle_7.enabled=FALSE sle_8.enabled=FALSE sle_9.enabled=FALSE sle_10.enabled=FALSE sle_11.enabled=FALSE sle_12.enabled=FALSE sle_13.enabled=FALSE sle_14.enabled=FALSE sle_15.enabled=FALSE sle_16.enabled=FALSE sle_17.enabled=FALSE cb_1.enabled=true cb_2.enabled=true cb_3.enabled=true cb_6.enabled=false cb_7.enabled=false cb_8.enabled=false Close(w_asignatura)

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 52

Boton de comando BORRAR: cb_8 Evento clicked delete from ASIGNAT where DCODCU=:sle_1.text; sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_17.text="" cb_1.enabled=true cb_2.enabled=true cb_3.enabled=true cb_8.enabled=false close(w_asignatura) ----------------------------------------------------------------------------------------------------------------------------------- Formulario de procesamiento de datos de alumnos: w_ alumnos Los datos de los alumnos se almacena en la tabla dbo.alumnos de la base de datos Matricula y constituye la información maestra para el registro de matriculas y notas La siguiente imagen nos muestra la interfaz de usuario w_alumnos para el procesamiento de datos de los alumnos

Botones de comandos cb

Cuadros de edición sle

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 53

Boton de comando AGREGAR: cb_1 Evento clicked sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_1.enabled=TRUE sle_2.enabled=TRUE sle_3.enabled=TRUE sle_4.enabled=TRUE sle_5.enabled=TRUE sle_6.enabled=TRUE sle_7.enabled=TRUE sle_8.enabled=TRUE sle_9.enabled=TRUE sle_10.enabled=TRUE sle_11.enabled=TRUE sle_12.enabled=TRUE sle_13.enabled=TRUE sle_14.enabled=TRUE sle_15.enabled=TRUE sle_16.enabled=TRUE cb_1.enabled=false cb_2.enabled=false cb_3.enabled=false sle_1.enabled=TRUE cb_6.enabled=TRUE sle_1.setfocus( ) Boton de comando MODIFICAR: cb_2 Evento clicked sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_1.enabled=TRUE sle_2.enabled=TRUE sle_3.enabled=TRUE sle_4.enabled=TRUE sle_5.enabled=TRUE

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 54

sle_6.enabled=TRUE sle_7.enabled=TRUE sle_8.enabled=TRUE sle_9.enabled=TRUE sle_10.enabled=TRUE sle_11.enabled=TRUE sle_12.enabled=TRUE sle_13.enabled=TRUE sle_14.enabled=TRUE sle_15.enabled=TRUE sle_16.enabled=TRUE cb_1.enabled=false cb_2.enabled=false cb_3.enabled=false cb_4.enabled=true sle_1.enabled=TRUE cb_7.enabled=TRUE sle_1.setfocus( ) Boton de comando ELIMINAR: cb_3 Evento clicked sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" cb_1.enabled=false cb_2.enabled=false cb_3.enabled=false cb_4.enabled=true sle_1.enabled=TRUE cb_8.enabled=TRUE sle_1.setfocus( ) Boton de comando CONSULTA: cb_4 Evento clicked open(w_consualu1) Boton de comando SALIR: cb_5 Evento clicked close(w_alumnos) Cuadro de edición CODIGO: sle_1 Evento modified if cb_6.enabled=true THEN sle_2.enabled=TRUE sle_3.enabled=TRUE sle_4.enabled=TRUE sle_5.enabled=TRUE

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 55

sle_6.enabled=TRUE sle_7.enabled=TRUE sle_8.enabled=TRUE sle_9.enabled=TRUE sle_10.enabled=TRUE sle_11.enabled=TRUE sle_12.enabled=TRUE sle_13.enabled=TRUE sle_14.enabled=TRUE sle_15.enabled=TRUE sle_16.enabled=TRUE string vpicture1 vpicture1=sle_1.Text+".jpg" p_1.PictureName=vpicture1 end if if cb_7.enabled=true or cb_8.enabled=true then string c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16 select dcodalu,dnomalu,sexo,fecnac,distr,prov,dep,le,direcc,colpro,colubi,tele,anioing,dcodeap,eap,perion into :c1,:c2,:c3,:c4,:c5,:c6,:c7,:c8,:c9,:c10,:c11,:c12,:c13,:c14,:c15,:c16 from ALUMNO where dcodalu=:sle_1.text; sle_1.text=c1 sle_2.text=c2 sle_3.text=c3 sle_4.text=c4 sle_5.text=c5 sle_6.text=c6 sle_7.text=c7 sle_8.text=c8 sle_9.text=c9 sle_10.text=c10 sle_11.text=c11 sle_12.text=c12 sle_13.text=c13 sle_14.text=c14 sle_15.text=c15 sle_16.text=c16 string vpicture vpicture=sle_1.Text+".jpg" p_1.PictureName=vpicture if cb_7.enabled=true then if keydown(keyenter!) then sle_2.setfocus( ) end if end if end if Boton de comando GRABAR: cb_6 Evento clilcked insert into ALUMNO (dcodalu,dnomalu,sexo,fecnac,distr,prov,dep,le,direcc,colpro,colubi,tele,anioing,dcodeap,eap,perion) values(rtrim(:sle_1.text),rtrim(:sle_2.text),:sle_3.text,rtrim(:sle_4.text),rtrim(:sle_5.text),rtrim(:sle_6.text),rtrim(:sle_7.text),rtrim(:sle_8.text),rtrim(:sle_9.text),rtrim(:sle_10.text),rtrim(:sle_11.text),rtrim(:sle_12.text),rtrim(:sle_13.text),rtrim(:sle_14.text),rtrim(:sle_15.text),rtrim(:sle_16.text)); sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text=""

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 56

sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" string vpicture1 vpicture1="" p_1.PictureName=vpicture1 sle_1.enabled=FALSE sle_2.enabled=FALSE sle_3.enabled=FALSE sle_4.enabled=FALSE sle_5.enabled=FALSE sle_6.enabled=FALSE sle_7.enabled=FALSE sle_8.enabled=FALSE sle_9.enabled=FALSE sle_10.enabled=FALSE sle_11.enabled=FALSE sle_12.enabled=FALSE sle_13.enabled=FALSE sle_14.enabled=FALSE sle_15.enabled=FALSE sle_16.enabled=FALSE cb_1.enabled=true cb_2.enabled=true cb_3.enabled=true cb_4.enabled=true cb_5.enabled=true cb_6.enabled=false cb_7.enabled=false cb_8.enabled=false Boton de comando ACTUALIZAR: cb_7 Evento clicked Update ALUMNO set dnomalu=rtrim(:sle_2.text),sexo=:sle_3.text,fecnac=rtrim(:sle_4.text),distr=rtrim(:sle_5.text),prov=rtrim(:sle_6.text),dep=rtrim(:sle_7.text),le=rtrim(:sle_8.text),direcc=rtrim(:sle_9.text),colpro=:sle_10.text,colubi=rtrim(:sle_11.text),tele=rtrim(:sle_12.text),anioing=rtrim(:sle_13.text),dcodeap=rtrim(:sle_14.text),eap=rtrim(:sle_15.text),perion=rtrim(:sle_16.text) where rtrim(dcodalu)=rtrim(:sle_1.text); sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" sle_1.enabled=FALSE sle_2.enabled=FALSE sle_3.enabled=FALSE sle_4.enabled=FALSE sle_5.enabled=FALSE sle_6.enabled=FALSE sle_7.enabled=FALSE

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 57

sle_8.enabled=FALSE sle_9.enabled=FALSE sle_10.enabled=FALSE sle_11.enabled=FALSE sle_12.enabled=FALSE sle_13.enabled=FALSE sle_14.enabled=FALSE sle_15.enabled=FALSE sle_16.enabled=FALSE cb_1.enabled=true cb_2.enabled=true cb_3.enabled=true cb_4.enabled=true cb_5.enabled=true cb_6.enabled=false cb_7.enabled=false cb_8.enabled=false Close(w_alumnos) Boton de comando BORRAR: cb_8 Evento clicked delete from alumno where dcodalu=:sle_1.text; sle_1.text="" sle_2.text="" sle_3.text="" sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_16.text="" cb_1.enabled=true cb_2.enabled=true cb_3.enabled=true cb_4.enabled=true cb_5.enabled=true cb_6.enabled=false cb_7.enabled=false cb_8.enabled=false close(w_alumnos) ------------------------------------------------------------------------------------------------------------------------------------------

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 58

Formulario de procesamiento de datos de docentes Los datos de los docentes se graban en la tabla dbo.docentes y los detalles de la carga lectiva en la tabla dbo.cargalec . La interfaz de usuario para el manejo de datos de docentes y su carga lectiva se aprecia en la siguiente imagen

Boton de comando AGREGAR: cb_1 Evento clicked cb_1.enabled=false cb_2.enabled=false cb_3.enabled=false sle_1.enabled=True sle_1.setfocus() Boton de comando CONSULTA: cb_2 Evento clicked open(w_verdocentes) Boton de comando SALIR: cb_3 Evento clicked close(w_docentes) Cuadro de edición CODIGO: sle_1 Evento modified sle_2.text="" sle_3.text=""

dw_1 dw_cargalec

dw_2 dw_docentes

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 59

sle_4.text="" sle_5.text="" sle_6.text="" sle_7.text="" sle_8.text="" sle_9.text="" sle_10.text="" sle_11.text="" sle_12.text="" sle_13.text="" sle_14.text="" sle_15.text="" sle_2.enabled=TRUE sle_3.enabled=TRUE sle_4.enabled=TRUE sle_5.enabled=TRUE sle_6.enabled=TRUE sle_7.enabled=TRUE sle_8.enabled=TRUE sle_9.enabled=TRUE sle_10.enabled=TRUE sle_11.enabled=TRUE sle_12.enabled=TRUE sle_13.enabled=TRUE sle_14.enabled=TRUE sle_15.enabled=TRUE cb_4.enabled=TRUE Boton de comando SELECCIONAR: cb_4 Evento clicked sle_16.enabled=TRUE sle_17.enabled=TRUE sle_18.enabled=TRUE sle_19.enabled=TRUE sle_20.enabled=TRUE sle_21.enabled=TRUE sle_22.enabled=TRUE cb_4.enabled=FALSE sle_1.Enabled=FALSE cb_5.enabled=TRUE cb_6.enabled=TRUE cb_7.enabled=TRUE st_27.visible=TRUE sle_16.setfocus() Cuadro de edición CODIGO: sle_16 Evento keya if trim(sle_16.text)='' then if keydown(27) then open(w_consuasig1) End if End if if keydown(keyenter!) then string vdcodcu,vdnomcu,vcreditos,vnhoras select dcodcu,dnomcu,creditos,nhoras into :vdcodcu,:vdnomcu,:vcreditos,:vnhoras from asignat where dcodcu=:sle_16.text; sle_16.text=vdcodcu sle_17.text=vdnomcu sle_20.text=vcreditos sle_19.text=vnhoras cb_5.enabled=True cb_6.enabled=True

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 60

cb_7.enabled=True cb_8.enabled=True cb_9.enabled=True End If Cuadro de edición CODIGO: sle_16 Evento modified st_27.visible=FALSE cb_5.enabled=True cb_6.enabled=True cb_7.enabled=True cb_8.enabled=True cb_9.enabled=True Boton de comando MIGRAR: cb_5 Evento clicked dw_1.enabled=true integer n //dw_1.Reset() n=dw_1.insertrow(0) dw_1.SetRedraw(TRUE) dw_1.scrolltorow(n) dw_1.SetRowFocusIndicator(Hand!) dw_1.setfocus() if dw_1.rowcount()>0 then dw_1.Setitem(n,"ccurso",sle_16.Text) dw_1.Setitem(n,"ncurso",sle_17.Text) dw_1.Setitem(n,"turno",sle_18.Text) dw_1.Setitem(n,"nhoras",sle_19.Text) dw_1.Setitem(n,"creditos",sle_20.Text) dw_1.Setitem(n,"aula",sle_21.Text) dw_1.Setitem(n,"perion",sle_22.Text) dw_1.Setitem(n,"coddoc",sle_1.Text) dw_1.Setitem(n,"nomdoc",sle_2.Text) End if sle_16.text=' ' sle_17.text=' ' sle_18.text=' ' sle_19.text=' ' sle_20.text=' ' sle_21.text=' ' sle_22.text=' ' cb_4.enabled=TRUE sle_16.enabled=FALSE sle_17.enabled=FALSE sle_18.enabled=FALSE sle_19.enabled=FALSE sle_20.enabled=FALSE sle_21.enabled=FALSE sle_22.enabled=FALSE cb_8.enabled=TRUE cb_9.enabled=TRUE Boton de comando RECHAZAR: cb_6 Evento clicked Close(w_docentes) Boton de comando BORRAR: cb_7 Evento clicked

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 61

integer n n=messagebox("Confirme","¿Desea Eliminar este Registro?",question!,yesno!) if n=1 then dw_1.deleterow(dw_1.getrow()) dw_1.update() end if datawindows control dw_1 datawindows objeto dw_cargalec datawindows dw_cargalec En la siguiente imagen apreciamos el datawindows objeto y a través del cual manejamos los datos de cargalectiva del docente. Esta relacionada con la tabla dbo.cargalect de la base de datos matricula

Boton de comando REGISTRAR: cb_8 Evento cliked dw_2.enabled=true integer n //dw_2.Reset() n=dw_2.insertrow(0) dw_2.SetRedraw(TRUE) dw_2.scrolltorow(n) dw_2.SetRowFocusIndicator(Hand!) dw_2.setfocus() if dw_2.rowcount()>0 then dw_2.Setitem(n,"coddoc",sle_1.Text) dw_2.Setitem(n,"nomdoc",sle_2.Text) dw_2.Setitem(n,"dirdoc",sle_3.Text) dw_2.Setitem(n,"fecnac",sle_4.Text) dw_2.Setitem(n,"le",sle_5.Text) dw_2.Setitem(n,"tele",sle_6.Text) dw_2.Setitem(n,"sexo",sle_7.Text) dw_2.Setitem(n,"titulo",sle_8.Text) dw_2.Setitem(n,"especial",sle_9.Text) dw_2.Setitem(n,"feching",sle_13.Text) dw_2.Setitem(n,"cargo",sle_11.Text) dw_2.Setitem(n,"jornalab",sle_12.Text) dw_2.Setitem(n,"condi",sle_10.Text) dw_2.Setitem(n,"nivmag",sle_14.Text)

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 62

dw_2.Setitem(n,"perion",sle_15.Text) End if cb_1.enabled=FALSE cb_5.enabled=FALSE cb_6.enabled=FALSE cb_7.enabled=FALSE cb_8.enabled=FALSE cb_9.enabled=TRUE sle_2.enabled=FALSE sle_3.enabled=FALSE sle_4.enabled=FALSE sle_5.enabled=FALSE sle_6.enabled=FALSE sle_7.enabled=FALSE sle_8.enabled=FALSE sle_9.enabled=FALSE sle_10.enabled=FALSE sle_11.enabled=FALSE sle_12.enabled=FALSE sle_13.enabled=FALSE sle_14.enabled=FALSE sle_15.enabled=FALSE Datawindows control dw_2 Datawindows objeto dw_docentes El data windows dw_2 y el datawindows dw_docentes registrar los datos del docente. Interactua con la tabla dbo.docentes La siguiente imagen nos muestra el dw_docentes

Datawindows objeto: dw_docentes

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 63

Boton de comando GRABAR: cb_9 Evento clicked dw_2.AcceptText() dw_1.AcceptText() dw_1.update() dw_2.update() commit using sqlca; //int res //res=dw_1.update() //if res=1 then // commit using sqlca; //else // rollback using sqlca; //end if cb_9.enabled=false close(w_docentes) FORMULARIO DOCENTES w_docentes Evento OPEN // Conectar Dw con la BD dw_1.settransobject(SQLCA) dw_2.settransobject(SQLCA) // Limpia el bufer de datawindows y se edita el SQL de datawindow // Trae la informacion de la consulta que esta en el data windows object dw_1.retrieve() dw_2.retrieve() INTERFAZ DE USUARIO DE CONSULTA DE ASIGNATURAS: w_consuasig 1 Data windows control: dw_1 Datawindows objeto: dw_asignaturas

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 64

El datawindoeos objeto dw_asignaturas muestra las as ignaturas registradas en la tabla dbo.asignat de la base de datos Matricula Evento clicked del dw_1 (Permite capturar datos del registro de asignaturas para migrarlos al w_docentes y a los cuadros de ediciónseñalados string ls_dcodcu long r r=dw_1.getRow() ls_dcodcu=dw_1.GetItemString(r,'dcodcu') string vdcodcu,vdnomcu,vcreditos,vnhoras select dcodcu,dnomcu,creditos,nhoras into :vdcodcu,:vdnomcu,:vcreditos,:vnhoras from asignat where rtrim(dcodcu)=rtrim(:ls_dcodcu); w_docentes.sle_16.text=vdcodcu w_docentes.sle_17.text=vdnomcu w_docentes.sle_20.text=vcreditos w_docentes.sle_19.text=vnhoras --------------------------------------------------------------------------------------------------------------------------------------------

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 65

FORMULARIO DE PROCESAMIENTO DE DATOS DE MATRICULA El formulario w_matricula presenta 10 botones de comandos cb, 9 cuadros de edición sle para el procesamientos de datos del alumno, 10 cuadros de edición sle para la captura de datos de matricula, 10 cuadros de edición sle para la captura de datos de la asignatura a migrar al dw_notas , el datawindows objeto dw_notas y el datawindows objeto dw_matricula La siguiente imagen permite apreciar los objetos de la interfaz de usuario

Boton de comando AGREGAR: cb_1 Evento clicked sle_28.enabled=True sle_28.setfocus() Boton de comando CONSULTA: cb_2 Evento clicked open(w_buscamatri) Boton de comando SALIR: cb_3 Evento clicked close(w_matricula) Cuadro de edición N° MATRICULA: sle_28 Evento modified sle_1.enabled=True st_33.visible=TRUE

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 66

sle_1.setfocus() Cuadro de edición CODIGO: cb_1 Evento keym if keydown(27) then st_33.visible=FALSE open(w_consualumno) end if if keydown(keyenter!) then if len(trim(sle_1.Text))<8 then beep(1) messageBox("Error","Codigo Incorrecto !",Exclamation!) sle_1.SetFocus() Return else string vdcodalu,vdnomalu,vdirecc,vdcodeap,veap,vfecnac,vanioing,vle select dcodalu,dnomalu,direcc,dcodeap,eap,fecnac,anioing,le into :vdcodalu,:vdnomalu,:vdirecc,:vdcodeap,:veap,:vfecnac,:vanioing,:vle from alumno where dcodalu=:sle_1.text; sle_2.text=vdnomalu sle_5.text=vdirecc sle_3.text=vdcodeap sle_4.text=veap sle_6.text=vfecnac sle_8.text=vle sle_7.text=vanioing string vpicture vpicture=sle_1.Text+".jpg" p_1.PictureName=vpicture sle_9.enabled=True sle_10.enabled=True sle_11.enabled=True sle_12.enabled=True sle_13.enabled=True sle_14.enabled=True sle_15.enabled=True sle_16.enabled=True sle_17.enabled=True sle_18.enabled=True Integer año año=year(today()) date fecha fecha=today() String vp if integer(mid(string(fecha),4,2))<7 then vp=string(año)+'1' else vp=string(año)+'2' End if sle_9.text=vp // substraemos con mid() del sle_9 el semestre-digito 5 sle_10.text=mid(sle_9.text,5,1) sle_11.text='G' sle_12.text='D' sle_13.text='1' sle_14.text='1' //date fecha //fecha=Today() sle_15.text=string(fecha) sle_16.text=string(fecha) cb_asignat.enabled=TRUE st_33.visible=FALSE sle_9.SetFocus()

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 67

End if End If Cuadro de edición CODIGO: sle_1 Evento modified if len(trim(sle_1.Text))<8 then beep(1) messageBox("Error","Codigo Incorrecto !",Exclamation!) sle_1.SetFocus() Return End if Boton de comando ELEGIR: cb_asignat Evento clicked sle_9.enabled=False sle_10.enabled=False sle_11.enabled=False sle_12.enabled=False sle_13.enabled=False sle_14.enabled=False sle_15.enabled=False sle_16.enabled=False sle_17.enabled=False sle_18.enabled=False sle_19.enabled=True sle_20.enabled=True sle_21.enabled=True sle_22.enabled=True sle_23.enabled=True sle_24.enabled=True sle_25.enabled=True sle_26.enabled=True sle_28.enabled=True sle_27.enabled=True sle_29.enabled=True cb_asignat.enabled=FALSE sle_1.Enabled=FALSE st_36.visible=TRUE st_35.visible=TRUE sle_19.setfocus() Cuadro de edición CODIGO: sle_19 Evento modified string vdcodcu,vdnomcu,vanio,vsemes,vcodfac,vdcodeap,vcreditos,vnhoras,vprereq select dcodcu,dnomcu,anio,semes,codfac,dcodeap,creditos,nhoras,prereq into :vdcodcu,:vdnomcu,:vanio,:vsemes,:vcodfac,:vdcodeap,:vcreditos,:vnhoras,:vprereq from asignat where dcodcu=:sle_19.text; sle_20.text=vdnomcu sle_21.text=vanio sle_22.text=vsemes sle_23.text=vcreditos sle_24.text=vnhoras sle_25.text=vdcodeap sle_26.text=vcodfac sle_27.text=vprereq cb_5.enabled=True cb_6.enabled=True cb_7.enabled=True cb_8.enabled=True cb_9.enabled=True st_36.visible=FALSE st_35.visible=TRUE

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 68

Cuadro de edición CODIGO: sle_19 Evento keya if trim(sle_19.text)='' then if keydown(27) then open(w_consuasig) End if End if if keydown(keyenter!) then string vdcodcu,vdnomcu,vanio,vsemes,vcodfac,vdcodeap,vcreditos,vnhoras,vprereq select dcodcu,dnomcu,anio,semes,codfac,dcodeap,creditos,nhoras,prereq into :vdcodcu,:vdnomcu,:vanio,:vsemes,:vcodfac,:vdcodeap,:vcreditos,:vnhoras,:vprereq from asignat where dcodcu=:sle_19.text; sle_19.text=vdcodcu sle_20.text=vdnomcu sle_21.text=vanio sle_22.text=vsemes sle_23.text=vcreditos sle_24.text=vnhoras sle_25.text=vdcodeap sle_26.text=vcodfac sle_27.text=vprereq End If Cuadro de edición CODIGO: sle_19 Evento losefocus cb_5.enabled=True cb_6.enabled=True cb_7.enabled=True cb_8.enabled=True cb_9.enabled=True Cuadro de edicion : sle_27 Evento losefocus st_35.visible=TRUE Cuadro de edición : sle_29 Evento modified string vcoddoc,vnomdoc select coddoc,nomdoc into :vcoddoc,:vnomdoc from docentes where coddoc=:sle_29.text; sle_29.text=vcoddoc st_35.visible=FALSE Cuadro de edición : sle_29 Evento keyd if trim(sle_29.text)='' then if keydown(27) then open(w_verdocentes) End if End if if keydown(keyenter!) then string vcoddoc,vnomdoc select coddoc,nomdoc into :vcoddoc,:vnomdoc from docentes where coddoc=:sle_29.text; sle_29.text=vcoddoc End If

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 69

Boton de comando MIGRAR: cb_5 Evento clicked dw_1.enabled=true integer n n=dw_1.insertrow(0) dw_1.scrolltorow(n) dw_1.SetRowFocusIndicator(Hand!) dw_1.setfocus() if dw_1.rowcount()>0 then dw_1.Setitem(n,"nummat",sle_28.Text) dw_1.Setitem(n,"dcodalu",trim(sle_1.Text)) dw_1.Setitem(n,"dnomalu",trim(sle_2.Text)) dw_1.Setitem(n,"aula",trim(sle_13.Text)) dw_1.Setitem(n,"grupo",trim(sle_14.Text)) dw_1.Setitem(n,"perasig",trim(sle_9.Text)) dw_1.Setitem(n,"condi",trim(sle_11.Text)) dw_1.Setitem(n,"turno",trim(sle_12.Text)) dw_1.Setitem(n,"dcodcu",trim(sle_19.Text)) dw_1.Setitem(n,"dnomcur",trim(sle_20.Text)) dw_1.Setitem(n,"semes",trim(sle_22.Text)) dw_1.Setitem(n,"creditos",Integer(sle_23.Text)) dw_1.Setitem(n,"nhoras",Integer(sle_24.Text)) dw_1.Setitem(n,"prereq",trim(sle_27.Text)) dw_1.Setitem(n,"coddoc",trim(sle_29.Text)) End if sle_19.text=' ' sle_20.text=' ' sle_21.text=' ' sle_22.text=' ' sle_23.text=' ' sle_24.text=' ' sle_25.text=' ' sle_26.text=' ' sle_27.text=' ' sle_29.text=' ' cb_9.enabled=TRUE cb_10.enabled=TRUE cb_asignat.enabled=TRUE sle_19.enabled=FALSE sle_20.enabled=FALSE sle_21.enabled=FALSE sle_22.enabled=FALSE sle_23.enabled=FALSE sle_24.enabled=FALSE sle_25.enabled=FALSE sle_26.enabled=FALSE sle_27.enabled=FALSE sle_29.enabled=FALSE Boton de comando MODIFICAR: cb_6 Evento clicked dw_1.enabled=true dw_1.setfocus() cb_5.enabled=false cb_10.enabled=true cb_8.enabled=true cb_6.enabled=false cb_7.enabled=false cb_3.enabled=false

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 70

Boton de comando ELIMINAR: cb_7 Evento clicked integer n n=messagebox("Confirme","¿Desea Eliminar este Registro?",question!,yesno!) if n=1 then dw_1.deleterow(dw_1.getrow()) dw_1.update() end if Boton de comando ADICIONAR: cb_9 Evento clicked dw_2.enabled=true integer n n=dw_2.insertrow(0) dw_2.scrolltorow(n) dw_2.SetRowFocusIndicator(Hand!) dw_2.setfocus() if dw_2.rowcount()>0 then dw_2.Setitem(n,"nummat",sle_28.Text) dw_2.Setitem(n,"dcodalu",sle_1.Text) dw_2.Setitem(n,"dnomalu",sle_2.Text) dw_2.Setitem(n,"perion",sle_9.Text) dw_2.Setitem(n,"condi",sle_11.Text) dw_2.Setitem(n,"semes",sle_10.Text) dw_2.Setitem(n,"numrec",sle_17.Text) dw_2.Setitem(n,"valor",sle_18.Text) dw_2.Setitem(n,"fecrec",sle_15.Text) dw_2.Setitem(n,"fecmat",sle_16.Text) dw_2.Setitem(n,"dcodeap",sle_3.Text) dw_2.Setitem(n,"escuela",sle_4.Text) dw_2.Setitem(n,"turno",sle_12.Text) End if dw_2.enabled=false cb_10.enabled=True Boton de comando GRABAR: cb_10 Evento clicked //manejo de buffers de edicion: integrar o recepcionar lo digitado dw_2.AcceptText() dw_1.AcceptText() dw_1.update() dw_2.update() commit using sqlca; cb_10.enabled=false close(w_matricula)

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 71

Datawindows objeto: dw_notas . Recpciona los datos de las asignaturas a matricular

Datawindows objeto: dw_matricula. Recepciona en sus campos los datos de matricula del estudiante, tales como codigo, nombres, period,seme ster codigo de la escuela, etc.

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 72

Interfaz de usuario w_matricula Evento OPEN // Conectar Dw con la BD dw_1.settransobject(SQLCA) dw_2.settransobject(SQLCA) // Limpia el bufer de datawindows y se edita el SQL de datawindow // Trae la informacion de la consulta que esta en el data windows object dw_1.retrieve() dw_2.retrieve() FORMULARIO DE PROCESAMIENTO DE NOTAS DEL PRIMER PAR CIAL La ventana w_notas1 contiene el datawindows dw_notas1 que permite registrar las notas del primer parcial. La siguiente imagen nos muestra la ventana de trabajo de notas Cuadros de edición Boton cb_1 filtra las asignaturas

Datawidows objeto Dw_notas1 que captura las notas del primer parcial Boton de commando BUSCAR: cb_1 Evento clicked STRING cad dw_1.setfilter("dcodcu='"+sle_1.text+"' and"+" turno='"+sle_2.text+"' and"+" grupo='"+sle_3.text+"' and"+" aula='"+sle_4.text+"'") dw_1.filter() Boton de comando SALIR: cb_2 Evento clicked close(w_notas1)

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 73

Boton de comando GRABAR: cb_3 Evento clicked dw_1.AcceptText() dw_1.update() commit using sqlca; close(w_notas1) Datawindows objeto dw_notas1 Este datawindows captura las notas del primer parcial La siguiente imagen nos muestra la estructura del datawindows, en donde se aprecia el tab order , tan importante que las columnas tengan la secuencia numérica del caso, ya que si estas columnas registraran el valor 0 no permiten digitar las notas Estructura del dw_notas1 Secuencia numérica de las columnas

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 74

FORMULARIO DE PROCESAMIENTO DE NOTAS DEL SEGUNDO PA RCIAL La siguiente imagen nos muestra la estructura de w_notas2 que la interfaz de usuario para la captura del notas del segundo parcial. Cuadros de edición Boton de comando para filtrar asignaturas

Datawindows objeto: Dw_notas2 Ventana w_notas2 Evento OPEN // Conectar Dw con la BD dw_1.settransobject(SQLCA) // Limpia el bufer de datawindows y se edita el SQL de datawindow // Trae la informacion de la consulta que esta en el data windows object dw_1.retrieve() Boton de commando BUSCAR: cb_1 Evento clicked STRING cad dw_1.setfilter("dcodcu='"+sle_1.text+"' and"+" turno='"+sle_2.text+"' and"+" grupo='"+sle_3.text+"' and"+" aula='"+sle_4.text+"'") dw_1.filter() Boton de comando SALIR: cb_2 Evento clicked close(w_notas2) Boton de comando GRABAR: cb_3 Evento clicked dw_1.AcceptText() dw_1.update() commit using sqlca; close(w_notas2)

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 75

Estructura del datawindows objeto dw_notas2 numeración secuencial de las columnas Tab order de las columnas

BASE DE DATOS Y TABLAS

La base de datos de Sql Server 2005 se llama: MATRICULA

Las tablas son las siguientes: - dbo.alumno - dbo.asignat - dbo.docentes - dbo.cargalec - dbo.matricul - dbo.notas

- dbo.alumnos dcodalu nvarchar (8) dnomalu nvarchar (40) sexo nvarchar (1) fecnac nvarchar (10) distr nvarchar (20) prov nvarchar (20) dep nvarchar (20) le nvarchar (8) direcc nvarchar (20) colpro nvarchar (20) colubi nvarchar (20) tele nvarchar (6) anioing nvarchar (4)

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 76

dcodeap nvarchar (2) eap nvarchar (40) perion nvarchar (6)

- dbo.asignat dcodcu nvarchar (6) dnomcu nvarchar (45) anio nvarchar (4) codfac nvarchar (2) facultd nvarchar (50) dcodeap nvarchar (2) escuela nvarchar (50) semes nvarchar (2) nroasi int nhorast int nhorasp int nhorass int nhorasl int nhoras int créditos int prereq nvarchar (50) nparciales int formac nvarchar (50) marca nvarchar (1)

- dbo.docentes coddoc nvarchar (3) nomdoc nvarchar (40) dirdoc nvarchar (40) fecnac nvarchar (10) le nvarchar (8) tele nvarchar (6) sexo nvarchar (1) titulo nvarchar (30) especial nvarchar (25) feching nvarchar (10) cargo nvarchar (30) jornalab nvarchar (3) condi nvarchar (1) nivmag nvarchar (3) perion nvarchar (5)

- dbo.cargalec coddoc nvarchar (3) nomdoc nvarchar (40) perion nvarchar (5) ccurso nvarchar (6) ncurso nvarchar (60) turno nvarchar (1) nhoras int créditos int aula nvarchar (1)

- dbo.matricul nummat nvarchar (10) dcodalu nvarchar (8) dnomalu nvarchar (40)

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 77

perion nvarchar (5) semes nvarchar (2) dcodeap nvarchar (2) escuela nvarchar (40) turno nvarchar (1) condi nvarchar (1) numrec nvarchar (13) valor numeric (14,2) fecrec nvarchar (10) aula nvarchar (1) grupo nvarchar (1) fecmat nvarchar (10)

- dbo.notas nummat nvarchar (8) dcodalu nvarchar (8) dnomalu nvarchar (40) dcodcu nvarchar (6) dnomcur nvarchar (45) cargorep nvarchar (1) semes nvarchar (2) turno nvarchar (1) condi nvarchar (1) coddoc nvarchar (3) nomdoc nvarchar (40) nhorast numeric (14,2) nhorasp numeric (14,2) nhorass numeric (14,2) nhorasl numeric (14,2) nhoras numeric (14,2) créditos numeric (14,2) prereq nvarchar (10) grupo nvarchar (1) aula nvarchar (1) perasig nvarchar (11) ordist nvarchar (40) orden nvarchar (3) sexo nvarchar (1) retirado nvarchar (1) sitfinr nvarchar (3) parc1 smallint parc1r smallint parc1s smallint parc1rs smallint parc2 smallint parc2r smallint parc2 smallint parc2rs smallint pract1 smallint pract2 smallint pract3 smallint pract4 smallint pract5 smallint pract6 smallint pract7 smallint pract8 smallint evap1 smallint evap2 smallint evap3 smallint evap4 smallint

Programacion en PowerBuilder y Sql Server

Ing. Oswaldo Navarrete E. Página 78

evap5 smallint evap6 smallint evap7 smallint evap8 smallint lab1 smallint lab2 smallint lab3 smallint lab4 smallint lab5 smallint lab6 smallint lab7 smallint lab8 smallint peso smallint puntaje smallint promparc smallint evap smallint promlab smallint dpromd smallint perion nvarchar (5) dcodeap nvarchar (2) aplaz nvarchar (1) nropract smallint nroevap smallint nrolab smallint

- dbo.Sistema cod_usuario char 10 usuario char 20 clave char 10

REFERENCIAS BIBLIOGRAFICAS https://rapidshare.com/#!download|895l36|3906492521|tutorial-pw-basico.pdf|2269|R~EC0E3D59AD5806E93EACC8D518C98E84|0|0 http://www.lawebdelprogramador.com/cursos/Power_Builder/396-Guia_de_autoaprendizaje_en_Power_Builder.html http://www.lawebdelprogramador.com/codigo/Power_Builder/1338-Backup_Restore_SQL.html http://desarrolladorpowerbuilder.blogspot.com/ http://www.inei.gob.pe/biblioineipub/bancopub/inf/lib5022/indice.HTM http://www.abcdatos.com/tutoriales/tutorial/l6752.html http://www.clikear.com/manuales/sql/default.aspx http://www.kernelnet.com/trucos/trucos-de-bases-de-datos/19-acceder-a-bases-de-datos-sql-server- Ing. Oswaldo Navarrete Espejo Registro CIP 23874 e_mail: [email protected]