viernes, 24 de octubre de 2008

Validar Usuario y Contraseña De Una base de Datos Con Visual Basic.net 2005

hola a todos, bueno voy a mostrar como se hace la validacion de usuario y contraseña que han sido ingresados en un tabla de base de datos,en esta ocasion utilizando microsoft visua.net 2005.

Lo primero que tenemos que hacer es crear nuestra base de datos con nuestros usuarios y contraseñas
correspondientes para esto utilizare el mismo entorno de visual basic.net 2005 que nos da la opción de poder crear base de datos sql sin salir de ella:

Ingresamos a visual Basic.net 2005 y creamos un nuevo proyecto






Lo Llamaremos
ValidacionUsuarios y aceptamos.
Bueno ya creado nuestro proyecto nos dirigimos al menú
Proyecto/Agregar Nuevo Elemento












Elegimos La opción
Base De Datos en Blanco y Le ponemos el Nombre BDUSUARIOS y Aceptamos:


Nos aparece el
Asistente Para La Configuracion De Origenes De Datos, en esta ocacion le damos cancelas por que no tenemos ninguna tabla creada:



Si nos fijamos en el Explorador de Soluciones que la Base de Datos ya se agrego



bien ahora tenemos que crear las tablas donde ingresaremos los datos de los usuarios, para eso nos dirigimos al Menu Ver/Explorador de Servidores



Exploramos y en tablas le damos clic derecho y la opción
Agregar Nueva Tabla:



Diseñamos la tabla como muestra la siguiente imagen, no nos olvidemos de la
Clave Primaria solo con clic derecho podremos agregarlo.



Damos Clic en Guardar y le asignamos a la tabla el nombre
USUARIOS



De igual forma Creamos otra tabla para establecer los privilegios del usuario llamado
PRIVILEGIOS y tiene el siguiente diseño:



Para ver como funciona la validadion ingresamo los siguientes registros:

Tabla
PRIVILEGIOS


Tabla
USUARIOS


Para poder ingresar los registros solo tenemo que dar clic derecho en la tabla y elegir la opcion
Mostrar Datos de la Tabla



bien hasta aquí solo nos hemos dedicado a la creación de la Base de Datos, ahora vamos a comenzar crear nuestro formulario de ingreso, por defecto ya visual basic. net nos crea un formulario llamado form1, pasaremos a diseñarlo como muestra la imagen:



Cambiar la propiedad
name de los siguientes controles para un mejor manejo:

Formulario =
frmingreso
boton Ingresar =
btningresar
Boton Salir =
btnsalir
Textbox De Ingreso de Usuario =
txtusuario
Textbox de Ingreso de Password =
txtpassword

Al terminar crear otro formulario Mdi Con el Siguiente Diseño:



Si No Logras ver bien la imagen solo dele clic a la imagen para ampliarla

Bueno listo, voy a explicar como es la logica de este programa:
lo que va hacer es mediante el primer formulario consultar a la base de datos si el usuario y Password ingresados son correctos en la tabla USUARIOS, al tener una respuesta correcta se llamara el segundo formulario, tambien validara los privilegios del usuario, y bloqueara algunas opciones de la barra de menus segun su nivel:

Administrador= Mostrara todas las opciones de la barra de menus
Mienbro= pondra en enabled o desabilitado el menu Administrador
Invitado=desabilitara el menu Administrador y Mienbro

Y por ultimo mostrara en la barra de estado el nombre del usuario.

De caso contrario si no ingresa un usuario o password correcto solo tendra 3 opciones para poder intentar ingresar.

ok ahora vamos a la codificacion:

Primero declaramos a nivel de modulo las siguientes variables para ser reconocido por los dos formularios:

Module Module1
Public opcion As Integer = 1
Public nivel As String
Public usuariov As String
End Module

Damos Doble clic en el boton Ingresar y en la primera line digitar lo siguiente antes del public class:

Imports System.Data.SqlClient
Public Class frmingreso

