Está en la página 1de 78

Programacion en PowerBuilder y Sql Server

PowerBuilder
SQL Server
TECNICA DE PROGRAMACION, MODELO DE DATOS Y
CONEXIN A BASE DE DATOS EN EL DESARROLLO DE
SOFTWARE EN POWERBUILDER Y SQL SERVER

Entorno de Programacion: PowerBuilder


Gestor de base de Datos: SQL Server
Tecnologa de conexion: ODBC/DSN
Software modelo: Gestion academica de
matricula y notas
Ing. Oswaldo Navarrete Espejo
Email: one21409746@hotmail.com
Ica-Peru

Ing. Oswaldo Navarrete E.

Pgina 1

Programacion en PowerBuilder y Sql Server

CONTENIDO
INTRODUCCIN
POWRBUILDER Y SQL SERVER
Generalidades
Principales caractersticas
Datawindows
Creacion de datawindows control con datawindows objeto
Conexin ODBC/DSN
Creacion de la base de datos
Conexin a Microsoft Server
Aspectos bsicos
Instancia de SQL Server
Quien es dbo?
Que es cuenta de usuario?
Conexin con las base de datos
Profile de conexin
Creacion del WorkSpace, la aplicacin y el script de conexin

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 parcial
Windows principal y Windows men
Base de datos y tablas
REFERENCIAS BIBLIOGRAFICAS

Ing. Oswaldo Navarrete E.

Pgina 2

Programacion en PowerBuilder y Sql Server

INTRODUCCION

