Bueno lo que me falta es poder validar si un usuario esta registrado en la BD; luego que verifique que cargue el menuprincipal. Estoy desarrollando en vb.net2008 y sql2005
PROCEDIMIENTO ALMACENADO:
Código SQL:
Ver original
CREATE PROCEDURE [dbo].[acceso_user] @nusuario VARCHAR(35), @nclave VARCHAR(32), @nidtipou INT, @nmsg AS VARCHAR(500) OUTPUT AS BEGIN SET NOCOUNT ON; BEGIN Tran ingreso_user BEGIN Try DECLARE @C AS INT BEGIN SELECT @C=COUNT(u.iduser) FROM usuario u WHERE u.usuario=@nusuario AND u.clave=@nclave AND u.estado='True' AND idtipou=@nidtipou IF @C>0 BEGIN SET @nmsg = 'Bienvenido al sistema '+' ' +@nusuario +'. ' END IF @C=0 OR @C=NULL BEGIN SET @nmsg = 'No tienes acceso al sistema.' END --BREAK END COMMIT TRAN ingreso_user END try BEGIN Catch SET @nmsg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la línea ' + CONVERT(NVARCHAR(555), ERROR_LINE() ) + '.' ROLLBACK TRAN ingreso_user END Catch END
AHORA LAS CAPAS VB.NET 2008
CAPA ACCESO DATOS
CLASE CONEXIONAD
Código vb:
Ver original
Imports System.Data.SqlClient imports System.Configuration Public Class ConexionAD Private Conexion As String Public Sub New() Try Conexion = ConfigurationManager.ConnectionStrings("CadenaConexion").ConnectionString.ToString() Catch ex as Exception MsgBox(ex.Message) End Try End Sub Public Function abrir() as SqlConnection 'Dim cCon as SqlConnection =New SqlConnection(CadenaConexion) 'cCon="CadenaConexion="+ CadenaConexion + "" 'conexion=New SqlConnection(cCon) dim cCon as New SqlConnection(conexion) Try cCon.Open() Return cCon Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical,ex.Source) End Try End Function
CLASE TIPOUSUARIOAD
Código vb:
Ver original
'Esto no lo agregue por motivos de que me pase del límite de caracteres
CLASE USUARIOAD
Código vb:
Ver original
Imports System.Data.SqlClient Imports System.Data.SqlTypes Imports EntidadNegocio Public Class UsuarioAD Private conn As New SqlConnection Private comando As New SqlCommand #Region "Cadena de conexion" Public Sub New() Dim Objconexion As New ConexionAD conn = Objconexion.abrir comando.Connection=conn End Sub #End Region #Region "Función convertir datos" Private Shared Function ConvertirDatosUsu(ByVal reader As IDataReader) As UsuarioEN Dim user As New UsuarioEN user.iduser = Convert.ToInt32(reader(0)) user.dni=LTrim(RTrim(Convert.ToString(reader(1)))) user.ape_nom=LTrim(RTrim(Convert.ToString(reader(2)))) user.usuario = LTrim(RTrim(Convert.ToString(reader(3)))) user.clave = LTrim(RTrim(Convert.ToString(reader(4)))) user.email = LTrim(RTrim(Convert.ToString(reader(5)))) user.telefono = LTrim(RTrim(Convert.ToString(reader(6)))) user.estado= LTrim(RTrim(Convert.ToString(reader(7)))) user.nombretipo= LTrim(RTrim(Convert.ToString(reader(8)))) Return user End Function #End Region #Region "Función acceso al sistema" Public Function Acceso_Usuario(ByVal ObjUsuarioEN As UsuarioEN) Try comando.Parameters.Clear() comando.CommandType = CommandType.StoredProcedure comando.CommandText = "acceso_user" Dim _usuario As New SqlParameter("@nusuario", SqlDbType.VarChar, 35) _usuario.Value = ObjUsuarioEN.usuario _usuario.Direction = ParameterDirection.Input comando.Parameters.Add(_usuario) Dim _clave As New SqlParameter("@nclave", SqlDbType.VarChar, 32) _clave.Value = ObjUsuarioEN.clave _clave.Direction = ParameterDirection.Input comando.Parameters.Add(_clave) Dim _idtipou As New SqlParameter("@nidtipou", SqlDbType.Int) _idtipou.Value = ObjUsuarioEN.idtipou _idtipou.Direction = ParameterDirection.Input comando.Parameters.Add(_idtipou) Dim _nmsg As New SqlParameter("@nmsg", SqlDbType.VarChar, 400) _nmsg.Direction = ParameterDirection.Output comando.Parameters.Add(_nmsg) Dim nmensaje As String comando.ExecuteNonQuery() nmensaje = Convert.ToString(_nmsg.Value) MsgBox(nmensaje) conn.ClearAllPools() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source) Finally comando.Parameters.Clear() conn.Close() conn.ClearAllPools() conn = Nothing End Try End Function #End Region End Class
CAPA ENTIDADNEGOCIO
CLASE TIPOUSUARIOEN
Código vb:
Ver original
'Esto no lo agregue por motivos de que me pase del límite de caracteres
CLASE USUARIOEN
'Esto no lo agregue por motivos de que me pase del límite de caracteres
[/HIGHLIGHT]
2.-CAPA LOGICANEGOCIO
CLASE TIPOUSUARIOLN
Código vb:
Ver original
Imports AccesoDatos Imports EntidadNegocio Public Class TipoUsuarioLN private ObjTipoUsuarioAD as TipoUsuarioAD Public Sub New() ObjTipoUsuarioAD= New TipoUsuarioAD End Sub #Region "Establecer conexión con la función listado" Public Function listatipousu() As List(Of TipoUsuarioEN) Return ObjTipoUsuarioAD.listatipousu() End Function #End Region End Class
CLASE USUARIOLN
Código vb:
Ver original
Imports AccesoDatos Imports EntidadNegocio Public Class UsuarioLN Private ObjUsuarioAD As UsuarioAD Public Sub New() ObjUsuarioAD= New UsuarioAD End Sub #Region "Establecer conexion con la función Insertar_Usuario" Public Function Acceso_Usuario(ByVal ObjUsuarioEN As UsuarioEN) Return ObjUsuarioAD.Acceso_Usuario(ObjUsuarioEN) End Function #End Region
3.- CAPA PRESENTACION
FORMULARIO LOGIN
Código vb:
Ver original
Imports EntidadNegocio Imports LogicaNegocio Public Partial Class login Public Sub New() ' The Me.InitializeComponent call is required for Windows Forms designer support. Me.InitializeComponent() ' TODO : Add constructor code after InitializeComponents ' End Sub Public Shared UserLogin As String Private Objuser As String Private ObjUsuarioEN As UsuarioEN Private ObjUsuarioLN As UsuarioLN Private ObjTipoUsuarioEN As TipoUsuarioEN Private ObjTipoUsuarioLN As TipoUsuarioLN Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click Me.Close() End Sub Private Sub BtnIngresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIngresar.Click Try Dim valor As String = CStr(cboxTipoUser.SelectedValue) If (txtlogin.Text = "") Then MsgBox("Ingrese el nombre de Usuario", MsgBoxStyle.Information, "Mensaje") txtlogin.Focus() Exit Sub End If If (txtclave.Text = "") Then MsgBox("Ingrese la clave para el Usuario", MsgBoxStyle.Information, "Mensaje") txtclave.Focus() Exit Sub End If If (cboxTipoUser.SelectedIndex.Equals(-1)) Then MsgBox("Por Seleccione el tipo de Usuario", MsgBoxStyle.Information, "Mensaje") cboxTipoUser.Focus() Exit Sub End If ObjUsuarioEN = New UsuarioEN ObjUsuarioLN = New UsuarioLN ObjUsuarioEN.usuario = LTrim(RTrim(txtlogin.Text)) ObjUsuarioEN.clave = LTrim(RTrim(txtclave.Text)) ObjUsuarioEN.idtipou = LTrim(RTrim(valor)) ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN) 'PUSE ESTO PARA VER SI FUNCA PERO NO LO HACE UserLogin = Convert.ToString(ObjUsuarioEN.usuario) ' Objuser = ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN) 'AQUI EL PROBLEMA NO SE COMO VALIDAR If (UserLogin = Objuser) Then MenuPrincipal.Show() Me.Hide() End If Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source) End Try End Sub End Class