Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Gerar erro caso login ou senha incorretos


Matheus-vb6

Pergunta

Estou fazendo um sistema de login... porem só consegui gerar erro quando a senha estava errada!!

utilizei o seguinte código:

rsdados.Open "SELECT * FROM logins WHERE login='" & txtlogin.text & "'", cn
if rsdados("Senha") = txtsenha.text then
msgbox "login efetuado"
~~~codigos~~~
else
msgbox "Login ou senha incorretos!"
end if

Porem queria q ele verificasse se o login existe, já que no banco de dados ele esta como chave primaria...

exemplo... queria q ele verificasse se existe a conta ou se a conta ou senha estão incorretos!

---edit---

Fiz esse codigo mas mesmo com login certo ele da a mensagem de login errado...


Private Sub cmdEntrar_Click()
If txtLogin.Text = Empty And txtSenha.Text = Empty Then
MsgBox "Prencha os campos corretamente!", vbCritical, "Erro"
txtLogin.SetFocus
ElseIf txtLogin.Text = Empty Then
MsgBox "Prencha os campos corretamente!", vbCritical, "Erro"
txtLogin.SetFocus
ElseIf txtSenha.Text = Empty Then
MsgBox "Prencha os campos corretamente!", vbCritical, "Erro"
txtSenha.SetFocus
Else
'inicio
If txtLogin.Text <> Empty And txtSenha.Text <> Empty Then
abrebanco
Set rsdados = New Recordset
rsdados.Open "SELECT * FROM logins", cn
Do While rsdados.EOF = False
If rsdados("Login") = txtLogin.Text And rsdados("Senha") = txtSenha.Text Then
If rsdados("Privilegios") = 2 Then
frmAdm.Caption = frmAdm.Caption & " - " & rsdados("Nome")
frmAdm.Show
Unload Me
ElseIf rsdados("Privilegios") = 1 Then
frmnormal.Caption = frmnormal.Caption & " - " & rsdados("Nome")
frmnormal.Show
Unload Me
ElseIf rsdados("Privilegios") = 0 Then
frmbaixo.Caption = frmbaixo.Caption & " - " & rsdados("Nome")
frmbaixo.Show
Unload Me
End If
ElseIf rsdados("Login") <> txtLogin.Text Or rsdados("Senha") <> txtSenha.Text Then
rsdados.MoveNext
If rsdados.EOF <> False Then
MsgBox "Login errado"
txtLogin.Text = Empty
txtSenha.Text = Empty
txtLogin.SetFocus
End If
End If
Loop
End If
End If
End Sub
[/codebox]

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Matheus, achei seu Código muito Grande e bem confuso...

não entendi o porque do,

"If txtLogin.Text = Empty And txtSenha.Text = Empty Then"
else
If txtLogin.Text <> Empty And txtSenha.Text <> Empty Then
você está validando 2 vezes a mesma coisa.. acho que esse código poderia se resolver em uma quantidade menor de linhas
If txtLogin.Text = Empty And txtSenha.Text = Empty Then
         MsgBox "Prencha os campos corretamente!", vbCritical, "Erro"
         If txtLogin.Text = Empty Then
                 txtLogin.SetFocus
         else
                txtSenha.SetFocus
         end if
    else ' Ele já validou se o campo está nulo, não precisa verificar novamente
        abrebanco
        Set rsdados = New Recordset
        rsdados.Open "SELECT * FROM logins WHERE login='" & txtlogin.text & "'", cn
        if not rsdados.eof then
              if rsdados("Senha") = txtsenha.text then
                     msgbox "login efetuado"
              else
                    MsgBox "Senha Inválido", vbCritical, "Erro"              
              end if
        else
              MsgBox "Login não encontrado", vbCritical, "Erro"              
        end if
  end if

Link para o comentário
Compartilhar em outros sites

  • 0

"If txtLogin.Text = Empty And txtSenha.Text = Empty Then"
else
If txtLogin.Text <> Empty And txtSenha.Text <> Empty Then

não estou validando a mesma coisa... em uma hora uso = e na outra uso <> :D

Vou testar seu código :D

---

funcionou corretamente!!

Resolvido :)

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0

o que eu queria falar é que se você já verificou se o os dois text são diferentes de empty o "Else" dele será que eles são iguais...

porem vi um outro erro agora, caso o usuário preencha só o Login ele não verificará o outro porque seu IF está com "AND" e não com o " OR"

faça um teste colocando apenas o usuário, sem senha e rode o programa, depois troque o AND pelo OR e teste novamente..

Depois disso avisa para que eu possa fechar o Tópico.

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui de uma forma bem simples... no curso passaram esse código, só adaptei com minhas necessidades


Private Sub cmdEntrar_Click()
If txtLogin.Text = Empty Then
MsgBox "Prencha os campos corretamente!", vbCritical, "Erro"
txtLogin.SetFocus
ElseIf txtSenha.Text = Empty Then
MsgBox "Prencha os campos corretamente!", vbCritical, "Erro"
txtSenha.SetFocus

Else

'inicio
Dim acesso As Boolean
acesso = False
abrebanco
Set rsdados = New ADODB.Recordset
rsdados.Open "SELECT * FROM logins WHERE Login='" & txtLogin.Text & "' and senha = '" & txtSenha.Text & "'", cn
Do While rsdados.EOF = False

If rsdados("Senha") = txtSenha.Text Then
If rsdados("Privilegios") = 2 Then
frmAdm.Caption = frmAdm.Caption & " - " & rsdados("Nome")
frmAdm.Show
Unload Me
ElseIf rsdados("Privilegios") = 1 Then
frmnormal.Caption = frmnormal.Caption & " - " & rsdados("Nome")
frmnormal.Show
Unload Me
ElseIf rsdados("Privilegios") = 0 Then
frmbaixo.Caption = frmbaixo.Caption & " - " & rsdados("Nome")
frmbaixo.Show
Unload Me
End If
End If
rsdados.MoveNext
acesso = True
Loop
If rsdados.EOF = True And acesso = False Then
MsgBox "Acesso Negado!", vbCritical, "Usuario ou senha invalida!"
End If
End If
End Sub
[/codebox]

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...