PROBLEMA AO ABRIR CONEXAO
Poderiam me ajudar?
Estou tentando fazer um formulário de autenticação
já tenho um bd do acess com as colunas que preciso e tal (nome users colunas user e senha, arquivo db.accdb)
Testo a conexão no wizard e ok
quando vou dar debug. abre o formulario e no botao cancela ele feha, ate ai tudo certo
quando tento entrar com senha e usuario (certo ou erado, tanto faz) ele me reporta que o comando ExecuteReader precisa de conexão aberta.
Já tentei dar um Open e nada, podem ver o codigo?
Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
Dim conexao As New OleDbConnection
Dim comandos As New OleDbCommand
Dim consulta As OleDbDataReader
conexao.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\cpreb_000\Desktop\primeira\primeira\db.accdb[Ô]
comandos.CommandText = [Ô]SELECT * FROM users WHERE user = [ô]txtUser.Text[ô] and senha = [ô]txtPass.Text[ô]; [Ô]
comandos.Connection = conexao
conexao.Open()
consulta = comandos.ExecuteReader
If (consulta.HasRows) Then
main.Show()
Else
MsgBox([Ô]Usuário ou senha inválidos.[Ô])
End If
conexao.Close()
Me.Close()
End Sub
End Class
Estou tentando fazer um formulário de autenticação
já tenho um bd do acess com as colunas que preciso e tal (nome users colunas user e senha, arquivo db.accdb)
Testo a conexão no wizard e ok
quando vou dar debug. abre o formulario e no botao cancela ele feha, ate ai tudo certo
quando tento entrar com senha e usuario (certo ou erado, tanto faz) ele me reporta que o comando ExecuteReader precisa de conexão aberta.
Já tentei dar um Open e nada, podem ver o codigo?
Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
Dim conexao As New OleDbConnection
Dim comandos As New OleDbCommand
Dim consulta As OleDbDataReader
conexao.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\cpreb_000\Desktop\primeira\primeira\db.accdb[Ô]
comandos.CommandText = [Ô]SELECT * FROM users WHERE user = [ô]txtUser.Text[ô] and senha = [ô]txtPass.Text[ô]; [Ô]
comandos.Connection = conexao
conexao.Open()
consulta = comandos.ExecuteReader
If (consulta.HasRows) Then
main.Show()
Else
MsgBox([Ô]Usuário ou senha inválidos.[Ô])
End If
conexao.Close()
Me.Close()
End Sub
End Class
opa blza...
tente colocar o código que abre a conexão com o bando de dados antes da conection string
assim:
conexao.Open()
conexao.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\cpreb_000\Desktop\primeira\primeira\db.accdb[Ô]
espero ter ajudado..
tente colocar o código que abre a conexão com o bando de dados antes da conection string
assim:
conexao.Open()
conexao.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\cpreb_000\Desktop\primeira\primeira\db.accdb[Ô]
espero ter ajudado..
Faça um teste.
If (consulta.HasRows) Then
[ô] main.Show()
Else
MsgBox([Ô]Usuário ou senha inválidos.[Ô])
End If
Deste jeito.
Acho onde acontece o erro é [txt-color=#e80000] [ô] main.Show()[/txt-color]
Testei seu código e não teve problema nenhum.
If (consulta.HasRows) Then
[ô] main.Show()
Else
MsgBox([Ô]Usuário ou senha inválidos.[Ô])
End If
Deste jeito.
Acho onde acontece o erro é [txt-color=#e80000] [ô] main.Show()[/txt-color]
Testei seu código e não teve problema nenhum.
consegui. o problema era o Provider.
se ajudar alguem o codigo correto dele abaixo
conexao.ConnectionString = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\db.accdb[Ô]
Meu problema agora e outro.
Ele abre a conexao, me da usuario e senha invalido e tal.
Só que se coloco um usuario e senha (ja definidos na tabela) ele não reconhece... Sempre retorna como usuario e senha invalido
Alguem pode verificar o que temos de errado
comandos.CommandText = [Ô]SELECT * FROM users WHERE user = [ô] txtUser.Text[ô] and senha = [ô] txtPass.Text[ô]; [Ô]
users é a tabela
user e a coluna usuario
senha a coluna senha
txtUser é a textbox de usuario
txtPass é a textbox da senha
se ajudar alguem o codigo correto dele abaixo
conexao.ConnectionString = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\db.accdb[Ô]
Meu problema agora e outro.
Ele abre a conexao, me da usuario e senha invalido e tal.
Só que se coloco um usuario e senha (ja definidos na tabela) ele não reconhece... Sempre retorna como usuario e senha invalido
Alguem pode verificar o que temos de errado
comandos.CommandText = [Ô]SELECT * FROM users WHERE user = [ô] txtUser.Text[ô] and senha = [ô] txtPass.Text[ô]; [Ô]
users é a tabela
user e a coluna usuario
senha a coluna senha
txtUser é a textbox de usuario
txtPass é a textbox da senha
Prebelli,
Nesta página você encontra todo o esquema para se conectar ao Access:
http://www.connectionstrings.com/access/
Mas eu não entendi ... desculpe ... você quer buscar na Base de Dados usuário e Senha para se conectar na mesma Base de Dados?!?
Exemplo: Se você guardar seu usuário e senha criptografados no código (código em separado ... por uma DLL) e só passar o código criptografado quando for abrir a conexão. Você na hora descriptografa sem guardar em variável nenhuma e nem na base de dados.
Bom ... seu Command Text:
Se você quer colocar uma variável dentro do texto entre aspas, meçhor usar neste formato:
[Ô]SELECT * FROM users WHERE user = [ô][Ô] & txtUser.Text & [Ô][ô] and senha = [ô][Ô] & txtPass.Text & [Ô][ô][Ô]
Aspas Simples ([ô]) + Aspas Duplas ([Ô]) & TEXTO & Aspas Duplas ([Ô]) + Aspas Simples ([ô])
Veja esta explicação:
http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcommand.commandtext.aspx
Veja outros exemplos de criação de SELECT:
http://stackoverflow.com/questions/12954039/inserting-and-updating-values-in-ms-access-using-vb-net
[][ô]s,
Tunusat.
Nesta página você encontra todo o esquema para se conectar ao Access:
http://www.connectionstrings.com/access/
Mas eu não entendi ... desculpe ... você quer buscar na Base de Dados usuário e Senha para se conectar na mesma Base de Dados?!?
Exemplo: Se você guardar seu usuário e senha criptografados no código (código em separado ... por uma DLL) e só passar o código criptografado quando for abrir a conexão. Você na hora descriptografa sem guardar em variável nenhuma e nem na base de dados.
Bom ... seu Command Text:
Citação:
comandos.CommandText = [Ô]SELECT * FROM users WHERE user = [ô] txtUser.Text[ô] and senha = [ô] txtPass.Text[ô]; [Ô]
Se você quer colocar uma variável dentro do texto entre aspas, meçhor usar neste formato:
[Ô]SELECT * FROM users WHERE user = [ô][Ô] & txtUser.Text & [Ô][ô] and senha = [ô][Ô] & txtPass.Text & [Ô][ô][Ô]
Aspas Simples ([ô]) + Aspas Duplas ([Ô]) & TEXTO & Aspas Duplas ([Ô]) + Aspas Simples ([ô])
Veja esta explicação:
http://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlcommand.commandtext.aspx
Veja outros exemplos de criação de SELECT:
http://stackoverflow.com/questions/12954039/inserting-and-updating-values-in-ms-access-using-vb-net
[][ô]s,
Tunusat.
Faça seu login para responder