Autor Tema: crear formulario de inicio de sesion (Login)?  (Leído 4265 veces)

0 Usuarios y 1 Visitante están viendo este tema.

florazulceleste

  • Bytes
  • *
  • Mensajes: 29
  • Reputación: +1/-0
  • si la vida no te sonrie... hazle consquillas!!
    • Ver Perfil
    • Mantenimiento de Computadoras
crear formulario de inicio de sesion (Login)?
« en: Agosto 28, 2011, 04:49:53 am »
Hola! estoy haciendo un proyecto en VB 6.0 en el cual debe de tener un formulario para iniciar sesion y asi poder ingresar al MDIForm, segun la informacion que eh encontrado, e notado que se refieren mucho a lo que es un "Sub Main", pero el form que realizo no tiene nada que ver con ello, asi que tambien me gustaria saber si TIENE QUE ser asi.
uso el codigo que posteo a continuacion:
Código: [Seleccionar]
Dim base As New Connection
Dim rs As New ADODB.Recordset

Public Function sqlUsuario(us As String, cont As String)
sqlUsuario = "select Usuario, Contrasena from Usuario where (Usuario = '" & _
us & "' and Contrasena = '" & cont & "')"
End Function

Private Sub cmdentrar_Click()
If txtusuario <> "" Then
   If txtcontrasena <> "" Then
      BD.BeginTrans
      BD.Execute sqlUsuario(txtusuario, txtcontrasena), adCmdText
      BD.CommitTrans
      With rs
           .MoveFirst
           Do While Not .EOF
              If !Usuario = txtusuario And !Contrasena = txtcontrasena Then
                 MDIFormST.Show
                 frmIniciarSesion.Hide
                 MsgBox ("Bienvenido (a) " & txtusuario & "")
              Else
              MsgBox ("Datos Incorrectos")
                    txtusuario.SetFocus
              End If
              .MoveNext
           Loop
      End With
   Else: MsgBox ("Introduzca su Contraseña")
         txtcontrasena.SetFocus
   End If
Else: MsgBox ("Introsuzca su Nombre de Usuario")
      txtusuario.SetFocus
End If
End Sub

Private Sub conex()
conexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\LO MIO\Transito\BDTransito.accdb;Persist Security Info=False"
Set BD = New ADODB.Connection
BD.Open conexion
End Sub

Private Sub Form_Load()
conex
rs.Open sqlUsuario(txtusuario, txtcontrasena), BD, 2, 3
End Sub

pero no me funciona, ya que el primer error que da es: "Error 3021: el valor de BOF y EOF es true la ....... operacion solicitada requiere un registro actual" :'(
 
Código: [Seleccionar]
.MoveFirstasi que El asunto principal es que no se realmente cual es el codigo para poder realizar este formulario, me dan un ejemplo de como llevarlo a cabo???

GRACIAS, por tomarse el tiempo de responder!! ;D
...vive como si fueras a morir mañana:
   aprende como si fueras a vivir para siempre...

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:crear formulario de inicio de sesion (Login)?
« Respuesta #1 en: Agosto 28, 2011, 05:50:35 am »
Todo proyecto tiene Sub Main, que quieras arrancar con el es otra cosa. Fijate en el Menu \ Proyecto \ Propiedades de tu proyecto \Objeto Inicial y alli veras el subMain.

Porque haces?
Código: [Seleccionar]
BD.BeginTrans
BD.Execute sqlUsuario(txtusuario, txtcontrasena), adCmdText
BD.CommitTrans

No es necesario que hagas eso sino vas a mover registros. Cambialo por:
rs.Open sqlUsuario(txtusuario, txtcontrasena), dB, 1, 1

¿Porque recorres el recordset?
Basta con que hagas:
Código: [Seleccionar]
If rs!Usuario = txtusuario And rs!Contrasena = txtcontrasena Then 'aunque si ya te dio registro tampoco es necesario pq ya lo filtraste en el Select
    MDIFormST.Show
    Unload frmIniciarSesion   'matalo, para que lo mantiene en memoria con frmIniciarSesion.Hide
    MsgBox ("Bienvenido (a) " & txtusuario & "")
Else
    MsgBox ("Datos Incorrectos")
    txtusuario.SetFocus
End If


Y porque pones en el Load del formulario
rs.Open sqlUsuario(txtusuario, txtcontrasena), BD, 2, 3

Si al hacer Load aun no has dado tiempo al usuario de escribir en txtUsuario y txtContrasema, eso esta demas.

Conclusión: modifica tu comando cmdEntrar

Código: [Seleccionar]
Private Sub cmdentrar_Click()
If txtusuario <> "" Then
   If txtcontrasena <> "" Then
      rs.Open sqlUsuario(txtusuario, txtcontrasena), dB, 1, 1 '<-- aqui ya compruebas si existe
      if rs.RecordCount > 0 then
         MDIFormST.Caption = "Hola " & rs!Usuario   'Si usas el nombre del usuario mejor pinta su nombre
         MDIFormST.Show
         Unload frmIniciarSesion
         MsgBox ("Bienvenido (a) " & txtusuario)  '<--- no es necesario  que pongas al final & ""
      Else
         MsgBox ("Datos Incorrectos")
         txtusuario.SetFocus
      End If
   Else: MsgBox ("Introduzca su Contraseña")
      txtcontrasena.SetFocus
   End If
Else: MsgBox ("Introsuzca su Nombre de Usuario")
   txtusuario.SetFocus
End If
End Sub


Saludos
Me encuentras en YAcosta.com

florazulceleste

  • Bytes
  • *
  • Mensajes: 29
  • Reputación: +1/-0
  • si la vida no te sonrie... hazle consquillas!!
    • Ver Perfil
    • Mantenimiento de Computadoras
Re:crear formulario de inicio de sesion (Login)?
« Respuesta #2 en: Agosto 29, 2011, 11:31:54 pm »
hice exactamente lo que escribiste y funciona PERFECTO.
                                                             
GRACIAS!
[/b]
 
;D ;D
...vive como si fueras a morir mañana:
   aprende como si fueras a vivir para siempre...