PESQUISAR INTERVALO DE DATAS COM ACCESS

FEEHPEREZ 31/07/2013 10:00:24
#426746
Bom Dia pessoal eh o seguinte tenho um form que add os dados no banco e um dos dados e a data, no outro form coloquei dois DTPicker e um Botão pesquisar e um MSFlexGrid e queria que quando eu colocasse as data e clicasse no botão aparecesse o dados com os intervalos da datas escolhidas....

meu cod esta assim no botão.

Private Sub cmdpesq_Click()
If dtp_from = [Ô][Ô] And dtp_until = [Ô][Ô] Then
MSFlexGrid1.Enabled = False
vdata = [Ô][Ô]
vdespesa = [Ô][Ô]
vtipo = [Ô][Ô]
vvalorrec = [Ô][Ô]
vvalorpag = [Ô][Ô]
vobs = [Ô][Ô]

Else
MSFlexGrid1.Enabled = True
End If

If dtp_from = [Ô][Ô] And dtp_until = [Ô][Ô] Then
MSFlexGrid1.Rows = 2
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 0) = [Ô][Ô]
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = [Ô][Ô]
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = [Ô][Ô]
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = [Ô][Ô]
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = [Ô][Ô]
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = [Ô][Ô]
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = [Ô][Ô]
MSFlexGrid1.Rows = MSFlexGrid1.Rows - 1
Me.Caption = [Ô]Buscar Cliente[Ô]
Exit Sub
End If

MSFlexGrid1.Rows = 2

Connect

RS.Open [Ô]SELECT * FROM tblDespesas WHERE DATA like [ô][ô]%[Ô] & dtp_from & [Ô]%[ô]And[ô]%[Ô] & dtp_until & [Ô]%[ô][Ô], CON, adOpenStatic, adLockOptimistic



Do While Not RS.EOF
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 0) = RS.Fields(0).Value
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = RS.Fields(1).Value
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = RS.Fields(2).Value
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = RS.Fields(3).Value
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = RS.Fields(4).Value
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = RS.Fields(5).Value
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = RS.Fields(6).Value
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
RS.MoveNext
Loop

MSFlexGrid1.Rows = MSFlexGrid1.Rows - 1

regContador = CStr(RS.RecordCount)

If MSFlexGrid1.Rows = 2 Then
Me.Caption = [Ô]Buscar Cliente - [Ô] & regContador & [Ô] clientes encontrados[Ô]
Else
Me.Caption = [Ô]Buscar Cliente - [Ô] & regContador & [Ô] clientes encontrados[Ô]
End If

Disconnect

End Sub

Porem assim ele pesquisa apenas pela primeira data do dtp_from e não leva em consideração o segundo.

Quem puder me ajudar....

obrigado desde já pela força
ACCIOLLY 31/07/2013 11:27:26
#426759
deixa eu ver se entendi

vc quer fazer uma pesquisa em que os dados estejam entre data inicial e data final?

se sim utilize o método filter

a string é a seguinte [Ô]fieldDATA => [ô] [Ô] & txtdatainicial & [Ô] [ô] and fieldDATA =< [ô] [Ô] & txtdatafinal & [Ô] [ô] [Ô]

esse método eu utilizo mais com o dataenvironment mas creio q vc possa adaptar

blz!
FEEHPEREZ 01/08/2013 13:15:21
#426878
tentei com o seu codigo e ele da erro de sintaxe no AND
OMAR2011 01/08/2013 13:39:04
#426881
Tente assim.
RS.Open [Ô]SELECT * FROM tblDespesas WHERE DATA BETWEEN [ô][Ô] & format(dtp_from,[Ô]dd/mm/yyyy[Ô]) & [Ô][ô] And [ô][Ô] & format(dtp_until,[Ô]dd/mm/yyyy[Ô]) & [Ô][ô][Ô], CON, adOpenStatic, adLockOptimistic
FEEHPEREZ 02/08/2013 08:29:27
#426921
OMAR2011

Me ajudou muito e deu certo porem ele não pesquisa o intervalo das datas, mas sim soh as duas datas selecionadas....

exemplo....31/07/2013 e 02/08/2013 ele acha os dados dessas duas datas mas o dia 01/08/2013 não aparece....

VLW
SAMUKA 02/08/2013 10:33:09
#426930
Resposta escolhida
Tente isso:

[Ô]SELECT * FROM tblDespesas WHERE Format(DATA,[ô]MM/dd/yyyy[ô]) BETWEEN [ô][Ô] & Format$(dtp_from,[Ô]MM/dd/yyyy[Ô]) & [Ô][ô] And [ô][Ô] & Format$(dtp_until,[Ô]MM/dd/yyyy[Ô]) & [Ô][ô][Ô]

Normalmente, em Access o campo data armazena Data e Hora, com isso é preciso formatar o campo, caso contrario vai dar zica em relação a hora. Ou seja, vc teria que especificar que está pesquisando entre as 00:00hrs de um dia até as 23:59hrs do outro dia. Formatando o campo, vc evita a necessidade de especificar isso.
FEEHPEREZ 02/08/2013 12:01:44
#426938
agora deu certo valeu mesmo SAMUKA
Tópico encerrado , respostas não são mais permitidas