Login simple de usuarios con PowerBuilder

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 después 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 estándares 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 aplicación y lo llamaremos login y automáticamente ya nos crear una librería con ese nombre el cual dejaremos asi y ahí ya tenemos nuestra librearía 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_ refiriendo a window) y necesitaremos crear 6 controles de PB 2 textos 2 cajas de texto y 2 botones.
El 1er texto podíamos 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 clic en el botón procese e intente conectarse con la BD abrimos 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 verán 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 devolverá robert.

Para prevenir espacios vacíos podemos usar la funcion trim() de PB el cual elimina espacios vacíos innecesarios de una cadena y nuestra nueva línea quedaría 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 conexiones, 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 parámetros de conexión: 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 conexión a la base de datos.
Y para comprobar si no hubo ningún error al tratar de conectarnos y mostrar el mensaje de erro si hubiese 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 código del resultado de la transacción nos devuelve 0 en caso de éxito y sqlerrtext nos muestra el mensaje de error alojado por la base de datos.

Comentarios

Entradas más populares de este blog

Obtener el anterior y siguiente registro de una tabla MySQL con PHP