Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/07/2013, 09:55
Avatar de junior1920
junior1920
 
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 14 años
Puntos: 1
Información Control de Usuario 3 capas!!!!

Hola que tal amigos aqui de nuevo con otro pequeño problemita.
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
  1. CREATE PROCEDURE [dbo].[acceso_user]
  2.     @nusuario VARCHAR(35),
  3.     @nclave VARCHAR(32),
  4.     @nidtipou INT,
  5.     @nmsg AS VARCHAR(500) OUTPUT
  6. AS
  7. BEGIN
  8.     SET NOCOUNT ON;
  9.     BEGIN Tran ingreso_user
  10.     BEGIN Try
  11.         DECLARE @C AS INT
  12.             BEGIN
  13.                 SELECT @C=COUNT(u.iduser) FROM usuario u
  14.                 WHERE u.usuario=@nusuario AND u.clave=@nclave AND
  15.                 u.estado='True' AND idtipou=@nidtipou
  16.                 IF @C>0
  17.                     BEGIN
  18.                         SET @nmsg = 'Bienvenido al sistema '+' ' +@nusuario +'. '                      
  19.                     END
  20.                 IF @C=0 OR @C=NULL
  21.                     BEGIN
  22.                         SET @nmsg = 'No tienes acceso al sistema.'
  23.                     END
  24.             --BREAK
  25.             END
  26.         COMMIT TRAN ingreso_user
  27.     END try
  28.     BEGIN Catch
  29.         SET @nmsg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la línea ' + CONVERT(NVARCHAR(555), ERROR_LINE() ) + '.'
  30.         ROLLBACK TRAN ingreso_user
  31.     END Catch
  32. END

AHORA LAS CAPAS VB.NET 2008
CAPA ACCESO DATOS

CLASE CONEXIONAD

Código vb:
Ver original
  1. Imports System.Data.SqlClient
  2. imports System.Configuration
  3. Public Class ConexionAD
  4.     Private Conexion As String
  5.     Public Sub New()
  6.         Try
  7.             Conexion = ConfigurationManager.ConnectionStrings("CadenaConexion").ConnectionString.ToString()
  8.         Catch ex as Exception
  9.             MsgBox(ex.Message)
  10.         End Try
  11.     End Sub
  12.     Public Function abrir() as SqlConnection
  13.         'Dim cCon as SqlConnection =New SqlConnection(CadenaConexion)
  14.         'cCon="CadenaConexion="+ CadenaConexion + ""
  15.         'conexion=New SqlConnection(cCon)
  16.         dim cCon as New SqlConnection(conexion)
  17.         Try
  18.             cCon.Open()
  19.             Return cCon
  20.         Catch ex As Exception
  21.             MsgBox(ex.Message, MsgBoxStyle.Critical,ex.Source)
  22.         End Try
  23.     End Function

CLASE TIPOUSUARIOAD
Código vb:
Ver original
  1. 'Esto no lo agregue por motivos de que me pase del límite de caracteres

CLASE USUARIOAD
Código vb:
Ver original
  1. Imports System.Data.SqlClient
  2. Imports System.Data.SqlTypes
  3. Imports EntidadNegocio
  4. Public Class UsuarioAD
  5.     Private conn As New SqlConnection
  6.     Private comando As New SqlCommand
  7.     #Region "Cadena de conexion"
  8.     Public Sub New()
  9.         Dim Objconexion As New ConexionAD
  10.         conn = Objconexion.abrir
  11.         comando.Connection=conn
  12.     End Sub
  13.     #End Region
  14.     #Region "Función convertir datos"
  15.     Private Shared Function ConvertirDatosUsu(ByVal reader As IDataReader) As UsuarioEN
  16.          Dim user As New UsuarioEN
  17.          user.iduser = Convert.ToInt32(reader(0))
  18.          user.dni=LTrim(RTrim(Convert.ToString(reader(1))))
  19.          user.ape_nom=LTrim(RTrim(Convert.ToString(reader(2))))
  20.          user.usuario = LTrim(RTrim(Convert.ToString(reader(3))))
  21.          user.clave = LTrim(RTrim(Convert.ToString(reader(4))))
  22.          user.email = LTrim(RTrim(Convert.ToString(reader(5))))
  23.          user.telefono = LTrim(RTrim(Convert.ToString(reader(6))))
  24.          user.estado= LTrim(RTrim(Convert.ToString(reader(7))))
  25.          user.nombretipo= LTrim(RTrim(Convert.ToString(reader(8))))
  26.         Return user
  27.     End Function
  28.     #End Region
  29. #Region "Función acceso al sistema"
  30.     Public Function Acceso_Usuario(ByVal ObjUsuarioEN As UsuarioEN)
  31.         Try
  32.             comando.Parameters.Clear()
  33.             comando.CommandType = CommandType.StoredProcedure
  34.             comando.CommandText = "acceso_user"
  35.  
  36.             Dim _usuario As New SqlParameter("@nusuario", SqlDbType.VarChar, 35)
  37.             _usuario.Value = ObjUsuarioEN.usuario
  38.             _usuario.Direction = ParameterDirection.Input
  39.             comando.Parameters.Add(_usuario)
  40.  
  41.             Dim _clave As New SqlParameter("@nclave", SqlDbType.VarChar, 32)
  42.             _clave.Value = ObjUsuarioEN.clave
  43.             _clave.Direction = ParameterDirection.Input
  44.             comando.Parameters.Add(_clave)
  45.  
  46.             Dim _idtipou As New SqlParameter("@nidtipou", SqlDbType.Int)
  47.             _idtipou.Value = ObjUsuarioEN.idtipou
  48.             _idtipou.Direction = ParameterDirection.Input
  49.             comando.Parameters.Add(_idtipou)
  50.  
  51.             Dim _nmsg As New SqlParameter("@nmsg", SqlDbType.VarChar, 400)
  52.             _nmsg.Direction = ParameterDirection.Output
  53.             comando.Parameters.Add(_nmsg)
  54.             Dim nmensaje As String
  55.  
  56.             comando.ExecuteNonQuery()
  57.             nmensaje = Convert.ToString(_nmsg.Value)
  58.             MsgBox(nmensaje)
  59.             conn.ClearAllPools()
  60.         Catch ex As Exception
  61.             MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  62.         Finally
  63.             comando.Parameters.Clear()
  64.             conn.Close()
  65.             conn.ClearAllPools()
  66.             conn = Nothing
  67.         End Try
  68.     End Function
  69. #End Region
  70. End Class

