PESQUISA POR DATA

IRANPORSCHE 24/03/2012 18:49:59
#398166
Galera, estou criando uma planilha de controle de estoque, onde faço uma consulta de entrada e saída por período. Porém quando estou informando as data a formula esta reconhecendo somente o dia.
Ex: Dois produtos 1º e 2º 15/01/2012 e 18/02/2012 respectivamente.
E feita uma consulta de 01/01/2012 a 17/01/2012, e informado somente o 1º.
E feita uma segunda consulta de 17/02/2012 a 29/02/2012, e informado somente o 2º.
Porém se for feita uma consulta de 10/01/2012 a 20/01/2012, e informado os dois.
Ou outra de 10/02/2012 a 20/02/2012, também busca os dois.
Segue formula abaixo.

Function pesquisa_entradasaida()

Dim I As Integer

Set BANCO = OpenDatabase(ThisWorkbook.Path & [Ô]\[Ô] & ThisWorkbook.Name, False, False, [Ô]Excel 8.0[Ô])

If Controle_de_Estoque.OptionButton_Movimento_Entrada.Value = True Then

Set TABELA = BANCO.OpenRecordset([Ô]select * from[Mov.Entrada$] where Data >= [ô][Ô] & Controle_de_Estoque.TextBox_Movimento_DataInicial & [Ô][ô] and Data <= [ô][Ô] & Controle_de_Estoque.TextBox_Movimento_DataFinal & [Ô][ô] ; [Ô])

Else

Set TABELA = BANCO.OpenRecordset([Ô]select * from [Mov.Saida$] where Data >= [ô][Ô] & Controle_de_Estoque.TextBox_Movimento_DataInicial & [Ô][ô] and Data <= [ô][Ô] & Controle_de_Estoque.TextBox_Movimento_DataFinal & [Ô][ô] ; [Ô])

End If

Controle_de_Estoque.ListBox2.Clear

If Controle_de_Estoque.OptionButton_Movimento_Entrada.Value = True Or Controle_de_Estoque.OptionButton_Movimento_Saida.Value = True Then

Do Until TABELA.EOF

Controle_de_Estoque.ListBox2.AddItem TABELA([Ô]Nota_Fiscal[Ô])

Controle_de_Estoque.ListBox2.List(I, 1) = TABELA([Ô]Cod_Produto[Ô])

Controle_de_Estoque.ListBox2.List(I, 2) = TABELA([Ô]Produto[Ô])

Controle_de_Estoque.ListBox2.List(I, 3) = TABELA([Ô]Data[Ô])

Controle_de_Estoque.ListBox2.List(I, 4) = TABELA([Ô]Tipo[Ô])

Controle_de_Estoque.ListBox2.List(I, 5) = TABELA([Ô]Qtd[Ô])

Controle_de_Estoque.ListBox2.List(I, 6) = Format(TABELA([Ô]VL_Unitario[Ô]), [Ô]currency[Ô])

Controle_de_Estoque.ListBox2.List(I, 7) = Format(TABELA([Ô]VL_TOTAL[Ô]), [Ô]currency[Ô])

Controle_de_Estoque.ListBox2.List(I, 8) = Format(TABELA([Ô]Valor_MaodeObra[Ô]), [Ô]currency[Ô])

I = I + 1

TABELA.MoveNext
Loop
End If

BANCO.Close

End Function

Muito obrigado.
MARCELO.TREZE 26/03/2012 00:11:28
#398239
Bom o que está acontecendo é o seguinte:

Com certeza este campo (Data) deve estar definido como Texto, e quando um campo Data é definido como texto ele é lido da seguinte maneira

vc diz que possui dois registros 15/01/2012 e 18/02/2012 e

E feita uma consulta de 01/01/2012 a 17/01/2012, e informado somente o 1º.
E feita uma segunda consulta de 17/02/2012 a 29/02/2012, e informado somente o 2º.
Porém se for feita uma consulta de 10/01/2012 a 20/01/2012, e informado os dois.
Ou outra de 10/02/2012 a 20/02/2012, também busca os dois.

vou explicar quando um campo é texto serão considerados para consulta do primeiro ao ultimo caracteres, e para entendermos melhor basta tirarmos as barras das datas para termos o seguinte

os registros 15012012 e 18022012

quanto a consulta 01012012 e 17012012, podemos dizer que numericamente 15012012 é maior que 01012012 e menor que 17012012
quanto a consulta 17022012 a 29022012, podemos dizer que numericamente 18022012 é maior que 17022012 e menor que 29022012

onde vc vai entender o que acontece

onde a consulta 10012012 a 20012012, podemos dizer que tanto 15012012 quanto á 18022012 estão entre 10012012 a 20012012

repare
10012012
[txt-color=#e80000]15012012 [/txt-color]
[txt-color=#e80000]18022012 [/txt-color]
20012012

e o mesmo acontece com a outra consulta, ou seja é lido não como data e sim a sequencia como numérica

bom ao final a solução é simples mude o campo (data) para Data/hora,
porém se insistir em salvar como texto salve no seguinte formato AAAA/MM/DD, e leia no mesmo formato desta maneira a consulta dará certo

mas minha dica é mude para Data/hora
Tópico encerrado , respostas não são mais permitidas