elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema con LOGIN
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con LOGIN  (Leído 2,643 veces)
ka0s


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Problema con LOGIN
« en: 14 Septiembre 2009, 05:44 am »

Gente, acá molestando again :P.
Descubrí que tengo un ERROR con el login.
Lo que sucede es lo siguiente:
Si yo ingreso de usuario: ADMIN y password ADMIN apenas inicio el programa, loguea perfectamente. Si me equivoco y escribo por ejemplo ADMIN2 que no existe me colorea el textbox a ROJO avisando que nos equivocamos.

Pero que pasa, cuando ingresás nuevamente USUARIO: ADMIN, CONTRASEÑA: ADMIN ahí YA NO LO TOMA MÁS. Siempre indica que el usuario no existe...

Esto lo había arreglado usando RST.MOVEFIRST, pero me di cuenta que si la grilla (MSFlexGrid) que está en el siguiente formulario está vacía, GENERA ERROR.

"El valor de BOF O EOF ES TRUE, O EL ACTUAL REGISTRO SE ELIMINÓ, LA OPERACION SOLICITADA REQUIERE UN REGISTRO ACTUAL."

Les dejo el código del LOGIN.

Citar
Private Sub cmdlogin_Click()
'-------------LOGIN DE USUARIO-------------
'Busca en la tabla si existe el usuario.
RST.Find "Id ='" & Trim(txtusuario.Text) & "'"
'Si no existe
If RST.EOF Then
    txtusuario.BackColorSelect = &H8080FF
    txtusuario.SetFocus
Else
'Si existe, verifica los passwords y si es correcto nos lleva al formulario Principal
    If RST!Password = txtpassword.Text Then
        Unload frmlogin
        Load frmgym
        frmgym.Show
    Else
        'Sino, muestra mensaje de error
        txtpassword.BackColorSelect = &H8080FF
        txtpassword.SetFocus
    End If
End If
'Vuelve al principio, sino siempre sigue en EOF y nunca vuelve
'a la primera opcion y no loguea más...
RST.MoveFirst
End Sub

Desde ya muchas gracias!


En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Problema con LOGIN
« Respuesta #1 en: 14 Septiembre 2009, 06:42 am »

Hola, lo que pasa es que no deberias hacerlo asi como lo haces, lo ideal no seria crear un recordset, abrirlo haciendo "select * from usuarios" y recorrerlo con find y si no lo encuentra...etc. aca te paso un ejemplo de login que es re-facil, consulta la base de datos con un recodset que se usa solo para eso...por ejemplo te creas un recordset en ese form local llamado rsLogin total lo usas en ese form y despues no lo usas mas. aca te paso un ejemplo de login de esa forma:

Código
  1. Option Explicit
  2.  
  3. Private rsLogin As ADODB.Rcordset
  4.  
  5. Private Sub Form_Load()
  6.   Set rsLogin = New ADODB.Recordset
  7. End Sub
  8.  
  9. Private Sub cmdlogin_Click()
  10.   Call Login
  11. End Sub
  12.  
  13. Private Sub Login()
  14.    If txtusuario.Text = "" Then
  15.        MsgBox "Debe Ingresar un Usuario", 16
  16.        txtusuario.SetFocus
  17.        Exit Sub
  18.    End If
  19.    If txtpassword.Text = "" Then
  20.        MsgBox "Debe Ingresar un Password", 16
  21.        txtpassword.SetFocus
  22.        Exit Sub
  23.    End If
  24.    rsLogin.Open "SELECT login,password FROM usuarios WHERE login='" & txtusuario & "'", cn, adOpenKeyset, adLockOptimistic
  25.    If rsLogin.EOF Then
  26.        MsgBox "No Existe el Usuario Indicado", vbCritical
  27.        rsLogin.Close
  28.        Exit Sub
  29.    Else
  30.        If LCase(rsLogin("login")) = LCase(txtusuario) And LCase(rsLogin("password")) = LCase(txtpassword) Then
  31.            ' si entra aca es porque accedio correctamente
  32.        Else
  33.            MsgBox "La Password es incorrecta", vbCritical
  34.            rsLogin.Close
  35.            Exit Sub
  36.        End If
  37.    End If
  38.    rsLogin.Close
  39.    Unload Me
  40.    frmgym.Show
  41. End Sub

