PESQUISA POR DATA
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.
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.
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
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