Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Humberto Moraes

Erro: tipo de dados incompativel na expressão de critério

Recommended Posts

Olá, estou tentando realizar uma pesquisa num banco de dados através da data de determinado registro, ou seja, eu quero mostrar num datagridview todos os registros em que o campo data_tarefa da tab_tarefas_p for igual à data que eu selecionei no dtpData. Mas quando tento executar o programa o seguinte erro é retornado: O erro é: Tipo de dados imcompatível na expressão de critério.

Ai está o código

 

Private Sub dtpData_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtpData.ValueChanged

       comando = "SELECT nome_tarefa FROM tab_tarefas_p WHERE data_tarefa ='" + dtpData.Text + "'"

       olecon_pessoais.Open()

       Dim adapterx2 As New OleDbDataAdapter(comando, olecon_pessoais)
       Dim dataset2 As New DataSet("tab_tarefas_p")

       If olecon_pessoais.State = ConnectionState.Open Then
           adapterx2.Fill(dataset2, "tab_tarefas_p")
           DataGridListar.DataSource = dataset2
           DataGridListar.DataMember = "tab_tarefas_p"
           olecon_pessoais.Close()
       End If

End Sub

 

Não consegui descobrir o motivo e já tentei colocar o símbolo "#"(sustenido) no comando sql mas não adiantou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Humberto!

 

Este erro parece estar ocorrendo na sintaxe no seu SELECT. Já testou o comando direto no banco?

 

Tente isso:

comando = "SELECT nome_tarefa FROM tab_tarefas_p WHERE data_tarefa =" & "'" & dtpData.Text & "'" & ""

 

Att,

 

Aquiles

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que eu descobri seu problema amigo...

 

SUA CONFIGURAÇÕES, VEJA SE ESTOU CORRETO:

Data está no padrão dos EUA(WINDOWS PADRÃO) MÊS/DIA/ANO

O campo está definido como DATA e não como TEXTO no ACCESS

O correto é utilizar o #DATA# para fazer o SELECT

--------------------------------------------------------------------------

Você vai ter que fazer algum algoritmo que inverte o dia para o lugar do mês e o mês o lugar do dia.

- Pode simplificar tudo colocando como tipo texto no banco dados, aí você não vai utilizar # e sim '

- Utilizar left e right ou middle para pegar os valores do DTP previamente guardados em uma variável

- Dá uma pesquisada.

 

Vai ficar assim seu select:

SELECT nome_tarefa FROM tab_tarefa WHERE data_tarefa = #06/07/2011#

 

o6 é o MÊS

 

07 é o DIA

 

2011 é o ANO

 

Faça esse SELECT direto no banco e você vai ver que vai funcionar.

Eu lembro que tem um jeito de configurar vou dar um procurada aqui e qualquer coisa posto. Qualquer dúvida posta AÍ

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.