ERRO AO COMPARAR DATAS, BANCO ACCESS

W8.LISBOA 16/03/2015 23:00:55
#445283
Olá pessoal,

Estou com um problema ao tentar fazer uma busca entre datas no banco access, até consigo fazer a consulta e ter um retorno mas não de forma que gostaria.
Ex: no banco tenho datas na seguinte ordem:
01/01/2015
02/01/2015
03/01/2015
Sempre que busco pelo intervalo entre 01/01/2015 a 03/01/2015 a consulta só me retorna os dois primeiros registros, acredito que seja algum erro na clausula, segue o código:
      Private Sub filtra_data()
Dim datainicio As String
Dim datafinal As String
datainicio = TextBox4.Text
datafinal = TextBox5.Text

Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô]SELECT Documento, Data, Valor, Situacao FROM Cond_Pagamentos WHERE Data >= #[Ô] & datainicio & [Ô]# and Data <= #[Ô] & datafinal & [Ô]#[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
con.Close()

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Sub


Alguma sugestão?
FABRICIOWEB 17/03/2015 06:07:47
#445284
Dim datainicio As date
Dim datafinal As date
datainicio = DTPicker1
datafinal = DTPicker2

Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String
sql = [Ô]SELECT Documento, Data, Valor, Situacao FROM Cond_Pagamentos WHERE Data BetWeen #[Ô] & Format$(datainicio, [Ô]mm/dd/yyyy[Ô]) & [Ô]# And #[Ô] & Format$(datafinal , [Ô]mm/dd/yyyy[Ô]) & [Ô]#

tenta assim
OMAR2011 17/03/2015 09:06:42
#445286
Resposta escolhida
Tente isto.
datainicio = Convert.ToDateTime(TextBox4.Text)
datafinal = Convert.ToDateTime(TextBox5.Text)
W8.LISBOA 17/03/2015 17:13:41
#445302
OMAR2011, A sua solução funcionou, mas somente no formato [Ô] mm/dd/yyyy [Ô], como faço para colocar no padrão [Ô] dd/mm/yyyy [Ô] ??

segue o código ate aqui:

  Private Sub filtra_data()
Dim datainicio As Date
Dim datafinal As Date
datainicio = Convert.ToDateTime(TextBox4.Text)
datafinal = Convert.ToDateTime(TextBox5.Text)

Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô]SELECT Documento, Data, Valor, Situacao FROM Cond_Pagamentos WHERE Data >= #[Ô] & datainicio & [Ô]# and Data <= #[Ô] & datafinal & [Ô]#[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
con.Close()

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Sub
OMAR2011 17/03/2015 19:29:55
#445305
Usei o Access 2003.
Testei umas formatação de datas não tive muito sucesso.
Tive resultados melhores com o DateTimePicker.
As datas nos textbox era = 01/03/2015 e 03/03/2015
datainicio = Format(dtpDataInicio.Value, [Ô]MM/dd/yyyy[Ô])
datafinal = Format(dtpDataFinal.Value, [Ô]MM/dd/yyyy[Ô])
Desta forma o resultado foi expressivo.
A outra forma com sucesso foi deste jeito.

Dim hoje As String = TextBox1.Text
Dim dia As String = hoje.Substring(0, 3)
Dim mes As String = hoje.Substring(3, 3)
Dim ano As String = hoje.Substring(6, 4)

hoje = mes & dia & ano
datainicio = hoje
Dim hoje1 As String = TextBox2.Text
Dim dia1 As String = hoje1.Substring(0, 3)
Dim mes1 As String = hoje1.Substring(3, 3)
Dim ano1 As String = hoje1.Substring(6, 4)

hoje = mes & dia & ano
datafinal = hoje1
Foi o meu teste.

W8.LISBOA 18/03/2015 22:34:46
#445335
OMAR2011, Até que enfim consegui...fiz pequenas modificações no seu ultimo código e deu tudo certo!!! Valeu por contribuir seus conhecimentos, segue o código final:

   Private Sub filtra_data()

Dim datainicio As Date
Dim datafinal As Date

Dim hoje As String = TextBox4.Text
Dim dia As String = hoje.Substring(0, 3)
Dim mes As String = hoje.Substring(3, 3)
Dim ano As String = hoje.Substring(6, 4)
hoje = dia & mes & ano
datainicio = hoje

Dim hoje1 As String = TextBox5.Text
Dim dia1 As String = hoje1.Substring(0, 3)
Dim mes1 As String = hoje1.Substring(3, 3)
Dim ano1 As String = hoje1.Substring(6, 4)
hoje1 = dia1 & mes1 & ano1
datafinal = hoje1

Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô]SELECT Documento, Data, Valor, Situacao FROM Cond_Pagamentos WHERE Data >= #[Ô] & datainicio & [Ô]# and Data <= #[Ô] & datafinal & [Ô]#[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
con.Close()

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Sub


OMAR2011 19/03/2015 08:18:01
#445339
Muito bom, mostre qual foi a mudança e feche o tópico para
não ficar aberto.
Valeu.
Tópico encerrado , respostas não são mais permitidas