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 original
CREATE 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 original
Imports 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 original
Public 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 original
Imports 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 original
Imports 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 original
If(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then menuprincipal.show() Else txtUSER_NAME.Focus End If