obviamente adapta los nombres de los campos a los que tengas en tu base de datos, pero eso debe funcionar bien...si queres despues ponele esos detalles de que si no escribio un usuario o password que ponga el color de los textbox en rojo como lo estas haciendo.

saludos.


En línea

ka0s


Desconectado Desconectado

Mensajes: 308


Ver Perfil
Re: Problema con LOGIN
« Respuesta #2 en: 14 Septiembre 2009, 20:00 pm »

Hola, lo que pasa es que no deberias hacerlo asi como lo haces, lo ideal no seria crear un recordset, abrirlo haciendo "select * from usuarios" y recorrerlo con find y si no lo encuentra...etc. aca te paso un ejemplo de login que es re-facil, consulta la base de datos con un recodset que se usa solo para eso...por ejemplo te creas un recordset en ese form local llamado rsLogin total lo usas en ese form y despues no lo usas mas. aca te paso un ejemplo de login de esa forma:

Código
  1. Option Explicit
  2.  
  3. Private rsLogin As ADODB.Rcordset
  4.  
  5. Private Sub Form_Load()
  6.   Set rsLogin = New ADODB.Recordset
  7. End Sub
  8.  
  9. Private Sub cmdlogin_Click()
  10.   Call Login
  11. End Sub
  12.  
  13. Private Sub Login()
  14.    If txtusuario.Text = "" Then
  15.        MsgBox "Debe Ingresar un Usuario", 16
  16.        txtusuario.SetFocus
  17.        Exit Sub
  18.    End If
  19.    If txtpassword.Text = "" Then
  20.        MsgBox "Debe Ingresar un Password", 16
  21.        txtpassword.SetFocus
  22.        Exit Sub
  23.    End If
  24.    rsLogin.Open "SELECT login,password FROM usuarios WHERE login='" & txtusuario & "'", cn, adOpenKeyset, adLockOptimistic
  25.    If rsLogin.EOF Then
  26.        MsgBox "No Existe el Usuario Indicado", vbCritical
  27.        rsLogin.Close
  28.        Exit Sub
  29.    Else
  30.        If LCase(rsLogin("login")) = LCase(txtusuario) And LCase(rsLogin("password")) = LCase(txtpassword) Then
  31.            ' si entra aca es porque accedio correctamente
  32.        Else
  33.            MsgBox "La Password es incorrecta", vbCritical
  34.            rsLogin.Close
  35.            Exit Sub
  36.        End If
  37.    End If
  38.    rsLogin.Close
  39.    Unload Me
  40.    frmgym.Show
  41. End Sub

obviamente adapta los nombres de los campos a los que tengas en tu base de datos, pero eso debe funcionar bien...si queres despues ponele esos detalles de que si no escribio un usuario o password que ponga el color de los textbox en rojo como lo estas haciendo.

saludos.


de 10 como siempre.

Muchas gracias Seba!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema login con vsftpd
Redes
fuenteRea 8 8,535 Último mensaje 20 Septiembre 2011, 21:12 pm
por sanreikaj
problema con fedora 17, no me aparece login
GNU/Linux
Belial & Grimoire 3 2,719 Último mensaje 10 Febrero 2013, 01:46 am
por alister
Problema con un login
PHP
Zhuikov 3 2,071 Último mensaje 30 Marzo 2013, 02:36 am
por antraXactive
Problema con el login (PostgreSQL+Apache+PHP5)
Desarrollo Web
ars1993 3 3,018 Último mensaje 23 Enero 2014, 14:08 pm
por ars1993
Problema re-login Ubuntu 12.04
GNU/Linux
W0LFeR 0 1,873 Último mensaje 3 Mayo 2014, 18:55 pm
por W0LFeR
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines