TIPO DE DADOS INCOMPATÍVEL NA EXPRESSÃO DE CRITÉRI

LGFMOURA 22/06/2016 11:02:05
#463903
Estou com um problema numa consulta, a idéia é o seguinte:

Estou tentando criar uma consulta para que eu localize pelo codigo_interno, tenho uma textbox que recebe um valor do usuário, através dela faço uma consulta no BD(ACCESS) procurando as informações referentes ao valor que foi digitado e carrego as informações em uma DataGridView. Tentei usar:

SELECT codigo_interno, nome, telefone FROM cadastro WHERE codigo_interno LIKE “%” +?+ “%”

mas aparece o seguinte erro: “tipo de dados incompatível na expressão de critério”. Acho que o problema deve ser por causa do campo codigo_interno que é chave primaria da tabela cadastro e do tipo autonumeracao .Alguem poderia dar uma luz!
KURTGU 22/06/2016 11:08:43
#463904
select * from contatos where nome like 'A*'
LGFMOURA 22/06/2016 11:22:16
#463906

KURTGU da forma que vc colocou eu estaria pesquisando pelo campo NOME quando na verdade eu quero pesquisar pelo campo CODIGO_INTERNO.
KURTGU 22/06/2016 11:24:21
#463908
kk isso mesmo e so voce colocar os seus campos isso e so um exemplo de um select usando like..
GUIMORAES 22/06/2016 11:34:14
#463911
LGFMOURA,

Você está usando parâmetros na sua query?
Se sim, faz assim.

 
SELECT codigo_interno, nome, telefone FROM cadastro WHERE codigo_interno LIKE @codigo”


Agora, um detalhe muito importante, se você está realizando uma pesquisa por código, o LIKE te retornará tudo que contem, por exemplo, 3.

13,3,30,33,23,53...........

A questão é que, quando se busca por código interno (inteiro), você deve buscar o código desejado, para permitir uma pesquisa mais enxuta e precisa, mas cada caso é um caso, e você deve analisar o seu.

LGFMOURA 22/06/2016 11:41:46
#463913
GUIMORAES123 é exatamente isso que preciso, uma pesquisa mais enxuta e precisa, coloquei o que vc postou e no codigo do botão de busca coloquei:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Try
Me.TBcadastroTableAdapter.CODIGO(Me.BDtesteDataSet.TBcadastro, TextBox2.Text)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub

Mas continua dando erro......
PERCIFILHO 22/06/2016 13:08:41
#463917
Resposta escolhida
Se o seu código interno for do tipo Integer, então, creio que você terá que converter o seu TextBox para inteiro para fazer a pesquisa.
Deve ser essa a razão do erro de tipo de dado incompatível na expressão de critério.
E no Select use igual (=) ao invés de Like.
Exemplo:
SELECT codigo_interno, nome, telefone FROM cadastro WHERE codigo_interno = @código
Dê preferência para uso com parâmetros, ok?
LGFMOURA 22/06/2016 13:35:16
#463920
Muito Obrigado !!! Funcionando redondinho...rs

Segue abaixo como ficou a Query e a Linha de Comando:

SELECT codigo, nome, telefone FROM TBcadastro WHERE codigo like ?


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Try
Dim numero As Integer
numero = CInt(TextBox2.Text)
Me.TBcadastroTableAdapter.CODIGO(Me.BDtesteDataSet.TBcadastro, numero)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub

Tópico encerrado , respostas não são mais permitidas