Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2012, 06:14
Avatar de junior1920
junior1920
 
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 14 años, 4 meses
Puntos: 1
Exclamación Problema con login vb.net!!!

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 original
  1. CREATE OR REPLACE FUNCTION user_acceso(_logacceso CHARACTER,_clave CHARACTER)
  2.   RETURNS SETOF "public"."usuario" AS
  3. $BODY$
  4. DECLARE
  5. _select usuario;
  6. _user CHARACTER(15);
  7. _clav CHARACTER(32);
  8. BEGIN
  9. SELECT INTO _user logacceso FROM usuario WHERE logacceso=_logacceso;
  10. SELECT INTO _clav clave FROM usuario WHERE clave=_clave AND logacceso=_logacceso;
  11. IF _user = _logacceso THEN
  12.  IF _clav = _clave THEN
  13.     FOR _select IN SELECT * FROM usuario WHERE logacceso=_logacceso AND clave=_clave
  14.     loop
  15.      RETURN NEXT _select;
  16.     END loop;
  17.  ELSE
  18.     RAISE EXCEPTION 'Clave incorrecta';
  19.     RETURN;
  20.     ROLLBACK;
  21.  END IF;
  22. ELSE
  23. RAISE EXCEPTION 'Usuario %',_logacceso||' no está registrado';-- || para concatenar
  24.  RETURN;
  25.  ROLLBACK;
  26. END IF;
  27. END;$BODY$
  28.   LANGUAGE plpgsql VOLATILE
  29.   COST 100;

Ahora esto lo estoy trabajando en 3 capas que son:
I.-CAPA ACCESODATOS
1.1.- CLASE:CategoriaAD

Código vb:
Ver original
  1. Imports Npgsql
  2. Imports NpgsqlTypes
  3. imports EntidadNegocio
  4. Public Class UsuarioAD
  5.     Public shared iduser as Integer
  6.     Public Shared nombres As String
  7.     Public Shared UserLogin As String
  8.     Public Shared Acceso As Boolean
  9.     Private conn As New NpgsqlConnection
  10.     Private comando As New NpgsqlCommand
  11.     #Region "Cadena de conexion"
  12.     Public Sub New()
  13.         Dim Objconexion As New conexion
  14.         conn = Objconexion.abrir
  15.         comando.Connection=conn
  16.     End Sub
  17.     #End Region
  18. #Region "Función para el acceso"
  19.     Public Function login(ByVal logacceso As String,Byval clave as String)'As List(Of UsuarioEN)
  20.         Dim listuser As New List(Of UsuarioEN)
  21.         Dim reader As NpgsqlDataReader
  22.         Try
  23.             conn.Close()
  24.             conn.Open()
  25.             comando.CommandType=CommandType.StoredProcedure
  26.             comando.CommandText="user_acceso"
  27.             Dim _logacceso As New NpgsqlParameter("_logacceso",NpgsqlTypes.NpgsqlDbType.Varchar)
  28.             _logacceso.Value=logacceso
  29.             _logacceso.Direction=ParameterDirection.Input
  30.             comando.Parameters.Add(_logacceso)
  31.             Dim _clave As New NpgsqlParameter("_clave",NpgsqlTypes.NpgsqlDbType.Varchar)
  32.             _clave.Value=clave
  33.             _clave.Direction=ParameterDirection.Input
  34.             comando.Parameters.Add(_clave)
  35.             reader=comando.ExecuteReader
  36.             If(reader.Read)Then
  37.             iduser=reader("idusuario").ToString()
  38.             nombres=reader("nom_ape").ToString()
  39.             UserLogin = reader("logacceso").ToString()
  40.             Else
  41.                 exit function
  42.             End If
  43.         Catch ex as Exception
  44.             MsgBox(ex.Message, MsgBoxStyle.Critical, ex.Source)
  45.         Finally
  46.             conn.Close()
  47.             conn.ClearAllPools
  48.         End Try
  49.     End Function
  50.     #End Region
  51. End Class

II.- CAPA ENTIDADNEGOCIO
2.1.- CLASE: UsuarioEN