Power Builder permite a los desarrolladores los beneficios de un desarrollo rpido 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 administracin (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 relacinales, pero adems cuenta con generadores de
informes, pantallas, mens, 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 conexin a la base de datos en el evento OPEN del desarrollo de la
aplicacin, asi como tambin establecer las propiedades de conexin 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 utilizacion 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 alumnos, docentes y asignaturas de cualquier ao
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

Ing. Oswaldo Navarrete E.

Pgina 3

Programacion en PowerBuilder y Sql Server

POWERBUILDER Y SQL SERVER

Ing. Oswaldo Navarrete E.

Pgina 4

Programacion en PowerBuilder y Sql Server

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 programacin 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 aplicacin Cliente/Servidor pone en comunicacin 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 aplicacin que se utiliza para desarrollar aplicaciones de manera rapida y
usa tecnologas 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 conexin para cada base de datos. En Power Builder
se pueden crear aplicaciones no solo para Windows, sino tambien para UNX y MACINTOSH.
Power Builder es un producto SYBASE, el cual viene acompaado de una base de datos relacional de
nombre ANYWHERE
Power Builder soportA multi plataformas desarrolladas y desplegadas

Principales caractersticas
Caractersticas 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 informacin de multiples bases de datos y mostrar esta informacin 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 creacin de aplicaciones es sencilla
. Se realiza poca programacin

Ing. Oswaldo Navarrete E.

Pgina 5

Programacion en PowerBuilder y Sql Server

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 tambin
incluye un lenguaje de programacin llamado Powerscript, el cual es usado para especificar el
comportamiento de la aplicacin en respuesta a eventos del sistema o del usuario, tal como cerrar una
ventana o presionar un botn. 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 slo
lgica de aplicacin, se pueden ejecutar en otros sistemas operativos como Unix, usando la "Mquina
Virtual de PowerBuilder" o PBVM incluida dentro del servidor de aplicaciones EAServer de Sybase.
Adicionalmente, PowerBuilder posee un objeto nativo para la gestin 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 tambin brinda acceso simplificado al contenido
de la base de datos. Hasta cierto punto, el DataWindow libera al programador de las diferencias entre
sistemas de gestin 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 tecnologa patentada por Sybase, permite acelerar el desarrollo de aplicaciones y provee
capacidades de acceso a datos, de validacin y de actualizacin. En resumen, el DataWindow es un
objeto de PowerBuilder que permite interactuar con una base de datos.
Caractersticas

Incorpora ms de 200 funciones y eventos, ya previamente incorporados dentro del


DataWindow.
Soporte para formato y validacin 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 slo se pueden utilizar en aplicaciones Cliente/Servidor sino que tambin
se pueden utilizar para crear aplicaciones Web que se realicen con PowerBuilder.

Algunos tipos de presentacin de los DataWindows:

Crosstab
Freeform
Graph
Grid
Group
Label
Tabular

Es la caracterstica 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 especficamente de una
base de datos al usuario final, DataWindows pueden ser pantalla de consulta, formato de entrada de
datos, reporte de impresin,etc.
Un Datawindows es un objeto visual de acceso a los datos
Basicamente este pintor genera una representacin 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

Ing. Oswaldo Navarrete E.

Pgina 6

Programacion en PowerBuilder y Sql Server

Diseo de un Datawindows
1.
2.

El primer paso consiste en seleccionar la opcin New.


De inmediato insurge la pantalla New que permite definir el tipo de presentacion

En esta pantalla elegimos el estilo de presentacin 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.
5.

Ejecutamos click en Next


En la siguiente pantalla elegimos la tabla que queremos manejar con el Datawindows

Ing. Oswaldo Navarrete E.

Pgina 7

Programacion en PowerBuilder y Sql Server

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
configuracin de la presentacin del objeto

Ing. Oswaldo Navarrete E.

Pgina 8

Programacion en PowerBuilder y Sql Server

Ejecutamos click en Next


8.

Visualizamos la siguiente pantalla con las caractersticas del Datawindows

Ejecutamos click en Finish y se presenta el Datawindows

Ing. Oswaldo Navarrete E.

Pgina 9

Programacion en PowerBuilder y Sql Server

9.

Finalmente le damos un nombre al Datawindows

Para terminar se ejecuta click en OK

Ing. Oswaldo Navarrete E.

Pgina 10

Programacion en PowerBuilder y Sql Server


Propiedades de actualizacin de un datawindows
Por defecto el objeto DataWindow solo puede actualizar una tabla. Para indicar las propiedades de
actualizacin 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 dilogo 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 estedilogo donde indicaremos las
caractersticas de actualizacin que tendr elDataWindow.
Finalizado el proceso de creacin 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 tablas


En la pantalla principal seleccione la opcin ROWS.
Al ejecutar click en esta opcin Rows se nos presenta una nueva pantalla, en la cual elegimos
la opcin Update properties

Opcion
ROWS

Update
Properties

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

Ing. Oswaldo Navarrete E.

Pgina 11

Programacion en PowerBuilder y Sql Server


Una tabla suele tener una columna o una combinacin 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 actualizacin de la tablas, por cuanto el sistema exige al
procesar datos que exista una identificacin nica de cada fila de la tabla. Este es el caso de
procesamiento de notas y matriculas, por ello el diseo 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 lnea es nica.
Las caractersticas de la actualizacin de la informacin 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 estn disponibles, ni la
capacidad de actualizar por medio de la funcin UPDATE()
TABLE TO UPPATE: Indica el nombre de la tabla a la que afectara en acciones de actualizacin
Where Clause for Update/Delete
KEY COLUMNS: Esta opcin 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 botn 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 Datawindows.


Una ventana Windows que contiene un datawindows para la modificacin de datos como es el
caso de registros de notas, requiere en forma obligatoria que a travs de la ventana principal
seleccione FORMAT y luego TAB ORDER y proceda a registrar numeracin 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 modificacin de datos

Ing. Oswaldo Navarrete E.

Pgina 12

Programacion en PowerBuilder y Sql Server

Columnas
numeradas.
El valor 0 no
permite
editar datos

CREACION DE WINDOWS (VENTANA) CON UN DATAWINDOWS


CONTROL Y UN DATAWINDOWS OBJETO
Un objeto DataWindows debe ser insertado con una ventana regular, en todo diseo de un DataWindow
forman parte dos objetos:
1.- DataWindow Object.- que es diseado 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 opcin NEWS

Ing. Oswaldo Navarrete E.

Pgina 13

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 14

Programacion en PowerBuilder y Sql Server

5.

Finalizado la creacin 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 informacin
(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 transaccin especificado por el
programador. El objeto de transaccin proporciona la informacin 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 informacin de la consulta que esta en el datawindows object

Ing. Oswaldo Navarrete E.

Pgina 15

Programacion en PowerBuilder y Sql Server


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

CONEXION ODBC/DSN, TECNICA DE PROGRAMACION Y


MODELO DE DATOS
PowerBuilder es un entorno grafico de programacin 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 consideracin 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 aplicacin 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 gestin 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.
Caractersticas de Microsoft SQL Server

Soporte de transacciones.
Escalabilidad, estabilidad y seguridad.
Soporta procedimientos almacenados.
Incluye tambin un potente entorno grfico de administracin, que permite el uso de comandos
DDL y DML grficamente.
Permite trabajar en modo cliente-servidor, donde la informacin y datos se alojan en el servidor y
los terminales o clientes de la red slo acceden a la informacin.
Adems permite administrar informacin de otros servidores de datos.

Este sistema incluye una versin reducida, llamada MSDE con el mismo motor de base de datos pero
orientado a proyectos ms pequeos, que en sus versines 2005 y 2008 pasa a ser el SQL Express
Edition, que se distribuye en forma gratuita.
Para el desarrollo de aplicaciones ms complejas (tres o ms capas), Microsoft SQL Server incluye
interfaces de acceso para varias plataformas de desarrollo, entre ellas .NET, pero el servidor slo est
disponible para Sistemas Operativos Windows.

Ing. Oswaldo Navarrete E.

Pgina 16

Programacion en PowerBuilder y Sql Server


Cada instalacin de SQL Server tiene varias bases de datos. SQL Server tiene cuatro bases de datos
del sistema (master, model, tempdb y msdb) y cada instalacin 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 diseado 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 aplicacin de cliente o de servidor.
En un sistema cliente-servidor de dos estratos, los usuarios ejecutan una aplicacin en su equipo
local, llamado cliente, que se conecta a traves de la red con el servidor que ejecuta SQL Server. La
aplicacin de cliente ejecuta las reglas de la compaa 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 aplicacin 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 compaa se encuentra en aplicaciones de servidor que se ejecutan en un servidor.
Los clientes reducidos solicitan funciones a la aplicacin de servidor, a su vez, es una aplicacin
multiproceso capaz de operar con varios usuarios.

Ing. Oswaldo Navarrete E.

Pgina 17

Programacion en PowerBuilder y Sql Server

Conexin a Microsoft SQL Server 2005 Database Engine


(Motor de base de datos de SQL Server 2005).
Aspectos bsicos
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 dilogo 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 slo 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 canalizacin, tal como
np:\\.\pipe\3C3DF6B1-2262-47\tsql\query. Para obtener ms informacin, vea la documentacin de SQL
Express.
Autenticacin
Dispone de dos modos de autenticacin al conectarse a una instancia del Database Engine
(Motor de base de datos):
Modo de autenticacin de Windows (autenticacin de Windows)
El modo de autenticacin de Microsoft Windows permite al usuario conectarse mediante una
cuenta de usuario de Windows.
Autenticacin de SQL Server
Cuando un usuario se conecta con un nombre y una contrasea de inicio de sesin
determinados desde una conexin no confiable, SQL Server realiza la autenticacin y
comprueba si se ha configurado una cuenta de inicio de sesin de SQL Server y si la contrasea
especificada coincide con la almacenada anteriormente. Si SQL Server no tiene configurada una
cuenta de inicio de sesin, la autenticacin 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 opcin slo est disponible si ha
seleccionado la autenticacin de Windows para conectarse.
Inicio de sesin
Escriba el inicio de sesin con el que va a conectarse. Esta opcin slo est disponible si ha
seleccionado la autenticacin de SQL Server para conectarse.
Contrasea
Escriba la contrasea del inicio de sesin. Esta opcin slo es editable si ha seleccionado la
autenticacin de SQL Server para conectarse.
Conectar
Haga clic aqu para conectarse al servidor seleccionado anteriormente.

Ing. Oswaldo Navarrete E.

Pgina 18

Programacion en PowerBuilder y Sql Server


Opciones
Haga clic aqu para que se muestren las opciones adicionales de conexin al servidor, como
registrar un servidor y recordar la contrasea.

Como se conecta Microsoft SQL Server Management Studio con la base de datos?
En el presente trabajo la conexin 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 instalacin del motor de bases de datos SQL Server con una
configuracin 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 configuracin 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 configuracin 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), configuracin, intercalacin, nivel de
compatiblidad.
En nuestro caso se instala una unica instancia de SQL Server con nombre de bases de datos nicos
Segn el entorno de trabajo y las caractersticas 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 problemtica 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 adems simplificar la administracin (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 produccin se llama ProcesoDB, para el entorno de pruebas tendremos que darle otro
nombre.

Ing. Oswaldo Navarrete E.

Pgina 19

Programacion en PowerBuilder y Sql Server

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
automticamente. 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 tambin porque es el
dueo de la Base de Datos.
En SqlServer todos los objetos tienen un dueo y aquellos objetos creados por cuentas que forman parte
del rol sysadmin pertenecen a la cuenta dbo automticamente. 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 dueo 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 tambin a los usuarios miembros del rol sysadmin

QUE ES CUENTA DE USUARIO?


Que es una cuenta de usuario?
Una cuenta de usuario es la informacin 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 contrasea.
Existen tres tipos distintos de cuentas:
. Estandar
. Administrador

Ing. Oswaldo Navarrete E.

Pgina 20

Programacion en PowerBuilder y Sql Server


. 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
mximo 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 coleccin de informacin 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 contrasea

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 coleccin de objetos para crear una coneccin a bases de datos y leer datos
desde tablas, trabajando como una interface hacia la 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, despus de crear una coneccin 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.

Ing. Oswaldo Navarrete E.

Pgina 21

Programacion en PowerBuilder y Sql Server


Directamente
De esta manera se accede mediante un driver OLE DB nativo.
Mtodos 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 conexin a la base de datos Pubs en un servidor Microsoft SQL
Server llamado tuBase.
Este script crea una instancia del objeto Connection. Luego la conexin a SQL Server es abierta con un
script de conexin 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 parmetro PROVIDER es utilizado para especificar el nombre del proveedor OLE DB a usar en la
conexin, este ejemplo utiliza un proveedor OLE DB nativo para SQL Server. En es caso de no
especificar ningn proveedor, se utilizar el driver ODBC para OLE DB por defecto.
El parmetro DATA SOURCE, es utilizado para proveer el nombre del Servidor SQL.
El parmetro 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 parmetro UID es opcional, si no se coloca nada en el, la conexin ser hecha con la
cuenta IUSER_MachineName.
El parmetro PWD contiene la clave para acceder al servidor SQL.
Finalmente el parmetro DATABASE es utilizado para especficar una particular base de datos, localizada
en el Servidor SQL.

b. Conectar a SQL Server con ODBC


El mtodo tradicional para conectar una base de datos es a traves de ODBC, y existen tres maneras para
hacer esto.
Guardando la informacin en el registro de Windows, en un archivo de texto o dentro del string de
conexin mismo.
Crear un DSN de Sistema para Microsoft SQL
Antes de crear el script para almacenar la informacin de la conexin 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 descripcin, y despus seleccionar el Servidor o
Server, al cal se necesita conectar. Si el SQL Server esta localizado sobre alguna mquina con IIS
(Internet Informatin Server), hay que seleccionar Local. Si en cambio, el Servidor esta localizado sobre
Internet, hay que ingresar una direccin IP o un nombre de dominio o domain name.
5) Seleccionar el mtodo de autenticacin. Presionar Next o Prximo 3 veces para para evitar las
prximas 2 pantallas.

Ing. Oswaldo Navarrete E.

Pgina 22

Programacion en PowerBuilder y Sql Server


6) Finalmente se puede testear la nueva conexin, si todo salio bien, el nuevo DSN de Sistema o System
DSN, ah sido creado.
Para utilizar esta conexin dentro de las pginas ASP o mediante otro medio (CGI por ejemplo) es
necesario ingresar un script como este, en este caso para pginas ASP.
Crear un DSN de Archivo para Microsoft SQL Server
En lugar de almacenar la informacin de la conexin en el Windows Registry, como en el ejemplo
anterior, es posible guardar esta informacin 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 especficar el nombre y un lugar donde ser
almacenado el archivo que contendr la informacin de la conexin.
Los pasos que siguen son idnticos al ejemplo anterior.
Si por ejemplo, el el DSN de Archivo que se cre, de llamara MiArchivoDSN, se tendra que utilizar un
string como este para abrir la conexin a la base de datos.
Colocar la informacin de la conexin dentro del script.
Este mtodo es sumamente sencillo, y no es necesario configurar nada en el Administrador ODBC.
Todos estos mtodos son sencillos de implementar y la eleccin de alguno de ellos depender del tipo de
conexin, seguridad e informacin que se tenga del servidor.
Pero es necesario mencionar que es posible crear una conexin mediante un archivo Microsoft Data
Link, cmo se explica en el artculo, Manejando conexiones con archivos Data Link. Este mtodo puede
simplificar y dar ms seguridad a la conexin.
ADO contiene la coleccin de objetos para crear una coneccin a bases de datos y leer datos
desde tablas, trabajando como una interface hacia la 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, despus de crear una coneccin 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.
Directamente
De esta manera se accede mediante un driver OLE DB nativo.

