PESQUISA ENTRE DATAS
Bom dia, pessoal.
tenho um select entre datas que funciona beleza, só que quero que filtre os cadastro que não aparece nesta data.
exemplo: tenho um campo no cadastro de produtos, que se chama (ultimaVenda), toda vez que realizo um venda daquele produto, se atualiza este campo com a data da venda, gostaria de um select entre datas e que se filtre os produtos que não aparece naquele data que filtrei, tipo pra saber os produtos que não teve saida naquela data que filtrei.
tenho um select entre datas que funciona beleza, só que quero que filtre os cadastro que não aparece nesta data.
exemplo: tenho um campo no cadastro de produtos, que se chama (ultimaVenda), toda vez que realizo um venda daquele produto, se atualiza este campo com a data da venda, gostaria de um select entre datas e que se filtre os produtos que não aparece naquele data que filtrei, tipo pra saber os produtos que não teve saida naquela data que filtrei.
colega tente ser um pouco mais especifico, de preferancia, coloque os campos que usa para filtrar, ou coloque sua query que funciona, e como gostaria que funciona-se
Opá Boa tarde.
Assim, tenho um campo data na tabela tblProdutos, de nome (ultimaVenda). toda vez que o produto e vendido, e realizado um atualização neste campo, com a data da venda, tendo assim um controle neste produto sabendo a ultima vez que ele foi vendido.
tenho um form que tem tem campos, um se chama (txtDataInicial) e o outro (txtDataFinal) esses campos fazem um filtro entre datas no meu MSFLEXGRID.
EXEMPLO: QUANDO FAÇO O FILTRO ENTRE AS DATAS 01/01/2011 A 30/01/2011
APARECE TODOS OS CADASTRO COM A DATA FILTRADA ACIMA, ATé AE TUDO BEM, FUNCIONA BELEZA, SÓ QUE AO INVES DE OS CADASTROS COM A DATA FILTRADA, QUERO OS REGISTROS QUE NÃO ESTÃO ENTRE ESSAS DATAS, TIPO PRA FAZER UMA LISTA DE PRODUTOS QUE NÃO VENDERAM NESTA DATA.
ATENCIOSAMENTE
Assim, tenho um campo data na tabela tblProdutos, de nome (ultimaVenda). toda vez que o produto e vendido, e realizado um atualização neste campo, com a data da venda, tendo assim um controle neste produto sabendo a ultima vez que ele foi vendido.
tenho um form que tem tem campos, um se chama (txtDataInicial) e o outro (txtDataFinal) esses campos fazem um filtro entre datas no meu MSFLEXGRID.
EXEMPLO: QUANDO FAÇO O FILTRO ENTRE AS DATAS 01/01/2011 A 30/01/2011
APARECE TODOS OS CADASTRO COM A DATA FILTRADA ACIMA, ATé AE TUDO BEM, FUNCIONA BELEZA, SÓ QUE AO INVES DE OS CADASTROS COM A DATA FILTRADA, QUERO OS REGISTROS QUE NÃO ESTÃO ENTRE ESSAS DATAS, TIPO PRA FAZER UMA LISTA DE PRODUTOS QUE NÃO VENDERAM NESTA DATA.
ATENCIOSAMENTE
pelo que vc falou seria algo assim
sSQL = [Ô]SELECT * FROM tblProdutos WHERE UltimaVenda < #[Ô] & Format(txtDataIni.Text,[Ô]mm/dd/yyyy[Ô]) & [Ô]# OR UltimaVenda >#[Ô] & Format(txtDataFim,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
sSQL = [Ô]SELECT * FROM tblProdutos WHERE UltimaVenda < #[Ô] & Format(txtDataIni.Text,[Ô]mm/dd/yyyy[Ô]) & [Ô]# OR UltimaVenda >#[Ô] & Format(txtDataFim,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
Tenho um select com a finalidade parecida, é isso mesmo que o Marcelo postou, só que coloco <= e >= , pois sem isso, a data informada no formulário é ignorada, e só valem os valores entre elas.
bem filtrou, mais os produtos que foram vendidos entre as datas aparecem também, no caso não era para aparecer, e sim os produtos que não foram vendidos entre as datas.
Np Código do Marcelo subistitua o Or Pelo AND
é a substituição que o colega aleluiz sugeriu talvez resolva de vez.
Citação::
é a substituição que o colega aleluiz sugeriu talvez resolva de vez.
Desculpe Marcelo mas a solução do ALELUIZ não resolve. Se a data é menor que ontem, não pode ser AO MESMO TEMPO (and) maior que amanhã.
WANDSONSOUZA
O formato do campo ULTIMAVENDA é DATA ou STRING? Quando o data está armazenada como string, deve ser formatada com AAAA/MM/DD para uma perfeita pesquisa.
Quais as datas que foram preenchidas em TXTDATAINI e TXTDATAFIM (respectivamente)? Os objetos não estão invertidos?
verdade, acho que foi por isso que coloquei o OR
então a primeira query que apresentei é a correta, obrigado amigo EDEMIR, porém percebi também que pode não ser problema na query e sim na lógica.
então vamos rever
se toda vez que vc realiza uma venda a data é atualizada, então as datas atuais serão sempre as dos produtos vendidos.
se vc pretende listar os produtos não vendidos, então o ideal seria vc colocar uma data inicial até a data atual, em sua consulta.
ex: listar produtos que não foram vendidos desde 10/01/2011
então a consulta ideal seria esta
assim vc saberá dos produtos que não vendem desde uma data especifica, isto é o mais indicado, pois vc só usaria uma pesquisa entre data para produtos não vendidos se deseja-se saber quais não foram vendidos naquele periodo, porém como vc saberia se a data é atualizada a cada venda, ficando sempre a data da ultima venda, estou certo ou não?
ex:
vc vendeu um SOFA em 03/02/2011, depois efetuou uma outra venda em 07/04/2011 e por fim a ultima venda em 13/06/2011.
como vc vai consultar a venda de 03/02/2011 se a data foi atualizada pela ultima vez em 13/06/2011
analize e veja o que realmente deseja que seja apresentado em seu sistema, e altere caso seja necessário.
,
então a primeira query que apresentei é a correta, obrigado amigo EDEMIR, porém percebi também que pode não ser problema na query e sim na lógica.
então vamos rever
se toda vez que vc realiza uma venda a data é atualizada, então as datas atuais serão sempre as dos produtos vendidos.
se vc pretende listar os produtos não vendidos, então o ideal seria vc colocar uma data inicial até a data atual, em sua consulta.
ex: listar produtos que não foram vendidos desde 10/01/2011
então a consulta ideal seria esta
sSQL = [Ô]SELECT * FROM tblProdutos WHERE UltimaVenda <= #[Ô] & Format(txtDataIni.Text,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
assim vc saberá dos produtos que não vendem desde uma data especifica, isto é o mais indicado, pois vc só usaria uma pesquisa entre data para produtos não vendidos se deseja-se saber quais não foram vendidos naquele periodo, porém como vc saberia se a data é atualizada a cada venda, ficando sempre a data da ultima venda, estou certo ou não?
ex:
vc vendeu um SOFA em 03/02/2011, depois efetuou uma outra venda em 07/04/2011 e por fim a ultima venda em 13/06/2011.
como vc vai consultar a venda de 03/02/2011 se a data foi atualizada pela ultima vez em 13/06/2011
analize e veja o que realmente deseja que seja apresentado em seu sistema, e altere caso seja necessário.
,
Correto Edemir , sua expliação foi perfeita.
O Marcelo sim está correto (lógica) não tem pq determinar um periodo de duas datas e sim anterior a uma data pois é efetuado update
Ele terá problemas se agora em junho for tirar um relatório de março de produto não vendido caso ele tenha sido vendido em Abril.
Acho que a melhor forma de determinar o produto não vendido em certo perido seria cruzando a tabela produtos com tabela vendas , Filtraria os produtos vendidos entre duas datas com a tabela produtos os nul tabela vendas é os que não foram vendidos.
O Marcelo sim está correto (lógica) não tem pq determinar um periodo de duas datas e sim anterior a uma data pois é efetuado update
Ele terá problemas se agora em junho for tirar um relatório de março de produto não vendido caso ele tenha sido vendido em Abril.
Acho que a melhor forma de determinar o produto não vendido em certo perido seria cruzando a tabela produtos com tabela vendas , Filtraria os produtos vendidos entre duas datas com a tabela produtos os nul tabela vendas é os que não foram vendidos.
Tópico encerrado , respostas não são mais permitidas