' codigo del boton salir
Private Sub btnsalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsalir.Click
Application.Exit()
End Sub

'Codigo en el boton Ingresar
Private Sub btningresar_Click(ByVal sender As System.Object, ByVal e AsHandles btningresar.Click
'Declaracion de variables para la coneccion, dataadapter,dataset
Dim texto As String
Dim cn As New SqlConnection
Dim da As SqlDataAdapter
Dim ds As New DataSet
'Variables usuario y contraseña , se le asigna el valos de las cajas de texto,y la variable activo, para ver si el usuario esta activo o no
Dim usuario As String
Dim password As String
usuario = Me.txtusuario.Text
password = Me.txtpassword.Text
Dim activo As String
'declaramos la conección
cn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=DataDirectory \BDUSUARIOS.mdf;Integrated Security=True;User Instance=True"
'Try es para capturar los errores que puedan producirce la ejecucion del proceso
Try
'Crea el adaptador de datos, recuperando los datos de la tabla
texto = "SELECT * FROM USUARIOS WHERE usuario='" & usuario & "' and password='" & password & "'"
'Abrir la conección
cn.Open()
'ejecuto la consulta con el data adapter y lo guardo en la variable da
da = New SqlDataAdapter(texto, cn)
'Limpia el dataset
ds.Clear()
'Llena el Dataset con el data adapter
da.Fill(ds, "usuarios")
'Cuenta los registros del datatable si es igual a 0
If ds.Tables("usuarios").Rows.Count() = 0 Then
'Si no existe el usuario o contraseña verifica cuantas veces a intentado ingresar
If opcion = 3 Then
MessageBox.Show("A Perdido la Oportunidad de Ingresar", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Me.Close()
End If
MessageBox.Show("Usuario o Contraseña Incorrecta", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.txtusuario.Text = ""
Me.txtpassword.Text = ""
Me.txtusuario.Focus()
'Agrega uno mas a la opcion de ingresar
opcion += 1
Else
'ver si el usuario esta activo, busca datos en el datatable
activo = ds.Tables("usuarios").Rows(0)(4)
If activo <> 1 Then
MessageBox.Show("Usuario Inactivo", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
'pasa los valores del datatable, el usuario y nivel de usuario
nivel = ds.Tables("usuarios").Rows(0)(0)
usuariov = ds.Tables("usuarios").Rows(0)(2)
MessageBox.Show("Bienvenido al sistema", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information)
Dim f1 As New frmprincipal
Me.Hide()
f1.Show()
End If
End If
Catch ex As Exception
'captura si ocurre una error en la operación
MsgBox(ex.ToString)
End Try

End Sub
End Class

bien ya esta la entrada al sistema, ahora vamos a bloquear las opciones segun el nivel de usuario:

Public Class frmprincipal
Private Sub frmprincipal_FormClosing(ByVal sender As Object, ByVal e AsHandles Me.FormClosing
System.Windows.Forms.FormClosingEventArgs) 'al momento de cerrar la ventana cierra toda la aplicacion
Application.Exit()
End Sub

Private Sub frmprincipal_Load(ByVal sender As System.Object, ByVal e As Handles MyBase.Load
System.EventArgs) 'Pasa los datos de la variable usuariov a el label de la barra de estado
Me.ToolStripStatusLabel1.Text = "USUARIO---->" + usuariov

If nivel = 2 Then
'si es mienbro bloquear menu Administrador
AdministradorToolStripMenuItem.Enabled = False
ElseIf nivel = 3 Then
'si es invitado bloquear el menu Administrador y Mienbro
AdministradorToolStripMenuItem.Enabled = False
MienbroToolStripMenuItem.Enabled = False
Else
Exit Sub
End If
End Sub
End Class

ok con esto termino este blog , espero que les haya servido, mas adelante estare publicando nuevos manuales para ayudar los estudiantes el manejo de herraminetas de programacion.

para alguna duda o consulta = julio_06_20@hotmail.com

Loarte Huerto Julio