Mtodos 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 conexin a la base de datos Pubs en un servidor Microsoft SQL
Server llamado tuBase.
Este script crea una instancia del objeto Connection. Luego la conexin a SQL Server es abierta con un
script de conexin 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).

Ing. Oswaldo Navarrete E.

Pgina 23

Programacion en PowerBuilder y Sql Server


El parmetro PROVIDER es utilizado para especificar el nombre del proveedor OLE DB a usar en la
conexin, este ejemplo utiliza un proveedor OLE DB nativo para SQL Server. En es caso de no
especificar ningn proveedor, se utilizar el driver ODBC para OLE DB por defecto.
El parmetro DATA SOURCE, es utilizado para proveer el nombre del Servidor SQL.
El parmetro 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 parmetro UID es opcional, si no se coloca nada en el, la conexin ser hecha con la
cuenta IUSER_MachineName.
El parmetro PWD contiene la clave para acceder al servidor SQL.
Finalmente el parmetro DATABASE es utilizado para especficar una particular base de datos, localizada
en el Servidor SQL.

b. Conectar a SQL Server con ODBC


El mtodo tradicional para conectar una base de datos es a traves de ODBC, y existen tres maneras para
hacer esto.
Guardando la informacin en el registro de Windows, en un archivo de texto o dentro del string de
conexin mismo.
Crear un DNS de Sistema para Microsoft SQL
Antes de crear el script para almacenar la informacin de la conexin 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 descripcin, y despus seleccionar el Servidor o
Server, al cal se necesita conectar. Si el SQL Server esta localizado sobre alguna mquina con IIS
(Internet Informatin Server), hay que seleccionar Local. Si en cambio, el Servidor esta localizado sobre
Internet, hay que ingresar una direccin IP o un nombre de dominio o domain name.
5) Seleccionar el mtodo de autenticacin. Presionar Next o Prximo 3 veces para para evitar las
prximas 2 pantallas.
6) Finalmente se puede testear la nueva conexin, si todo salio bien, el nuevo DSN de Sistema o System
DSN, ah sido creado.
Para utilizar esta conexin dentro de las pginas ASP o mediante otro medio (CGI por ejemplo) es
necesario ingresar un script como este, en este caso para pginas ASP.
Crear un DNS de Archivo para Microsoft SQL Server
En lugar de almacenar la informacin de la conexin en el Windows Registry, como en el ejemplo
anterior, es posible guardar esta informacin 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 especficar el nombre y un lugar donde ser
almacenado el archivo que contendr la informacin de la conexin.
Los pasos que siguen son idnticos al ejemplo anterior.

