Hola amigos nuevamente aqui con un problema:
Estoy haciendo un modulo de control de acceso(usuario y clave)
ya cree el procedimiento o la función y quedo así:
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION user_acceso(_logacceso CHARACTER,_clave CHARACTER)
RETURNS SETOF "public"."usuario" AS
$BODY$
DECLARE
_select usuario;
_user CHARACTER(15);
_clav CHARACTER(32);
BEGIN
SELECT INTO _user logacceso FROM usuario WHERE logacceso=_logacceso;
SELECT INTO _clav clave FROM usuario WHERE clave=_clave AND logacceso=_logacceso;
IF _user = _logacceso THEN
IF _clav = _clave THEN
FOR _select IN SELECT * FROM usuario WHERE logacceso=_logacceso AND clave=_clave
loop
RETURN NEXT _select;
END loop;
ELSE
RAISE EXCEPTION 'Clave incorrecta';
RETURN;
ROLLBACK;
END IF;
ELSE
RAISE EXCEPTION 'Usuario %',_logacceso||' no está registrado';-- || para concatenar
RETURN;
ROLLBACK;
END IF;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Ahora esto lo estoy trabajando en 3 capas que son:
I.-CAPA ACCESODATOS
1.1.- CLASE:CategoriaAD
Código vb:
Ver originalImports Npgsql
Imports NpgsqlTypes
imports EntidadNegocio
Public Class UsuarioAD
Public shared iduser as Integer
Public Shared nombres As String
Public Shared UserLogin As String
Public Shared Acceso As Boolean
Private conn As New NpgsqlConnection
Private comando As New NpgsqlCommand
#Region "Cadena de conexion"
Public Sub New()
Dim Objconexion As New conexion
conn = Objconexion.abrir
comando.Connection=conn
End Sub
#End Region
#Region "Función para el acceso"
Public Function login(ByVal logacceso As String,Byval clave as String)'As List(Of UsuarioEN)
Dim listuser As New List(Of UsuarioEN)
Dim reader As NpgsqlDataReader
Try
conn.Close()
conn.Open()
comando.CommandType=CommandType.StoredProcedure
comando.CommandText="user_acceso"
Dim _logacceso As New NpgsqlParameter("_logacceso",NpgsqlTypes.NpgsqlDbType.Varchar)
_logacceso.Value=logacceso
_logacceso.Direction=ParameterDirection.Input
comando.Parameters.Add(_logacceso)
Dim _clave As New NpgsqlParameter("_clave",NpgsqlTypes.NpgsqlDbType.Varchar)
_clave.Value=clave
_clave.Direction=ParameterDirection.Input
comando.Parameters.Add(_clave)
reader=comando.ExecuteReader
If(reader.Read)Then
iduser=reader("idusuario").ToString()
nombres=reader("nom_ape").ToString()
UserLogin = reader("logacceso").ToString()
Else
exit function
End If
Catch ex as Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
Finally
conn.Close()
conn.ClearAllPools
End Try
End Function
#End Region
End Class
II.- CAPA ENTIDADNEGOCIO
2.1.- CLASE: UsuarioEN
Código vb:
Ver originalPublic Class UsuarioEN
Private gidusuario As Integer
Private gnom_ape As String
Private glogacceso As String
Private gclave As String
Private gtelef As String
Private gcorreo As String
'--------------------------
Public Property idusuario() as Integer
Get
Return gidusuario
End Get
Set(ByVal value as Integer)
gidusuario=value
End Set
End Property
'--------------------------
Public Property nom_ape() as String
Get
return gnom_ape
End Get
Set(ByVal value as String)
gnom_ape=value
End Set
End Property
'--------------------------
Public Property logacceso() as String
Get
return glogacceso
End Get
Set(ByVal value as String)
glogacceso=value
End Set
End Property
'--------------------------
Public Property clave() as String
Get
return gclave
End Get
Set(ByVal value as String)
gclave=value
End Set
End Property
'--------------------------
Public Property telef() as String
Get
return gtelef
End Get
Set(ByVal value as String)
gtelef=value
End Set
End Property
'--------------------------
Public Property correo() as String
Get
return gcorreo
End Get
Set(ByVal value as String)
gcorreo=value
End Set
End Property
End Class
III.- CAPA LOGICANEGOCIO
3.1.- CLASE: UsuarioLN
Código vb:
Ver originalImports AccessoDatos
imports EntidadNegocio
Public Class UsuarioLN
Private ObjUsuarioAD As UsuarioAD
Public Sub New()
ObjUsuarioAD=New UsuarioAD
End Sub
#Region "Establecer conexion con la función login"
Public Function login(ByVal logacceso As String, ByVal clave As String) 'As List(Of UsuarioEN)
return ObjUsuarioAD.login(logacceso,clave)
End Function
#End Region
End Class
IV.- CAPA PRESENTACION
4.1.- FORM: login
Código vb:
Ver originalImports System.Data
Imports EntidadNegocio
imports LogicaNegocio
Public Partial Class login
Public shared iduser as Integer
Public Shared nombres As String
Public Shared UserLogin As String
Public Shared Acceso As Boolean
Private ObjUsuarioEN As UsuarioEN
Private ObjUsuarioLN As UsuarioLN
Public Sub New()
' The Me.InitializeComponent call is required for Windows Forms designer support.
Me.InitializeComponent()
'
' TODO : Add constructor code after InitializeComponents
'
End Sub
#Region "Evento click del boton aceptar"
Sub BtnOKClick(sender As Object, e As EventArgs)
ObjUsuarioEN=New UsuarioEN
ObjUsuarioLN=New UsuarioLN
' ObjUsuarioEN.logacceso=Ltrim(Rtrim(txtUSER_NAME.Text))
' ObjUsuarioEN.clave=Ltrim(Rtrim(txtPASSWORD.Text))
'ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text)))
If(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then
menuprincipal.show()
Else
txtUSER_NAME.Focus
End If
End Sub
#End Region
End Class
Y es esta parte la cual quiero condicionar para que si los datos son verdaderos me llame el menuprincipal y si no que se mantenga el pulsor en el txt
Código vb:
Ver originalIf(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then
menuprincipal.show()
Else
txtUSER_NAME.Focus
End If