LOGIN - SQL
[txt-color=#000080]Eu preciso fazer um formulário d login, + naum sei como...
Qndo clicar no OK, eu quero verificar no bd se o usuário e a senha estão corretos (pelo menos por enqnto, é só um usuário); só q eu queria fazer isso em SQL.
Alguém pode me ajudar? [/txt-color][S59]
Qndo clicar no OK, eu quero verificar no bd se o usuário e a senha estão corretos (pelo menos por enqnto, é só um usuário); só q eu queria fazer isso em SQL.
Alguém pode me ajudar? [/txt-color][S59]
Verifique se na sua tabela existe um registro com o usuário e a senha informados:
Ou
Select * From TabUsuarios Where Usuario = '" & Text1.Text & "' And Senha ='" & Text2.text & "'"
If rs.RecordCount > 0 then
msgbox "Senha correta"
Else
msgbox "Usuário inexistente ou Senha incorreta"
End ifOu
If Not IsNull(rs!Login) then
msgbox "Senha correta"
Else
msgbox "Usuário inexistente ou Senha incorreta"
end if
Tiago.. acho que sua estrutura lógica ficou errada...
Ou seja se existir um registro, com o nome e senha digitado... vai dar senha incorreta.. .se não existir vai dar usuário ou senha incorreta... esta errrado
Acho que seria melhor assim
Depois de executar a consulta...
Entendeu a lógica
If rs.RecordCount > 0 then
msgbox "Senha correta"
Else
msgbox "Usuário inexistente ou Senha incorreta"
End if
Ou seja se existir um registro, com o nome e senha digitado... vai dar senha incorreta.. .se não existir vai dar usuário ou senha incorreta... esta errrado
Acho que seria melhor assim
SQL = "Select * From TabUsuarios Where " _
& "Usuario = '" & Text1.Tex & "'"
Depois de executar a consulta...
if rst.eof and rst.bof then
Msgbox "usuário inexistente"
Exit sub
End if
If rst![senha] = txtsenha then
Msgbox "Bem vindo"
FormPrincipal.Show
else
Msgbox "Senha incorreta"
end if
Entendeu a lógica
GERMANIR,
Valeu pela observação,
Sua lógica é mais precisa na resposta ao usuário, pois primeiro verifica se o usuário existe e depois verifica a senha, informando ao usuário qual exatamente foi o motivo do bloqueio.
O meu código confunde mais o usuário que não logou corretamente, ou seja, sequer informa se o usuário existe ou não, [s61] mas não é o caso de estar errado.
Eu realizava essa tarefa com um código semelhante ao seu, mas depois passei a usar o outro, pois, erros de digitação à  parte, eu penso que a responsabilidade de saber se o usuário existe ou não é do usuário.
Não é relevante quanto à  segurança, e, esteticamente, a sua lógica é bem melhor.
Até logo...
Valeu pela observação,

Sua lógica é mais precisa na resposta ao usuário, pois primeiro verifica se o usuário existe e depois verifica a senha, informando ao usuário qual exatamente foi o motivo do bloqueio.
O meu código confunde mais o usuário que não logou corretamente, ou seja, sequer informa se o usuário existe ou não, [s61] mas não é o caso de estar errado.
Eu realizava essa tarefa com um código semelhante ao seu, mas depois passei a usar o outro, pois, erros de digitação à  parte, eu penso que a responsabilidade de saber se o usuário existe ou não é do usuário.
Não é relevante quanto à  segurança, e, esteticamente, a sua lógica é bem melhor.
Até logo...
Obrigado... estamos aqui pra COMPARTILHAR informações!
As vezes deixo passar alguma também...
Agora que vi... q no codigo está SENHA CORRETA......
Achei que era SENHA INCORRETA...
Seu codigo também está certo...
hehehe......
........
As vezes deixo passar alguma também...
Agora que vi... q no codigo está SENHA CORRETA......
Achei que era SENHA INCORRETA...
Seu codigo também está certo...
hehehe......
........
[txt-color=#000080] + o q q é o SQL? Boolean, String....?
Tá dando pau aki:[/txt-color]
[txt-color=#ff0000] SQL = "Select * from log where " _
& "login = '" & TXTSenha.Text & "'" [/txt-color]
[txt-color=#000080]log é o nome da tabela e login o nome do campo.
Ond q tá o erro? [/txt-color]
Tá dando pau aki:[/txt-color]
[txt-color=#ff0000] SQL = "Select * from log where " _
& "login = '" & TXTSenha.Text & "'" [/txt-color]
[txt-color=#000080]log é o nome da tabela e login o nome do campo.
Ond q tá o erro? [/txt-color]
MAZINHA,
Pelo que vi você armazena a senha num campo chamado login, porque você criou uma SQL que seleciona os registros da tabela log cujo campo login seja igual ao conteudo do campo txtsenha.
Sua intenção era essa mesmo?
O adequado seria você colocar no campo login o nome do usuario e criar um campo senha para a senha de cada usuario.
Ficaria assim
Select * From log where login = '" & TXTUsuario.Text & "' AND senha = '" & TXTSenha.Text & "'"
Ou então como o GERMANIR postou.
Quanto ao seu questionamento:
Sua pergunta é muito ampla e envolve os princÃpios mais básicos do VB. Tente ser um pouco mais especÃfica...
Se precisar de mais algo é só entrar em contato...
Pelo que vi você armazena a senha num campo chamado login, porque você criou uma SQL que seleciona os registros da tabela log cujo campo login seja igual ao conteudo do campo txtsenha.
Sua intenção era essa mesmo?
O adequado seria você colocar no campo login o nome do usuario e criar um campo senha para a senha de cada usuario.
Ficaria assim
Select * From log where login = '" & TXTUsuario.Text & "' AND senha = '" & TXTSenha.Text & "'"
Ou então como o GERMANIR postou.
Quanto ao seu questionamento:
Citação:+ o q q é o SQL? Boolean, String....?
Sua pergunta é muito ampla e envolve os princÃpios mais básicos do VB. Tente ser um pouco mais especÃfica...
Se precisar de mais algo é só entrar em contato...
[txt-color=#000080]Deu pau di novo...[S38]
Eu declarei q SQL é Boolean e qndo carrega o formulário, SQL=True.
No botão OK tem o seguinte:
If SQL = True Then[/txt-color]
[txt-color=#ff0000]SQL = "Select * From log where login = '" & TXTUsuario.Text & "' AND senha = '" & TXTSenha.Text & "'"[/txt-color]
[txt-color=#000080]End If
O erro aparece onde tá em vermelho.
Q q eu faço???
[/txt-color][S43]
Eu declarei q SQL é Boolean e qndo carrega o formulário, SQL=True.
No botão OK tem o seguinte:
If SQL = True Then[/txt-color]
[txt-color=#ff0000]SQL = "Select * From log where login = '" & TXTUsuario.Text & "' AND senha = '" & TXTSenha.Text & "'"[/txt-color]
[txt-color=#000080]End If
O erro aparece onde tá em vermelho.
Q q eu faço???
[/txt-color][S43]
Mazinha,
SQL não pode ser booleana, é uma String e você deve criar uma conexão e um recordset para acessar o banco de dados.
As variáveis do tipo boolean só recebem True/False
Você já sabe fazer conexões com banco de dados?
Thiago César
tkzar@hotmail.com
SQL não pode ser booleana, é uma String e você deve criar uma conexão e um recordset para acessar o banco de dados.
As variáveis do tipo boolean só recebem True/False
Você já sabe fazer conexões com banco de dados?
Thiago César
tkzar@hotmail.com
[txt-color=#000080]Faz um tempinhu q eu naum mexo com programação... Por isso q eu tà ' enrolada com isso...
+ dexa eu t mostrá o q eu fiz:
Módulo
Declaração de variáveis
BD
Formulário
Se entendeu o q eu fiz? Assim fica + fácil pra me ajudá, ou eu piorei as coisas???[/txt-color]
+ dexa eu t mostrá o q eu fiz:
Módulo
Declaração de variáveis
Public SQL As Boolean
Public vSQL As String
Public TB_LOG As Recordset
Public BD As Database
Public AREA As WorkspaceBD
Sub Abre_Log()
Set AREA = DBEngine.Workspaces(0)
AREA.BeginTrans
On Error GoTo ERRO_ABRIR
Set BD = AREA.OpenDatabase("c:\dados\dados.mdb", False)
Set TB_LOG = BD.OpenRecordset("log", dbOpenDynaset)
On Error GoTo 0
Exit Sub
ERRO_ABRIR:
If MsgBox("Erro ao acessar dados!", vbCritical, "Erro!") = vbOK Then
AREA.Rollback
On Error GoTo 0
Exit Sub
End If
Resume
AREA.CommitTrans
End SubFormulário
If SQL = True Then
SQL = "Select * From log where login = '" & TXTUsuario.Text & "' AND senha = '" & TXTSenha.Text & "'"
End IfSe entendeu o q eu fiz? Assim fica + fácil pra me ajudá, ou eu piorei as coisas???[/txt-color]
Tente assim
Set AREA = DBEngine.Workspaces(0)
AREA.BeginTrans
On Error GoTo ERRO_ABRIR
Set BD = AREA.OpenDatabase("c:\dados\dados.mdb", False)
[txt-color=#ff0000]vSQL[/txt-color] = "Select * From log where login = '" & TXTUsuario.Text & "' AND senha = '" & TXTSenha.Text & "'"
Set TB_LOG = BD.OpenRecordset([txt-color=#0000ff]vSQ[/txt-color]L, dbOpenDynaset)
If TB_LOG.BOF and TB_LOG.EOF
msgbox "Usuário ou senha incorreta"
else
Msgbox "Bem vindo"
principal.show
end if
Tópico encerrado , respostas não são mais permitidas