Ing. Oswaldo Navarrete E.

Pgina 24

Programacion en PowerBuilder y Sql Server


Si por ejemplo, el el DNS de Archivo que se cre, de llamara MiArchivoDSN, se tendra que utilizar un
string como este para abrir la conexin a la base de datos.
Colocar la informacin de la conexin dentro del script.
Este mtodo es sumamente sencillo, y no es necesario configurar nada en el Administrador ODBC.
Todos estos mtodos son sencillos de implementar y la eleccin de alguno de ellos depender del tipo de
conexin, seguridad e informacin que se tenga del servidor.
Pero es necesario mencionar que es posible crear una conexin mediante un archivo Microsoft Data
Link, cmo se explica en el artculo, Manejando conexiones con archivos Data Link. Este mtodo puede
simplificar y dar ms seguridad a la conexin.
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
contrasea 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 conexin a la base de datos


Para la creacin del DSN de ODBC es necesario ejecutar los siguientes pasos:
Ejecutamos click en Inicio, panel de control, herramientas administrativas, orgenes de datos ODBC
En la ventana que se presenta elegimos DSN de sistema

Ing. Oswaldo Navarrete E.

Pgina 25

Programacion en PowerBuilder y Sql Server


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 sealamos el nombre del origen de datos, tambin una descripcin 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

Ing. Oswaldo Navarrete E.

Pgina 26

Programacion en PowerBuilder y Sql Server

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

Ing. Oswaldo Navarrete E.

Pgina 27

Programacion en PowerBuilder y Sql Server

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

Para seguridad de que el DSN de ODBC nos permite la conexin a la base de datos ejecutamos click en
la opcin Probar origen de datos
Ejecutamos click en Aceptar y en la ventana Administrador de orgenes de datos apreciamos el DSN
creado

