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 originalCREATE 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 originalImports 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 originalImports 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 originalImports 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 originalImports 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 originalImports 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