martes, 8 de noviembre de 2011

Login simple de usuarios con Power Builder

Bueno es este pequeño material les mostrare como conectarnos a una base de datos con distintos usuarios a la base de datos en nuestro caso usaremos power builder version 11.5 y base de datos postgres 9.
El material consiste en crear una pequeña ventana de usuario y contraseña y verificar que esos datos correspondan con el usuario creado en la BD y para entender el material necesitaras un previo conocimiento básico de power builder.
Lo primero que necesitamos es crear una base de datos en postgres suponiendo que ya tenemos creado la BD y despues necesitaremos agregar el ODBC de postgres puedes mirar en este post como agregar ODBC.

1er Paso: Necesitamos primeramente crear un nuevo workspace de power builder en nuestro caso llamaremos ws_login notemos la nomenclatura ws_ que se refiere a workspace es importante utilizar nombres estandares en nuestro proyecto bueno una vez creado nuestro espacio de trabajo necesitaremos crear nuestro tipo de objetivo nosotros usaremos solamente application definimos un nombre para nuestra aplicacion y lo llamaremos login y automaticamente ya nos crear una libreria con ese nombre el cual dejaremos asi y ahi ya tenemos nuestra librearia login.pbl y ya podemos crear los objetos que necesitamos en ella.

2do Paso: Ahora que ya tenemos nuestra librería como nuestro objetivo es hacer una ventana de login a una base de datos y una vez conectados abrir una ventana principal pues bien comencemos creando el PB Object (Window) lo creamos y guardamos como w_login (w_ refiriendoc a window) y necesitaremos crear 6 controles de PB 2 textos 2 cajas de texto y 2 botones.
El 1er texto podiamos llamarlo como Usuario: de seguido por la 1ra caja de texto el cual usaremos el single line edit lo llamaremos sle_usuario luego podemos poner debajo el 2do texto como Contraseña y la 2da caja de texto llamarlo como sle_pass pero como es una contraseña y este control en una de sus propiedades PB nos ofrece la opcion de tildar como password para ocultar los caracteres que escribamos dentro de ella bueno tildamos la propiedad password a true, debajo ponemos los botones usaremos el control command button al 1ro llamaremos cb_login al otro cb_cancelar.

3er Paso: Ahora que ya diseñamos nuestra ventana metámonos manos al código como es un simple login no necesitaremos poner ningún control en las cajas de textos cuando modifique o entre en el foco pero podríamos poner por ejemplo en sle_usuario en el evento modified! que al modificar el texto y dar enter que pase el foco(cursor) al campo sle_pass para ello usaremos la función de PB setfocus() que nos sirve para posicionar el cursor en algún control dentro de nuestra ventana y solo necesitamos poner en el evento modified! de sle_usuario la sentencia sle_pass.setfocus() así de fácil el nombre del control (.) nombre función o atributo = valor.

Ahora programaremos en el boton cb_login las sentencias necesarias para conectarnos y validar los datos lo primero que necesitamos es obtener los valores introducidos en los campos sle_usuario y sle_pass pues nos vamos al evento clicked! de cb_login ya que lo que nosotros queremos es que al dar click en el boton procese e intente conectarse con la BD abirmos el evento y necesitaremos 2 variables para almacenar los valores de los campos lo llamaremos vusuario y vpass los dos de tipo string
string vusuario, vpass


luego una vez creados las variables capturamos los valores en ellas

vusuario = sle_usuario.text
vpass = sle_pass.text

como veran usamos la propiedad .text de los campos el cual es la propiedad que contiene los caracteres escritos dentro de la caja si escribimos en sle_usuario robert en nuestra variable vusuario nos devolvera robert.

Para prevenir espacios vacios podemos usar la funcion trim() de PB el cual elimina espacios vacios innecesarios de una cadena y nuestra nueva linea quedaria asi:
vusuario = trim(sle_usuario.text)
vpass = trim(sle_pass.text)


Bueno ahora que ya tenemos almacenado nuestros valores en nuestras variables ya es ora de tratar de conectarnos a nuestra base de datos y el cual lo haremos con la sentencia básica que nos provee PB para conectarnos:
SQLCA.DBMS = "ODBC"
SQLCA.LogId = vusuario
SQLCA.LogPass = vpass
SQLCA.AutoCommit = false
SQLCA.DbParm = "ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT',ConnectString='DSN=login;UID="+vusuario+";PWD="+vpass+"'"
connect using sqlca;

Explicando un poco sqlca es el nombre que usaremos para nuestra transacción en las conecciones, DBMS indicamos que nos conectaremos por ODBC, LogId nombre de usuario, LogPass contraseña, AutoCommit ponemos a false para el caso que tengamos varias transacciones al mismo tiempo y en el caso que si uno de ellos da error para que el resto no guarde los cambios, DbParm indicamos los parametros de coneccion: ConnectOption=(SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT) esto es para que no pregunte para elegir el ODBC a la hora de conectarnos. ConnectString = (DSN) el nombre de nuestro ODBC (UID) nombre de usuario (PWD) contraseña y finalmente tratamos de conectarnos mediante la sentencia connect using sqlca el cual establece la coneccion a la base de datos.
Y para comprobar si no hubo ningun error al tratar de conectarnos y mostrar el mensaje de erro si hubiece usaremos dos palabras reservadas de PB:
IF sqlca.sqlcode <> 0 then
  messagebox('Error', sqlca.sqlerrtext)
ELSE
  messagebox('Ok', 'Muy bien te has conectado con el usuario: ' + vusuario)
END IF

sqlcode nos devuelve el codigo del resultado de la transaccion nos devuelve 0 en caso de exito y sqlerrtext nos muestra el mensaje de error alojado por la base de datos.

No hay comentarios.:

Publicar un comentario