Aqui esta el código
I.- CAPA ACCESODATOS
1.1 CLASE UsuarioAD
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 "Rutina para el acceso" Public Function login(ByVal ObjUsuarioEN As UsuarioEN) 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=ObjUsuarioEN.logacceso _logacceso.Direction=ParameterDirection.Input comando.Parameters.Add(_logacceso) Dim _clave As New NpgsqlParameter("_clave",NpgsqlTypes.NpgsqlDbType.Varchar) _clave.Value=ObjUsuarioEN.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() End If Return nombres 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.- 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 Public iduser=ObjUsuarioAD.iduser 'esto lo agregue recientemente Public nombres=ObjUsuarioAD.nombres 'esto lo agregue recientemente #Region "Establecer conexión para listado" Public Function listado() As List(Of UsuarioEN) return ObjUsuarioAD.listado End Function #End Region #Region "Establecer conexion con la función login" Public Function login(ByVal ObjUsuarioEN As UsuarioEN) as String 'As List(Of UsuarioEN) Return ObjUsuarioAD.login(ObjUsuarioEN) End Function #End Region End Class
IV.-CAPA PRESENTACION
41.- Formulario login
Código vb:
Ver original
Imports System.Data Imports EntidadNegocio Imports LogicaNegocio imports System.Windows.Forms Public Partial Class login Public shared iduser as String 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 OK" Sub BtnOKClick(sender As Object, e As EventArgs) ObjUsuarioEN=New UsuarioEN ObjUsuarioLN=New UsuarioLN If((txtUSER_NAME.Text<>"") And (txtPASSWORD.Text<>""))Then ObjUsuarioEN.logacceso=Ltrim(Rtrim(txtUSER_NAME.Text)) ObjUsuarioEN.clave=Ltrim(Rtrim(txtPASSWORD.Text)) If(ObjUsuarioLN.login(ObjUsuarioEN)<>"")Then nombres=ObjUsuarioLN.nombres iduser=ObjUsuarioLN.iduser label1.Text=nombres label2.Text=iduser menuprincipal.Show() ' me.Hide() Else txtUSER_NAME.Focus End If Else MessageBox.Show("Ingrese datos","Mensaje") txtUSER_NAME.Focus End If End Sub #End Region Sub LoginLoad(sender As Object, e As EventArgs) End Sub End Class
4.2.-Formulario menuprincipal
Código vb:
Ver original
Public Partial Class menuprincipal Public nombres as String Public Sub New() ' The Me.InitializeComponent call is required for Windows Forms designer support. nombres=login.nombres 'esto lo agregue Me.InitializeComponent() ' ' TODO : Add constructor code after InitializeComponents ' End Sub 'En el evento load no me muestra el valor de la variable Sub MenuprincipalLoad(sender As Object, e As EventArgs) label1.Text=login.nombres End Sub
Como veran tengo las variables:iduser,nombres,UserLogin y estas son las variables que quiero obtener su valor en la capa PRESENTACION del Formulario menuprincipal; al gregar otro if en el formulario login debajo de esta línea de código:
Código vb:
por ejemplo hago:Ver original
If(ObjUsuarioLN.login(ObjUsuarioEN)<>"")Then
Código vb:
Ver original
. . . If(ObjUsuarioLN.login(ObjUsuarioEN)<>"")Then nombres=ObjUsuarioLN.nombres iduser=ObjUsuarioLN.iduser If(iduser<>"" and nombres<>"")Then label1.Text=nombres label2.Text=iduser menuprincipal.Show() ' me.Hide() End If Else txtUSER_NAME.Focus End If . . .
Tengo que dar 2 veces click en el boton Ok para que pueda ingresar y ahi si que me muestra el valor pero se que no debe de ser así por que debería de ser que al primer click me mande al menuprincipal y que se muestre el valor de la variable
Si me pueden indicar como lo podría hacer.
Y lo de usar showdialog no creo por que el formulario login quedaría activo y solo lo quiero poner en hide