PESQUISA ENTRE DATAS

USUARIO.EXCLUIDOS 13/06/2011 10:01:20
#376608
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.
MARCELO.TREZE 13/06/2011 10:13:53
#376612
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
USUARIO.EXCLUIDOS 13/06/2011 14:54:42
#376629
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
MARCELO.TREZE 14/06/2011 07:58:19
#376674
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[Ô]) & [Ô]#[Ô]

KIKO.WIZZ 14/06/2011 09:16:52
#376683
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.
USUARIO.EXCLUIDOS 14/06/2011 10:17:26
#376693
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.
ALELUIZ 14/06/2011 13:02:50
#376708
Np Código do Marcelo subistitua o Or Pelo AND
MARCELO.TREZE 14/06/2011 13:43:50
#376713
é a substituição que o colega aleluiz sugeriu talvez resolva de vez.
EDERMIR 14/06/2011 21:38:52
#376781
Resposta escolhida
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?
MARCELO.TREZE 15/06/2011 00:15:50
#376794
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

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.


,
ALELUIZ 15/06/2011 15:07:08
#376841
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.
Tópico encerrado , respostas não são mais permitidas