CAPA ENTIDADNEGOCIO

CLASE TIPOUSUARIOEN
Código vb:
Ver original
  1. '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
  1. Imports AccesoDatos
  2. Imports EntidadNegocio
  3. Public Class TipoUsuarioLN
  4.     private ObjTipoUsuarioAD as TipoUsuarioAD
  5.     Public Sub New()
  6.         ObjTipoUsuarioAD= New TipoUsuarioAD
  7.     End Sub
  8.     #Region "Establecer conexión con la función listado"
  9.     Public Function listatipousu() As List(Of TipoUsuarioEN)
  10.         Return ObjTipoUsuarioAD.listatipousu()
  11.     End Function
  12.     #End Region
  13. End Class

CLASE USUARIOLN
Código vb:
Ver original
  1. Imports AccesoDatos
  2. Imports EntidadNegocio
  3. Public Class UsuarioLN
  4.     Private ObjUsuarioAD As UsuarioAD
  5.     Public Sub New()
  6.         ObjUsuarioAD= New UsuarioAD
  7.     End Sub
  8. #Region "Establecer conexion con la función Insertar_Usuario"
  9.     Public Function Acceso_Usuario(ByVal ObjUsuarioEN As UsuarioEN)
  10.         Return ObjUsuarioAD.Acceso_Usuario(ObjUsuarioEN)
  11.     End Function
  12. #End Region

3.- CAPA PRESENTACION

FORMULARIO LOGIN
Código vb:
Ver original
  1. Imports EntidadNegocio
  2. Imports LogicaNegocio
  3. Public Partial Class login
  4.     Public Sub New()
  5.         ' The Me.InitializeComponent call is required for Windows Forms designer support.
  6.         Me.InitializeComponent()
  7.         ' TODO : Add constructor code after InitializeComponents
  8.         '
  9.    End Sub
  10.     Public Shared UserLogin As String
  11.     Private Objuser As String
  12.     Private ObjUsuarioEN As UsuarioEN
  13.     Private ObjUsuarioLN As UsuarioLN
  14.     Private ObjTipoUsuarioEN As TipoUsuarioEN
  15.     Private ObjTipoUsuarioLN As TipoUsuarioLN
  16.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click
  17.         Me.Close()
  18.     End Sub
  19.     Private Sub BtnIngresar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIngresar.Click
  20.         Try
  21.             Dim valor As String = CStr(cboxTipoUser.SelectedValue)
  22.             If (txtlogin.Text = "") Then
  23.                 MsgBox("Ingrese el nombre de Usuario", MsgBoxStyle.Information, "Mensaje")
  24.                 txtlogin.Focus()
  25.                 Exit Sub
  26.             End If
  27.             If (txtclave.Text = "") Then
  28.                 MsgBox("Ingrese la clave para el Usuario", MsgBoxStyle.Information, "Mensaje")
  29.                 txtclave.Focus()
  30.                 Exit Sub
  31.             End If
  32.             If (cboxTipoUser.SelectedIndex.Equals(-1)) Then
  33.                 MsgBox("Por Seleccione el tipo de Usuario", MsgBoxStyle.Information, "Mensaje")
  34.                 cboxTipoUser.Focus()
  35.                 Exit Sub
  36.             End If
  37.  
  38.             ObjUsuarioEN = New UsuarioEN
  39.             ObjUsuarioLN = New UsuarioLN
  40.             ObjUsuarioEN.usuario = LTrim(RTrim(txtlogin.Text))
  41.             ObjUsuarioEN.clave = LTrim(RTrim(txtclave.Text))
  42.             ObjUsuarioEN.idtipou = LTrim(RTrim(valor))
  43.             ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN)
  44.             'PUSE ESTO PARA VER SI FUNCA PERO NO LO HACE
  45.            UserLogin = Convert.ToString(ObjUsuarioEN.usuario)
  46.             '
  47.            Objuser = ObjUsuarioLN.Acceso_Usuario(ObjUsuarioEN)
  48.             'AQUI EL PROBLEMA NO SE COMO VALIDAR
  49.            If (UserLogin = Objuser) Then
  50.                 MenuPrincipal.Show()
  51.                 Me.Hide()
  52.             End If
  53.         Catch ex As Exception
  54.             MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  55.         End Try
  56.     End Sub
  57. End Class