PROBLEMAS COM ROTINA DE LOGIN.

LIBELOLAOLV 24/11/2012 01:04:00
#414702
Bom pessoal, dessa vez vim aqui por conta de um código que peguei com um amigo que está usando o mysql, ou seja, há algumas diferenças na codificação, entretanto, tentei me virar sozinho procurando outros códigos que me auxiliassem no meu problema, mas a maioria que encontrei é com banco de daddos access... E o que eu uso é o SQL SERVER ...O que ocorre? Meu form de login está montado e tal, entretanto, a rotina de login não funciona... apenas informa login iválido, mesmo tendo digitado tudo certinho... Abaixo o código:

Public Function Login()
Dim dt As New DataTable
[ô]Dim da As SqlClient.SqlDataAdapter
[ô]da.Fill(dt)

strSql = [Ô]SELECT * FROM Empresas Where Login_Usuario =[Ô] & txtlogin.Text & [Ô] and Senha_Usuario=[Ô] & txtsenha.Text


cmdLogin.CommandText = strSql
cmdLogin.Connection = cnnSql

For Each DataRow In dt.Rows

If txtLogin.Text = DataRow.item(1) And txtSenha.Text = DataRow(2) Then

cnnSql.Close()
Return True

End If

Next

cnnSql.Close()
MessageBox.Show([Ô]Login Inválido[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)

End Function


Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

If txtLogin.TextLength < 1 Or txtSenha.TextLength < 1 Then
MessageBox.Show([Ô]Campo(s) em branco[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If

If Login() = True Then

MessageBox.Show([Ô]Logado com Sucesso[Ô])
mdiPrincipal.Show()

Else

MessageBox.Show([Ô]Erro ao Logar[Ô])

End If

End Sub

Grato desde já.
OMAR2011 25/11/2012 10:02:21
#414727
Então vamos mostrar erros,porque não conectou direito.

Public Function Login()
Dim dt As New DataTable
Dim da As New SqlDataAdapter
Dim cmdLogin As New SqlCommand
Dim cnnSql As New SqlConnection([Ô]Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Bras2012.mdf;Integrated Security=True[Ô]) [ô][txt-color=#e80000] Aqui coloca a sua conexão Sqlserver[/txt-color]
Dim strSql As String = [Ô]SELECT * FROM Empresas Where Login_Usuario =[ô][Ô] & txtlogin.Text & [Ô][ô] and Senha_Usuario=[ô][Ô] & txtsenha.Text & [Ô][ô][Ô] [ô] [txt-color=#e80000]Aspas estava faltando[/txt-color].

cmdLogin.CommandText = strSql
cmdLogin.Connection = cnnSql
da.SelectCommand = cmdLogin
da.Fill(dt) [ô] [txt-color=#e80000]Sem isto não carrega nada do banco[/txt-color]

For Each DataRow In dt.Rows
If txtlogin.Text = DataRow.item(1).ToString.Trim And txtsenha.Text = DataRow(2).ToString.Trim Then [ô][txt-color=#e80000] Coloquei deste jeito no meu e teste deu certo,o seu não deu certo[/txt-color]
Return True
End If
Next
cnnSql.Close()
MessageBox.Show([Ô]Login Inválido[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error) [ô][txt-color=#e80000] Depois de tudo certo sempre vai aparecer está mensagem,terá que retirá-la[/txt-color].

End Function

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

If txtLogin.TextLength < 1 Or txtSenha.TextLength < 1 Then [ô][txt-color=#e80000] Isto não é satisfatório para comparação.Se usar a tecla de espaço vai aceitar e seu campo vai está vazio[/txt-color].
[ô] Use
If txtlogin.Text.Trim = [Ô][Ô] Then [txt-color=#007100][ô]O resto completa deste jeito[/txt-color]
MessageBox.Show([Ô]Campo(s) em branco[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If

If Login() = True Then

MessageBox.Show([Ô]Logado com Sucesso[Ô])
mdiPrincipal.Show()

Else

MessageBox.Show([Ô]Erro ao Logar[Ô])

End If

End Sub

Agora acredito que vai dar certo.
Valeu.
LIBELOLAOLV 25/11/2012 22:19:02
#414762
Bom cara, primeiramente obrigado pela resposta... Eu corrigi conforme a sugestão, mas ele continua me dando login Invalido =( segue o código com as correções. Detalhe que estou com o banco aberto do lado, tentando logar com usuários cadastrados e mesmo assim o erro persiste... Pelo jeito agora as connections funfaram, só deve estar havendo alguma validação errada.. HEHE preciso de mais um help, grato desde já.


Public Function Login()
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter
Dim cmdLogin As New SqlClient.SqlCommand
Dim cnnSql As New SqlClient.SqlConnection([Ô]Server=(local)\SQLEXPRESS;[Ô] & _
[Ô]User Id=sa; Password=; Database=db_COMFORT; Connection TimeOut=60;[Ô]) [ô] Aqui coloca a sua conexão Sqlserver
Dim strSql As String = [Ô]SELECT * FROM Usuarios Where Login_Usuario =[ô][Ô] & txtlogin.Text & [Ô][ô] and Senha_Usuario=[ô][Ô] & txtsenha.Text & [Ô][ô][Ô] [ô] Aspas estava faltando.

cmdLogin.CommandText = strSql
cmdLogin.Connection = cnnSql
da.SelectCommand = cmdLogin
da.Fill(dt) [ô] Sem isto não carrega nada do banco

For Each DataRow In dt.Rows
If txtlogin.Text = DataRow.item(1).ToString.Trim And txtsenha.Text = DataRow(2).ToString.Trim Then [ô] Coloquei deste jeito no meu e teste deu certo,o seu não deu certo
Return True
End If
Next
cnnSql.Close()
[ô]MessageBox.Show([Ô]Login Inválido[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error) [ô] Depois de tudo certo sempre vai aparecer está mensagem,terá que retirá-la.

End Function



Private Sub btnincluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnincluir.Click

[ô]-- If txtlogin.TextLength < 1 Or txtsenha.TextLength < 1 Then <-- [ô] Isto não é satisfatório para comparação.
[ô] Se usar a tecla de espaço vai aceitar e seu campo vai está vazio.
[ô] Use

If txtlogin.Text.Trim = [Ô][Ô] Then [ô]O resto completa deste jeito
MessageBox.Show([Ô]Campo(s) em branco[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If


If Login() = True Then

MessageBox.Show([Ô]Logado com Sucesso[Ô])
mdiPrincipal.Show()

Else

MessageBox.Show([Ô]Erro ao Logar [Ô] & Err.Description, [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)

End If

End Sub
OMAR2011 26/11/2012 08:10:54
#414771
Por esse código não tem com aparecer [Ô]Login Invalido[Ô].
MessageBox.Show([Ô]Login Inválido[Ô], [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Terá que retirá-la.
LUIS.HERRERA 26/11/2012 11:14:57
#414785
Resposta escolhida
Tenta assim:

Public Function Login()
[txt-color=#e80000]Dim Acesso As Bool = False[/txt-color]
Dim dt As New DataTable
Dim da As New SqlClient.SqlDataAdapter
Dim cmdLogin As New SqlClient.SqlCommand
Dim cnnSql As New SqlClient.SqlConnection([Ô]Server=(local)\SQLEXPRESS;[Ô] & _
[Ô]User Id=sa; Password=; Database=db_COMFORT; Connection TimeOut=60;[Ô]) [ô] Aqui coloca a sua conexão Sqlserver
Dim strSql As String = [Ô]SELECT * FROM Usuarios Where Login_Usuario =[ô][Ô] & txtlogin.Text & [Ô][ô] and Senha_Usuario=[ô][Ô] & txtsenha.Text & [Ô][ô][Ô] [ô] Aspas estava faltando.

cmdLogin.CommandText = strSql
cmdLogin.Connection = cnnSql
da.SelectCommand = cmdLogin
da.Fill(dt) [ô] Sem isto não carrega nada do banco

For Each DataRow In dt.Rows
If txtlogin.Text = DataRow.item(1).ToString.Trim And txtsenha.Text = DataRow(2).ToString.Trim Then [ô] Coloquei deste jeito no meu e teste deu certo,o seu não deu certo
[txt-color=#e80000]Acesso = True[/txt-color]
End If
Next
cnnSql.Close()
[txt-color=#e80000]return Acesso[/txt-color]
End Function

If Login() = True Then
MessageBox.Show([Ô]Logado com Sucesso[Ô])
mdiPrincipal.Show()
Else
MessageBox.Show([Ô]Erro ao Logar [Ô] & Err.Description, [Ô]Erro[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
LIBELOLAOLV 27/11/2012 20:23:53
#414896
Consegui galera, muito obrigado!
Tópico encerrado , respostas não são mais permitidas