PESQUISAR ENTRE 2 DATAS

VALRALA 16/10/2016 03:48:03
#468108
Boa noite amigos!
Pessoal to tentando fazer uma pesquisa no banco de dados que torne registros entre 2 datas, e me da esse erro

Erro: Tipo de dados incompativel na expressão de criterio

To fazendo assim:
==============================================================

Dim dtInicial As Date = dtpDataInicial.Value
Dim dtFinal As Date = dtpDataFinal.Value

Try
Dim dt As New DataTable
Dim ds As New DataSet
Dim Con As New OleDbConnection

Con.ConnectionString = My.Settings.CN1
Con.Open()

Dim sql As String = [Ô] Select * FROM TBvendas WHERE datacompra BETWEEN [ô][Ô] & dtInicial & [Ô][ô] AND [ô][Ô] & dtFinal & [Ô][ô] [Ô]

Dim comando As New OleDbCommand(Sql, Con)
Dim da As New OleDbDataAdapter(comando)

da.Fill(dt)
da.Fill(ds, [Ô]TBvendas[Ô])

dgVendasRealiz.DataSource = dt
====================================================================

percebi que ao passar o valor para varivel ela fica assim( 25/1/1980) sei que esse formato é americano, e tenho que usar o format, mas não to conseguindo.Sera isso mesmo o problema?
NICKOSOFT 16/10/2016 07:57:43
#468109
conversão
  CDate(string).ToString([Ô]dd/MM/yyyy[Ô]) 

verifique pq esta usando aspas simples na concatenação o q indica ser formato string e não formato data, não adianta qq conversão se mantiver as aspas simples
depende do banco muda o caractere na concatenação
VALRALA 16/10/2016 13:51:06
#468114
Amigo agora da indo sem erro, mas não preenche o GridView.

[txt-color=#0000f0]Dim dtInicial As String = Format(dtpDataInicial.Value, [Ô]dd/MM/yyyy[Ô]).ToString
Dim dtFinal As String = Format(dtpDataFinal.Value, [Ô]dd/MM/yyyy[Ô]).ToString[/txt-color]


Dim dt As New DataTable
Dim ds As New DataSet
Dim Con As New OleDbConnection

Con.ConnectionString = My.Settings.CN1
Con.Open()

Dim sql As String = [Ô] Select * FROM TBvendas WHERE datacompra BETWEEN [Ô] & dtInicial & [Ô] AND [Ô] & dtFinal & [Ô] [Ô]

Dim comando As New OleDbCommand(Sql, Con)
Dim da As New OleDbDataAdapter(comando)

da.Fill(dt)
da.Fill(ds, [Ô]TBvendas[Ô])

dgVendasRealiz.DataSource = dt

Con.Close()
Con.Dispose()

NICKOSOFT ta assim agora, ele vai sem dar erro, mas não preenche o Grid?

O que sera? Tem ideia
JABA 16/10/2016 16:54:41
#468115
Coloque esses campos como data na tabela e utiliza a tralha nas consultas. Assim:

Dim sql As String = [Ô] Select * FROM TBvendas WHERE datacompra BETWEEN #[Ô] & dtInicial & [Ô]# AND #[Ô] & dtFinal & [Ô]#[Ô]
NICKOSOFT 16/10/2016 16:57:26
#468116
vc mantem no erro de forma diferente...
vc insere uma string onde se esperava a data inicial e a data final....
dtinicial e dtfinal tem q ser date, e vc deve formatar a data no formato do banco, ai deve passar a funcionar....
como não precisa caracter pra fechar, isso AND [Ô] & dtFinal & [Ô] [Ô] pode ficar AND [Ô] & dtFinal
Tópico encerrado , respostas não são mais permitidas