TIPO DE DADOS INCOMPATÃVEL NA EXPRESSÃO DE CRITÉRI
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!
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!
select * from contatos where nome like 'A*'
KURTGU da forma que vc colocou eu estaria pesquisando pelo campo NOME quando na verdade eu quero pesquisar pelo campo CODIGO_INTERNO.
kk isso mesmo e so voce colocar os seus campos isso e so um exemplo de um select usando like..
LGFMOURA,
Você está usando parâmetros na sua query?
Se sim, faz assim.
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.
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.
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......
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......
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?
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?
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
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