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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Problemas com datas em consulta SQL
FredMP
SÃO PEDRO DA ALDEIA
RJ - BRASIL
Postada em 05/12/2005 15:06 hs            
Olá pessoal, estou com um problema ao tentar usar datas em consultas SQL.
Uso o BD Access e quando passo um intervalo de datas como variáveis em uma consulta, a consulta não me retorna nada! Não dá nenhum erro. Mas não retorna nada!
 
Por exemplo:
 
tbVendas.Open "SELECT * FROM Vendas WHERE (cod_cobrador = " & CodCob & _
") AND (data >= #" & Data1 & "# AND data <= #" & Data2 & "#)", BD, adOpenStatic, adLockReadOnly
 

O intrigante é que ao usar valores literais na consulta ela funciona perfeitamente:
 
tbVendas.Open "SELECT * FROM Vendas WHERE (cod_cobrador = " & CodCob & _
") AND (data >= #" & "2/8/2005" & "# AND data <= #" & "20/12/2005" & "#)", BD, adOpenStatic, adLockReadOnly
 

Já tentei usar variáveis do tipo Date, String, Variant, e tudo o que vcs possam imaginar! Nada deu certo. O que pode estar acontecendo?
 
Obs.: As variáveis estão com os valores corretos, pude verificar exibindo-as em um MsgBox.
 
Existe alguma forma especial para se tratar variáveis tipo data em consultas SQL no VB?
     
Joseph
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 05/12/2005 15:28 hs            
Olá, FredMP!
 
Vc poderia informar a origem de 'Data1' e 'Data2', isto é, de onde elas estão vindo para o código SQL, InputBox, TextBox etc. para que seu problema seja melhor analisado?
 
É importante observar também como as datas estão sendo armazenadas no bd.  
 
Talvez tenha que fazer conversões de dados, remover espaços destas variáveis etc. para poder usá-las na consulta.
 
 
Joseph
Técnico em Informática/Programador
São Paulo/SP

   
FredMP
SÃO PEDRO DA ALDEIA
RJ - BRASIL
Postada em 05/12/2005 23:18 hs            
As datas estão vindo de dois componentes DTPicker e são jogadas nas variáveis Data1 e Data2, que são do tipo Date. Depois utilizo essas variáveis na consulta como coloquei aí em cima. O campo data no banco tem o formato de data abreviada.
 
O que mais me intriga é que usando valores literais a consulta funciona perfeitamente, mas usando as variáveis não. Embora elas contenham valores corretos!
 
     
Daniel
Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 06/12/2005 06:33 hs            
VOCE NÃO PODE ESQUECER QUE SEMPRE QUE PASSAR PARAMETROS DE DATA EM CONSULTA SQL TERÁ QUE FAZE-LO NO FORMATO AMERICANO (MM/DD/YYYY).
 
TENTA USAR DA SEGUINTE FORMA:
1) CRIE ESSA FUNÇÃO:
Public Function G_Sqldata(T_Data As Date) As String
    'Monta o padrão de gravação de data em SQL
On Error GoTo Err_G_Sqldata
    Dim Tp_Data As String, Tp_Hora As String
    Dim T_data2 As Date
    If IsNull(T_Data) Then
        T_data2 = #1/1/1900#
    Else
        T_data2 = T_Data
    End If
    Tp_Data = Month(T_data2) & "/" & Day(T_data2) & "/" & Year(T_data2)
    If Hour(T_data2) > 0 Or Minute(T_data2) > 0 Or Second(T_data2) > 0 Then
        Tp_Hora = " " & Hour(T_data2) & ":" & Minute(T_data2) & ":" & Second(T_data2)
    End If
    G_Sqldata = "#" & Tp_Data & Tp_Hora & "#"
Exit_G_Sqldata:
    Exit Function
Err_G_Sqldata:
    MSGBOX"Erro ao Converter a data"
    GoTo Exit_G_Sqldata
End Function
2) NA SQL PASSE DA SEGUINTE FORMA:
"SELECT * FROM Vendas WHERE (cod_cobrador = " & CodCob & _
") AND (data >= " & G_Sqldata(Data1) & " AND data <= " & G_Sqldata(Data2 & ")", BD, adOpenStatic, adLockReadOnly

dsmn
     
Joseph
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 06/12/2005 07:06 hs            
OK!
 
O 'DTPicker' retorna, em sua propriedade 'Value', um valor do tipo 'Variant' e vc deve
convertê-lo para o tipo 'Date'.
 
Teste o seguinte:
 
Data1 = CDate(DTPicker1.Value)
Data2 = CDate(DTPicker2.Value)
 
É lógico, usando os nomes que tenha dado aos 'DTPickers'. Verifique também se estes não estão retornando valores nulos. Por fim, retire o '#' do código SQL.
 
 
Joseph
Técnico em Informática/Programador
São Paulo/SP

TÓPICO EDITADO
 
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