Ing. Oswaldo Navarrete E.

Pgina 28

Programacion en PowerBuilder y Sql Server

Finalmente click en Aceptar.

Conectar a Sql Server desde Power Builder 11


A partir de la Versin 11.0 Sybase ha incluido nuevamente los drivers nativos para la conexin a Microsoft
Server 2000 y 2005 que fueron excluidos en las versiones 10 y 10.5 para conectarse por OLE DB. Ahora
nuevamente la conexin 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 versin 10 ya no tiene la opcion de configuracin 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 continuacin 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

Ing. Oswaldo Navarrete E.

Pgina 29

Programacion en PowerBuilder y Sql Server


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=databas
e=MIBASE

PROFILE DE CONEXION
Qu es un database profile?. Es el enlace que utilizarn 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 CONEXIN
Se realiza a travs del botn CONTROL DE PERFILES DE BASES DE DATOS (DB Profile) tal cual se
aprecia en la siguiente imagen

DbProfile

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

Ing. Oswaldo Navarrete E.

Pgina 30

Programacion en PowerBuilder y Sql Server

En esta ventana Database Profiles elegimos la opcin ODB ODBC y luego click en New para ingresar a
la ventana del setup ODBC que se muestra a continuacin

En esta ventana debemos definir las siguientes caractersticas de la conexin a la base de datos:
Profile Name
Data Source
User ID
Password

Ing. Oswaldo Navarrete E.

Pgina 31

Programacion en PowerBuilder y Sql Server


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 conexin este acompaado del
siguiente icono y si es asi, entonces ya estaremos conectado

Creacion del WorkSpace, la aplicacin y el script de conexion


Para iniciar el desarrollo del proyecto del sistema en PowerBuilder, creamos el WorkSpace. El
Workspace o espacio de trabajo es un archivo de extensin .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.

Ing. Oswaldo Navarrete E.

Pgina 32

Programacion en PowerBuilder y Sql Server


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 aplicacin
Una vez creado el espacio de trabajo, debemos crear nuestra aplicacin. Una aplicacin tiene como
elementos a las ventanas, los mens, los DataWindows y los objetos de usuario.

6
Propiedades de la Aplicacin Tpico

Descripcin

General

Permite obtener informacin


del objeto aplication.

Font

Permite definir caractersticas


de presentacin visual de
elementos.

Icon

Permite definir el icono de la


aplicacin.

Variable

Permite conocer las variables


globales por defecto y su tipo.

Libraries

Permite declarar las libreras


que conforman la aplicacin.

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 despus de ejecutar click en OK insurge la ventana Specify News Aplication


and Library, tal como apreciamos a continuacion

Ing. Oswaldo Navarrete E.

Pgina 33

Programacion en PowerBuilder y Sql Server

En esta ventana digitamos el Nombre de la Aplicacin, la Librera y el destino. Luego


ejecutamos click en Finish
De esta manera se ha creado el workspace y la aplicacin. 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 aplicacin
Script de la aplicacion
En el evento Open procedemos a ejecutar el script de la aplicacin para la conexin 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 conexion
if sqlca.sqlcode<>0 then
Messagebox("Error de conexion",sqlca.sqlErrText)
halt
else
//

Messagebox("conexion exitosa",sqlca.sqlErrText)
open(w_principal)

end if

Ing. Oswaldo Navarrete E.

Pgina 34

Programacion en PowerBuilder y Sql Server

Script de la
conexin de
la aplicacin
a base de
datos

SQLCA
El objeto de transaccin 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 conexin 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 conexin a la base de datos. Cada
vez que se hace una operacin sobre la base de datos el SQLCA, contiene el resultado final de esta
operacin.
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 operacin), fue mayor a cero, significa que algn error
ocurri durante la consulta. Cul error?, pues el nmero que contenga el SQLCA.Code. En el caso de que
este sea 100, significa que la consulta fue correcta, pero no se logr obtener informacin.
Por eso generalmente se utiliza la siguiente instruccin luego:
Messagebox('ERROR('+String(SQLCA.SQLCode)+')', 'ERROR INTERNO: '+SQLCA.SQLErrText)
Ah te dar el nmero del error y el mensaje generado por la base de datos.
Ahora bien, si se logr conseguir la informacin depende de varias cosas.
Primero, que no se haya producido error, segundo, que se haya podido recuperar alguna informacin
vlida.
Para el caso:
Select tb_in_lista_precios.precio,

Ing. Oswaldo Navarrete E.

Pgina 35

Programacion en PowerBuilder y Sql Server


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 informacin')
End If
Else
Messagebox('ERROR('+String(SQLCA.SQLCode)+')', 'ERROR INTERNO: '+SQLCA.SQLErrText)
End If

Script de conexin creando el objeto de transaccin


El cdigo 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 conexin, tambin se lista el campo equivalente en el dilogo de Configuracin de Perfiles
de Bases de Datos.

Ing. Oswaldo Navarrete E.

Pgina 36

Programacion en PowerBuilder y Sql Server

Sintaxis y uso del parmetro 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 parmetros de base de datos son compatibles con la
interfaz de PowerBuilder ODBC slo si el controlador ODBC que est utilizando y el DBMS de
back-end compatible con la funcin

Ing. Oswaldo Navarrete E.

Pgina 37

Programacion en PowerBuilder y Sql Server

DBParm Parametro ConnectString


