USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Cláusula SQL com BETWEEN
FredMP
SÃO PEDRO DA ALDEIA
RJ - BRASIL
Postada em 07/10/2005 11:40 hs            
Olá galera do VBWEB! Estou com um problema, e se alguém puder ajudar eu agradeço muito.
Possuo uma tabela "Vendas" e fiz uma consulta para retornar todo o conteúdo dela usando duas condições, preciso achar as vendas de um determinado cobrador que estejam entre uma data e outra. Daí eu fiz a cláusula SQL abaixo:
 
"SELECT * FROM Vendas WHERE cod_cobrador = " & codCobrador & " AND data >= " &
data1 & " AND data <= " & data2
 
tentei também o seguinte:
 
"SELECT * FROM Vendas WHERE cod_cobrador = " & codCobrador & " AND data BETWEEN " & data1 & " AND " & data2
 
A consultas estão corretas, pois não gera erro de sintaxe, porém, não retornam nenhum registro!
A tabela também possui registros que satisfazem a consulta.
As variáveis data1 e data2 também estão corretas, pois quando tento achar por exemplo as vendas maiores que data1 ele retorna corretamente os registros.
O problema é justamente esse, quando tento achar registros ENTRE duas datas ele não retorna nada!
     
VACA
LIMEIRA
SP - BRASIL
Postada em 07/10/2005 11:44 hs            
AND data >= datevalue('" &
data1 & "') AND data <= datevalue('" & data2 & "'"

"Quando estou fraco, aí então é que sou Poderoso"
     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 07/10/2005 23:53 hs            
Para campos do tipo data use # e formato mm/dd/yyyy
Para campos do tipo Texto (String) use '
então fica assim a sql:
 

SELECT * FROM Vendas WHERE cod_cobrador = " & codCobrador & " AND data BETWEEN #" & format(data1,"mm/dd/yyyy") & "# AND #" & format(data2,"mm/dd/yyyy") &  "#"

Se vc estiver gravando uma data como se fosse texto então não precisa do formato mm/dd/yyyy. Somente substitua as "#" por " ' "

Veja se dá certo... qq coisa é só postar

t+

obs: Usar ">=" e "<=" tb serve... :)

 
     
Jonas
SÃO PAULO
SP - BRASIL
Postada em 08/10/2005 12:19 hs            
É recomendável colocar cada critério entre parenteses, e não esquecer de colocar os valores entre aspas simples :
"SELECT * FROM Vendas WHERE (cod_cobrador = '" & codCobrador & "') AND (data between '" & data1 & "' and '" & data2 & "')"
 
Espero ter ajudado.
     
FredMP
SÃO PEDRO DA ALDEIA
RJ - BRASIL
Postada em 08/10/2005 16:30 hs            
Valeu galera! Funcionou. Eu misturei as dicas e ficou assim:
 
tbVendas.Open "SELECT * FROM Vendas WHERE (cod_cobrador = " & CodCob & _
") AND (data BETWEEN #" & Data1 & "# AND #" & Data2 & "#)", BD, adOpenStatic, adLockReadOnly
 
Obrigado!

 
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página