Usuário com melhor resposta
Erro ExecuteReader

Pergunta
-
Ao debugar a sub a seguir no VB 2010 aparece erro no ExecuteReader. Poderiam me dizer por quê?Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.ClickDim con As New OleDbConnectioncon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\2011\2011 Informática\Visual basic 2010\CartaoSantander\CartaoSantander\codigo.accdb'"con.Open()Dim comando As New OleDbCommandcomando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = '" & TextBox1.Text & "'"comando.ExecuteReader()con.Close()End SubEnd Class
Respostas
-
Fiz o teste com este código e funcionou:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim con As New OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\FernandoF\Desktop\codigo.accdb'"
con.Open()
Dim comando As New OleDbCommand
comando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = " & TextBox1.Text & ""
comando.CommandType = CommandType.Text
comando.Connection = con
Dim leitor As OleDbDataReader
leitor = comando.ExecuteReader()
leitor.Read()
Label1.Text = leitor("codigos")
con.Close()
End Sub
A tabela que criei possuia a seguinte estrutura:
codigos - AutoNumber (PK)
numeros - Number
ps.: Repare que só mudei a sua query SQL
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Editado Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator quarta-feira, 7 de dezembro de 2011 10:51
- Marcado como Resposta anderson ferreira diniz quarta-feira, 7 de dezembro de 2011 15:44
Todas as Respostas
-
Olá Anderson,
Pelo que me parece vc deixou de informar ao OleDbCommand qual objeto de conexão que ele deve utilizar.
Faça assim:
Dim con As New OleDbConnection con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\2011\2011 Informática\Visual basic 2010\CartaoSantander\CartaoSantander\codigo.accdb'" Dim comando As New OleDbCommand ' Faltava a linha abaixo comando.Connection = con comando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = '" & TextBox1.Text & "'" con.Open() comando.ExecuteReader() con.Close()
Se não for isso, poste a mensagem de erro.[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
-
-
Sou iniciante em programação e não entendi a sua resposta.
A sub completa está assim:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim con As New OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\2011\2011 Informática\Visual basic 2010\CartaoSantander\CartaoSantander\codigo.accdb'"
con.Open()
Dim comando As New OleDbCommand
comando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = '" & TextBox1.Text & "'"
comando.CommandType = CommandType.Text
comando.Connection = con
Dim leitor As OleDbDataReader
leitor = comando.ExecuteReader()
leitor.Read()
Label1.Text = leitor("codigos")
con.Close()
End Sub
E o erro continua o mesmo.
Poderia explicar melhor?
-
A minha sub completa está assim:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim con As New OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\2011\2011 Informática\Visual basic 2010\CartaoSantander\CartaoSantander\codigo.accdb'"
con.Open()
Dim comando As New OleDbCommand
comando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = '" & TextBox1.Text & "'"
comando.CommandType = CommandType.Text
comando.Connection = con
Dim leitor As OleDbDataReader
leitor = comando.ExecuteReader()
leitor.Read()
Label1.Text = leitor("codigos")
con.Close()
End Sub
-
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim con As New OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\2011\2011 Informática\Visual basic 2010\CartaoSantander\CartaoSantander\codigo.accdb'"
con.Open()
Dim comando As New OleDbCommand
comando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = '" & TextBox1.Text & "'"
comando.CommandType = CommandType.Text
comando.Connection = con
Dim leitor As OleDbDataReader
leitor = comando.ExecuteReader()
if leitor.HasRows Then
do While leitor.Read()
Label1.Text = leitor("codigos")
Loop
Else
messagem.show("Nao existe informacao")
End if
Leitor.Close()
con.Close()
One word frees us of all the weight and pain of life: that word is love. -
-
Olá Anderson,
A coluna numeros da sua tabela tb_dados é do tipo varchar ou int?
Se a sua coluna for de alguma tipo para o armazenamento de números, vc deve remover as aspas simples do seu filtro.
Assim:
comando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = " & TextBox1.Text
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
O dados do acess são
campo numeros
Tipo de dados: número
tamanho do campo: Inteiro
campo codigos
Tipo de dados: número
tamanho do campo: Inteiro
Ao retirar as aspas, aparece o erro:
Conversion from string "SELECT codigos FROM tb_dados WHE" to type 'Double' is not valid.
- Editado anderson ferreira diniz segunda-feira, 5 de dezembro de 2011 18:38
-
No campo TextBox1.Text vc esta utilizando virgula ou ponto ao digitar os valores?
Caso esteja digitando virgulas, tente digitar ponto ao invés de virgulas
Acredito que seja preciso formatar as entradas de deste campo antes de passar os dados para a consulta SQL
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
-
Olá Anderson, Acredito que tenha algo errado, pois se o tipo de dados de sua coluna na tabela é inteiro então não é necessário a utilização de aspas simples para fazer a consulta. Pois as aspas simples são utilizadas com campos de tipo texto. Poderia verificar novamente qual o tipo de dados desta coluna? []s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
-
Olá Anderson,
Vc pode postar seu código na integra?
Pois a mensagem: Conversion from string "SELECT codigos FROM tb_dados WHE" to type 'Double' is not valid.
Pare que de alguma forma esta tentando converter o comando SQL para double.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
Aqui está o código inteiro:Imports System.Data.OleDbPublic Class Form1Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load'TODO: This line of code loads data into the 'CodigoDataSet1.tb_dados' table. You can move, or remove it, as needed.Me.Tb_dadosTableAdapter.Fill(Me.CodigoDataSet1.tb_dados)End SubPrivate Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.ClickDim con As New OleDbConnectioncon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\2011\2011 Informática\Visual basic 2010\CartaoSantander\CartaoSantander\codigo.accdb'"con.Open()Dim comando As New OleDbCommandcomando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = '" & TextBox1.Text & "'"comando.CommandType = CommandType.Textcomando.Connection = conDim leitor As OleDbDataReaderleitor = comando.ExecuteReader()leitor.Read()Label1.Text = leitor("codigos")con.Close()End SubPrivate Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.ClickIf TopMost = True ThenTopMost = FalseElseTopMost = TrueEnd IfEnd SubEnd Class
-
Fiz o teste com este código e funcionou:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim con As New OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\FernandoF\Desktop\codigo.accdb'"
con.Open()
Dim comando As New OleDbCommand
comando.CommandText = "SELECT codigos FROM tb_dados WHERE numeros = " & TextBox1.Text & ""
comando.CommandType = CommandType.Text
comando.Connection = con
Dim leitor As OleDbDataReader
leitor = comando.ExecuteReader()
leitor.Read()
Label1.Text = leitor("codigos")
con.Close()
End Sub
A tabela que criei possuia a seguinte estrutura:
codigos - AutoNumber (PK)
numeros - Number
ps.: Repare que só mudei a sua query SQL
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Editado Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator quarta-feira, 7 de dezembro de 2011 10:51
- Marcado como Resposta anderson ferreira diniz quarta-feira, 7 de dezembro de 2011 15:44
-