Descripcin
Especifica los parmetros necesarios para conectarse a una base de datos.
Se aplica a ODBC
Sintaxis
La sintaxis ConnectString muestra en una sola lnea. Debe incluir toda la
ConnectString entre comillas simples y los parmetros por separado dentro de la
ConnectString con punto y coma.
Sintaxis ODBC
Connectstring = "DSN = nombre de la fuente de datos _ _; {UID = usuario _ ID;
PWD = contrasea; controlador especfico _ _ parmetros} '
Parmetro
nombre_fuente_datos

Descripcin
Un nombre que identifica la fuente de datos

ID_usuario

(Opcional) La identificacin de usuario requerida para conectarse a la


fuente de datos

contrasea

(Opcional) La contrasea requerida por


ID_usuario para conectarse a la fuente de datos

driver_specific_parameters (Opcional) Cualquier otra especfica del controlador


parmetros necesarios para conectar

Ajuste de los parmetros DBParm


En PowerBuilder, usted puede ajustar los parmetros DBParm mediante una de las siguientes:

Edicin del perfil de base de datos cuadro de dilogo Configuracin de la conexin en el entorno
de desarrollo
Especificacin de los parmetros de conexin en un script de la aplicacin

Ing. Oswaldo Navarrete E.

Pgina 38

Programacion en PowerBuilder y Sql Server

Ajuste de los parmetros DBParm en el entorno de


desarrollo
Edicin de perfiles de base de datos
Para establecer los parmetros DBParm para una conexin de base de datos en el entorno de desarrollo
de PowerBuilder, debe modificar el perfil de base de datos para esa conexin.
Lmite de caracteres para cadenas DBParm
Cadenas que contienen los parmetros DBParm que se especifican en el cuadro de dilogo Configuracin
de perfil de base de datos para la conexin puede ser de hasta 999 caracteres de longitud.
Este lmite se aplica slo a DBParm parmetros 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 transaccin no se limitan a una longitud especificada.
Lo que se hace
Puede establecer los parmetros DBParm en el cuadro de dilogo Configuracin de perfil de base de
datos para su conexin.

Ajuste de los parmetros DBParm en un script de


aplicaciones PowerBuilder
Si est desarrollando una aplicacin PowerBuilder que se conecta a una base de datos, debe especificar
los parmetros de conexin necesarios en el guin apropiado como propiedades del objeto de transaccin
por defecto (SQLCA) o un objeto de transaccin que cree. Por ejemplo, puede especificar los parmetros
de conexin en la secuencia de comandos que se abre la aplicacin.
Uno de los parmetros de conexin 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 dilogo Configuracin de perfil de base de datos en la secuencia de comandos
Codificacin PowerScript para establecer los valores de la propiedad DBParm del objeto de
transaccin
Lectura de valores DBParm de un archivo de texto externo

Copia de la sintaxis DBParm fromthe ficha Vista previa


La forma ms fcil de especificar los parmetros de DBParm en un script de aplicacin PowerBuilder es
copiar la sintaxis DBParm PowerScript de la ficha Vista previa en el cuadro de dilogo Configuracin de
perfil de base de datos en su guin, la modificacin de la transaccin por defecto el nombre del objeto
(SQLCA) si es necesario.
Como se establecen los parmetros DBParm en el cuadro de dilogo Configuracin de perfil de base de
datos en el entorno de desarrollo, PowerBuilder genera la sintaxis correcta conexin 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 ms pginas de ficha en el cuadro de dilogo Configuracin de perfil de base de datos


para su conexin, los valores de los parmetros de suministro de DBParm desea establecer.
Por ejemplo, en la ficha Red en la configuracin del perfil de base de datos - Adaptive Server

Ing. Oswaldo Navarrete E.

Pgina 39

Programacion en PowerBuilder y Sql Server


Enterprise cuadro de dilogo contiene la configuracin de la red de los parmetros relacionados
con DBParm que la interfaz admite. Este ejemplo muestra los valores no predeterminados para
Nombre de la aplicacin (se corresponde con el parmetro DBParm AppName) y el nombre de
estacin de trabajo (se corresponde con el parmetro DBParm Host):

Para obtener informacin sobre los parmetros 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 dilogo Configuracin.

3. Haga clic en la ficha Vista previa.


La sintaxis correcta PowerScript DBParm para cada muestra opcin seleccionada en el cuadro
Base de datos Sintaxis de conexin. Por ejemplo:

Ing. Oswaldo Navarrete E.

Pgina 40

Programacion en PowerBuilder y Sql Server


4.

Seleccione una o varias lneas de texto en el cuadro de base de datos Sintaxis de conexin y
haga clic en Copiar.
PowerBuilder copia el texto seleccionado al portapapeles.

5.
6.

Haga clic en Aceptar para cerrar el perfil de base de datos de cuadro de dilogo Configuracin.
Pegar el texto seleccionado de la ficha Vista previa en su guin, la modificacin de la
transaccin por defecto el nombre del objeto (SQLCA) si es necesario.

Codificacin PowerScript para establecer los valores


de la propiedad DBParm
Otra forma de especificar los parmetros de conexin en un script es mediante la codificacin de
PowerScript para asignar valores a las propiedades del objeto de transaccin. PowerBuilder utiliza un
objeto especial no visual llamado un objeto de transaccin para comunicarse con la base de datos. El
objeto de transaccin 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 conexin es DBParm. DBParm contiene DBMS parmetros especficos que
permiten la aplicacin de aprovechar las caractersticas 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 aplicacin en la que desea especificar parmetros de conexin.


