Usuário com melhor resposta
"Tipo de dados incompatível na expressão de critério"

Pergunta
-
E ai pessoal! Belezinha?
Então, eu ando tentando carregar uma label com uma string, essa string vem de uma query que retorna a string que quero pela ID da table. Mas dá erro quando tento carregar essa label!
Meu código é esse:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Espaço para selecionar e carregar o label com o tipo de mensalidade Dim dr As OleDbDataReader = Nothing Using con2 As OleDbConnection = conexao() con2.Open() Dim stg As String = "SELECT * FROM Servicos_mensais WHERE id_mensalidade='" & cbid.Text & "'" Dim comando As OleDbCommand = New OleDbCommand(stg, con2) dr = comando.ExecuteReader(CommandBehavior.SingleRow) If dr.HasRows Then dr.Read() lblt.Text = dr.Item("Tipo") End If End Using '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Alguém sabe onde errei?
Respostas
-
Olá!
Provavelmente id_mensalidade é um número, e não um inteiro.. Se esse for o caso, você não deve utilizar aspas simples antes e depois do valor passado para a consulta:
Dim stg As String = "SELECT * FROM Servicos_mensais WHERE id_mensalidade=" & cbid.Text
De qualquer forma, eu recomendo que você não fique concatenando valores nas suas sentenças.. É super importante aprender o conceito de parâmetros do ADO.NET.. Isso evita essa dor de cabeça que você está tendo, além de outros problemas que você teria ao passar valores do tipo data/hora, evita SQL injection, etc.. Confira mais detalhes da funcionalidade de parâmetros no ADO.NET neste artigo:
Parâmetros do ADO.NET: por favor, pare de concatenar strings nas suas sentenças SQL!
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Marcado como Resposta Smart Tech Softwares sexta-feira, 18 de novembro de 2016 11:25
Todas as Respostas
-
E ai pessoal! Belezinha?
Então, eu ando tentando carregar uma label com uma string, essa string vem de uma query que retorna a string que quero pela ID da table. Mas dá erro quando tento carregar essa label!
Meu código é esse:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Espaço para selecionar e carregar o label com o tipo de mensalidade Dim dr As OleDbDataReader = Nothing Using con2 As OleDbConnection = conexao() con2.Open() Dim stg As String = "SELECT * FROM Servicos_mensais WHERE id_mensalidade='" & cbid.Text & "'" Dim comando As OleDbCommand = New OleDbCommand(stg, con2) 'Linha que dá o erro -> dr = comando.ExecuteReader(CommandBehavior.SingleRow) If dr.HasRows Then dr.Read() lblt.Text = dr.Item("Tipo") End If End Using '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Alguém sabe onde errei?
-
-
Olá!
Provavelmente id_mensalidade é um número, e não um inteiro.. Se esse for o caso, você não deve utilizar aspas simples antes e depois do valor passado para a consulta:
Dim stg As String = "SELECT * FROM Servicos_mensais WHERE id_mensalidade=" & cbid.Text
De qualquer forma, eu recomendo que você não fique concatenando valores nas suas sentenças.. É super importante aprender o conceito de parâmetros do ADO.NET.. Isso evita essa dor de cabeça que você está tendo, além de outros problemas que você teria ao passar valores do tipo data/hora, evita SQL injection, etc.. Confira mais detalhes da funcionalidade de parâmetros no ADO.NET neste artigo:
Parâmetros do ADO.NET: por favor, pare de concatenar strings nas suas sentenças SQL!
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Marcado como Resposta Smart Tech Softwares sexta-feira, 18 de novembro de 2016 11:25
-