Código vb:
Ver original
  1. Public Class UsuarioEN
  2.     Private gidusuario As Integer
  3.     Private gnom_ape As String
  4.     Private glogacceso As String
  5.     Private gclave As String
  6.     Private gtelef As String
  7.     Private gcorreo As String
  8.     '--------------------------
  9.     Public Property idusuario() as Integer
  10.         Get
  11.             Return gidusuario
  12.         End Get
  13.         Set(ByVal value as Integer)
  14.             gidusuario=value
  15.         End Set
  16.     End Property
  17.     '--------------------------
  18.     Public Property nom_ape() as String
  19.         Get
  20.             return gnom_ape
  21.         End Get
  22.         Set(ByVal value as String)
  23.             gnom_ape=value
  24.         End Set
  25.     End Property
  26.     '--------------------------
  27.     Public Property logacceso() as String
  28.         Get
  29.             return glogacceso
  30.         End Get
  31.         Set(ByVal value as String)
  32.             glogacceso=value
  33.         End Set
  34.     End Property
  35.     '--------------------------
  36.     Public Property clave() as String
  37.         Get
  38.             return gclave
  39.         End Get
  40.         Set(ByVal value as String)
  41.             gclave=value
  42.         End Set
  43.     End Property
  44.     '--------------------------
  45.     Public Property telef() as String
  46.         Get
  47.             return gtelef
  48.         End Get
  49.         Set(ByVal value as String)
  50.             gtelef=value
  51.         End Set
  52.     End Property
  53.     '--------------------------
  54.     Public Property correo() as String
  55.         Get
  56.             return gcorreo
  57.         End Get
  58.         Set(ByVal value as String)
  59.             gcorreo=value
  60.         End Set
  61.     End Property   
  62. End Class

III.- CAPA LOGICANEGOCIO
3.1.- CLASE: UsuarioLN


Código vb:
Ver original
  1. Imports AccessoDatos
  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 login"
  9.     Public Function login(ByVal logacceso As String, ByVal clave As String) 'As List(Of UsuarioEN)
  10.         return ObjUsuarioAD.login(logacceso,clave)
  11.     End Function
  12.     #End Region
  13.    
  14. End Class

IV.- CAPA PRESENTACION
4.1.- FORM: login


Código vb:
Ver original
  1. Imports System.Data
  2. Imports EntidadNegocio
  3. imports LogicaNegocio
  4. Public Partial Class login
  5.     Public shared iduser as Integer
  6.     Public Shared nombres As String
  7.     Public Shared UserLogin As String
  8.     Public Shared Acceso As Boolean
  9.     Private ObjUsuarioEN As UsuarioEN
  10.     Private ObjUsuarioLN As UsuarioLN
  11.     Public Sub New()
  12.         ' The Me.InitializeComponent call is required for Windows Forms designer support.
  13.         Me.InitializeComponent()
  14.        
  15.         '
  16.         ' TODO : Add constructor code after InitializeComponents
  17.         '
  18.  
  19.     End Sub
  20.     #Region "Evento click del boton aceptar"
  21.     Sub BtnOKClick(sender As Object, e As EventArgs)
  22.         ObjUsuarioEN=New UsuarioEN
  23.         ObjUsuarioLN=New UsuarioLN
  24. '       ObjUsuarioEN.logacceso=Ltrim(Rtrim(txtUSER_NAME.Text))
  25. '       ObjUsuarioEN.clave=Ltrim(Rtrim(txtPASSWORD.Text))
  26. 'ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text)))
  27.          If(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then
  28.                 menuprincipal.show()
  29. Else
  30.         txtUSER_NAME.Focus
  31. End If
  32. End Sub
  33. #End Region
  34. 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
  1. If(ObjUsuarioLN.login(Ltrim(Rtrim(txtUSER_NAME.Text)),Ltrim(Rtrim(txtPASSWORD.Text))))Then
  2.                 menuprincipal.show()
  3. Else
  4.         txtUSER_NAME.Focus
  5. End If