Para obtener instrucciones, consulte la Gua del usuario.

2.

Utilice la sintaxis siguiente para especificar PowerScript parmetros DBParm. Asegrese de


separar los parmetros DBParm con comas, y adjuntar toda la cadena de DBParm entre comillas
dobles.
SQLCA.dbParm = "parameter_1, Parmetro_2, parameter_n"
Por ejemplo, la siguiente declaracin 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 parmetros: ConnectString y asncrona.
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 conexin 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 aplicacin a un DBF, el cdigo sera 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

Ing. Oswaldo Navarrete E.

Pgina 41

Programacion en PowerBuilder y Sql Server


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, sera posible realizar la conexin a cualquier fuente de datos, si se


especifica de forma correcta el connectionstring en el DBParm.

Powerbuilder y Mysql
Conexin 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;PA
SSWORD=mipass;OPTION=135168;',DisableBind=1" Connect using SQLCA;
Notas:
1) La opcin 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 tamao de una columna y el tamao en el Datawindow, si no se agrega esta opcin,
la aplicacin es muy probable que funcione sin tener ningn problema, pero si en la base se datos se cambia algn tamao en alguna
columna que aparece en el Datawindow, entonces si marcar un error porque los tamaos seria diferentes y es precisamente el
DisableBind=1, lo que hace que no se cheque esto.

Ing. Oswaldo Navarrete E.

Pgina 42

Programacion en PowerBuilder y Sql Server

ESTRUCTURA Y
DESARROLLO
DEL SISTEMA

Ing. Oswaldo Navarrete E.

Pgina 43

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 44

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 45

Programacion en PowerBuilder y Sql Server

WINDOWS PRINCIPAL Y WINDOWS DEL MENU


La siguiente imagen muestra el diseo de la ventana principal w_principal
En la ventana de propiedades de la ventana w_principal sealamos el MenuName: m_principal a fin de
ejecutar la presentacin del men

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

Ing. Oswaldo Navarrete E.

Pgina 46

Programacion en PowerBuilder y Sql Server

Interfaz de usuario de procesamiento de datos de asignatura:


w_asignatura
El formulario w_asignatura para la captura de datos de las asignaturas se muestra en la
imagen siguiente:

Botones de
comandos cb

Cuadros de edicin
sle

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

Ing. Oswaldo Navarrete E.

Pgina 47

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 48

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 49

Programacion en PowerBuilder y Sql Server


select
dcodcu,dnomcu,anio,codfac,facultad,dcodeap,escuela,semes,nroasi,nhorast,nhorasp,nhorass,nhorasl,nho
ras,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,nh
oras,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

Ing. Oswaldo Navarrete E.

Pgina 50

Programacion en PowerBuilder y Sql Server


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_1
2.text,nhorasl=:sle_13.text,nhoras=:sle_14.text,creditos=:sle_15.text,prereq=:sle_16.text,nparciales=:sle_1
7.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)

Ing. Oswaldo Navarrete E.

Pgina 51

Programacion en PowerBuilder y Sql Server


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 informacin 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
edicin sle

Ing. Oswaldo Navarrete E.

Pgina 52

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 53

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 54

Programacion en PowerBuilder y Sql Server


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),rtri
m(:sle_7.text),rtrim(:sle_8.text),rtrim(:sle_9.text),rtrim(:sle_10.text),rtrim(:sle_11.text),rtrim(:sle_12.text),rtri
m(: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=""

Ing. Oswaldo Navarrete E.

Pgina 55

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 56

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 57

Programacion en PowerBuilder y Sql Server


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

dw_1
dw_cargalec

dw_2
dw_docentes

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 edicin CODIGO: sle_1
Evento modified
sle_2.text=""
sle_3.text=""

Ing. Oswaldo Navarrete E.

Pgina 58

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 59

Programacion en PowerBuilder y Sql Server


cb_7.enabled=True
cb_8.enabled=True
cb_9.enabled=True
End If
Cuadro de edicin 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

Ing. Oswaldo Navarrete E.

Pgina 60

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 61

Programacion en PowerBuilder y Sql Server


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

Ing. Oswaldo Navarrete E.

Pgina 62

Programacion en PowerBuilder y Sql Server


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_consuasig1


Data windows control: dw_1
Datawindows objeto: dw_asignaturas

Ing. Oswaldo Navarrete E.

Pgina 63

Programacion en PowerBuilder y Sql Server

El datawindoeos objeto dw_asignaturas muestra las asignaturas 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 edicinsealados
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
--------------------------------------------------------------------------------------------------------------------------------------------

Ing. Oswaldo Navarrete E.

Pgina 64

Programacion en PowerBuilder y Sql Server


FORMULARIO DE PROCESAMIENTO DE DATOS DE MATRICULA
El formulario w_matricula presenta 10 botones de comandos cb, 9 cuadros de edicin sle para el
procesamientos de datos del alumno, 10 cuadros de edicin sle para la captura de datos de matricula, 10
cuadros de edicin 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 edicin N MATRICULA: sle_28


Evento modified
sle_1.enabled=True
st_33.visible=TRUE

Ing. Oswaldo Navarrete E.

Pgina 65

Programacion en PowerBuilder y Sql Server


sle_1.setfocus()

Cuadro de edicin 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 ao
ao=year(today())
date fecha
fecha=today()
String vp
if integer(mid(string(fecha),4,2))<7 then
vp=string(ao)+'1'
else
vp=string(ao)+'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()

Ing. Oswaldo Navarrete E.

Pgina 66

Programacion en PowerBuilder y Sql Server


End if
End If

Cuadro de edicin 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 edicin 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

Ing. Oswaldo Navarrete E.

Pgina 67

Programacion en PowerBuilder y Sql Server

Cuadro de edicin 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 edicin 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 edicin : 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 edicin : 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

Ing. Oswaldo Navarrete E.

Pgina 68

Programacion en PowerBuilder y Sql Server

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

Ing. Oswaldo Navarrete E.

Pgina 69

Programacion en PowerBuilder y Sql Server


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)

Ing. Oswaldo Navarrete E.

Pgina 70

Programacion en PowerBuilder y Sql Server


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,semester codigo de la escuela, etc.

Ing. Oswaldo Navarrete E.

Pgina 71

Programacion en PowerBuilder y Sql Server


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 PARCIAL


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 edicin

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)

Ing. Oswaldo Navarrete E.

Pgina 72

Programacion en PowerBuilder y Sql Server


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 numrica del caso, ya que si estas columnas registraran
el valor 0 no permiten digitar las notas

Estructura del dw_notas1


Secuencia numrica de las columnas

Ing. Oswaldo Navarrete E.

Pgina 73

Programacion en PowerBuilder y Sql Server


FORMULARIO DE PROCESAMIENTO DE NOTAS DEL SEGUNDO PARCIAL
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 edicin

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)

Ing. Oswaldo Navarrete E.

Pgina 74

Programacion en PowerBuilder y Sql Server

Estructura del datawindows objeto dw_notas2


numeracin 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
dnomalu
sexo
fecnac
distr
prov
dep
le
direcc
colpro
colubi
tele
anioing

nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar

Ing. Oswaldo Navarrete E.

(8)
(40)
(1)
(10)
(20)
(20)
(20)
(8)
(20)
(20)
(20)
(6)
(4)

Pgina 75

Programacion en PowerBuilder y Sql Server


dcodeap
eap
perion

nvarchar
nvarchar
nvarchar

(2)
(40)
(6)

- dbo.asignat
dcodcu
dnomcu
anio
codfac
facultd
dcodeap
escuela
semes
nroasi
nhorast
nhorasp
nhorass
nhorasl
nhoras
crditos
prereq
nparciales
formac
marca

nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
int
int
int
int
int
int
int
nvarchar
int
nvarchar
nvarchar

(6)
(45)
(4)
(2)
(50)
(2)
(50)
(2)

(50)
(50)
(1)

- dbo.docentes
coddoc
nomdoc
dirdoc
fecnac
le
tele
sexo
titulo
especial
feching
cargo
jornalab
condi
nivmag
perion

nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar

(3)
(40)
(40)
(10)
(8)
(6)
(1)
(30)
(25)
(10)
(30)
(3)
(1)
(3)
(5)

- dbo.cargalec
coddoc
nomdoc
perion
ccurso
ncurso
turno
nhoras
crditos
aula

nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
int
int
nvarchar

(3)
(40)
(5)
(6)
(60)
(1)

(1)

- dbo.matricul
nummat
dcodalu
dnomalu

nvarchar
nvarchar
nvarchar

Ing. Oswaldo Navarrete E.

(10)
(8)
(40)

Pgina 76

Programacion en PowerBuilder y Sql Server


perion
semes
dcodeap
escuela
turno
condi
numrec
valor
fecrec
aula
grupo
fecmat

nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
numeric
nvarchar
nvarchar
nvarchar
nvarchar

(5)
(2)
(2)
(40)
(1)
(1)
(13)
(14,2)
(10)
(1)
(1)
(10)

- dbo.notas
nummat
dcodalu
dnomalu
dcodcu
dnomcur
cargorep
semes
turno
condi
coddoc
nomdoc
nhorast
nhorasp
nhorass
nhorasl
nhoras
crditos
prereq
grupo
aula
perasig
ordist
orden
sexo
retirado
sitfinr
parc1
parc1r
parc1s
parc1rs
parc2
parc2r
parc2
parc2rs
pract1
pract2
pract3
pract4
pract5
pract6
pract7
pract8
evap1
evap2
evap3
evap4

nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
numeric
numeric
numeric
numeric
numeric
numeric
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint

Ing. Oswaldo Navarrete E.

(8)
(8)
(40)
(6)
(45)
(1)
(2)
(1)
(1)
(3)
(40)
(14,2)
(14,2)
(14,2)
(14,2)
(14,2)
(14,2)
(10)
(1)
(1)
(11)
(40)
(3)
(1)
(1)
(3)

Pgina 77

Programacion en PowerBuilder y Sql Server


evap5
evap6
evap7
evap8
lab1
lab2
lab3
lab4
lab5
lab6
lab7
lab8
peso
puntaje
promparc
evap
promlab
dpromd
perion
dcodeap
aplaz
nropract
nroevap
nrolab

smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
smallint
nvarchar
nvarchar
nvarchar
smallint
smallint
smallint

(5)
(2)
(1)

dbo.Sistema

cod_usuario
usuario
clave

char
char
char

10
20
10

REFERENCIAS BIBLIOGRAFICAS
https://rapidshare.com/#!download|895l36|3906492521|tutorial-pwbasico.pdf|2269|R~EC0E3D59AD5806E93EACC8D518C98E84|0|0
http://www.lawebdelprogramador.com/cursos/Power_Builder/396Guia_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: one21409746@hotmail.com

Ing. Oswaldo Navarrete E.

Pgina 78

También podría gustarte