Jump to content


Photo

Busca Entre Datas


  • Faça o login para participar
3 replies to this topic

#1 giutriv

giutriv

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 22/06/2009, 12:03

Estou com problemas na pesquisa entre datas que estou querendo realizar.

No meu banco são gravadas as datas de inclusão de um registro em um campo date/time com o formato: dd/mm/aaaa hh:mm:ss

Para realizar a pesquisa entre duas datas meu código é o seguinte:

[codebox]Set busca_cmd = Server.CreateObject ("ADODB.Command")
busca_cmd.ActiveConnection = MM_login_STRING
If (cliente = "selecione") Then
busca_cmd.CommandText = "SELECT * FROM jobs WHERE hora BETWEEN '" & data1 & "' AND'" & data2 & "' AND status LIKE '%" & mstatus & "%'"
Else If (mstatus = "selecione") Then
busca_cmd.CommandText = "SELECT * FROM jobs WHERE hora BETWEEN '" & data1 & "' AND '" & data2 & "' AND cliente LIKE '%" & cliente & "%'"
Else If (mstatus = "selecione" and cliente = "selecione") Then
busca_cmd.CommandText = "SELECT * FROM jobs WHERE hora BETWEEN '" & data1 & "' AND '" & data2 & "'"
Else
busca_cmd.CommandText = "SELECT * FROM jobs WHERE hora BETWEEN '" & data1 & "' AND '" & data2 & "' AND cliente LIKE '%" & cliente & "%' AND status LIKE '%" & mstatus & "%'"
End if
End if
End if
busca_cmd.Prepared = true

Set busca = busca_cmd.Execute[/codebox]


No meu formulário tenho 4 campos, data inicial, data final, cliente e status. Coloquei as condições caso eu queria realizar uma pesquisa apenas por data e status, apenas por data e cliente ou apenas por data.


Acontece que recebo o seguinte erro:

Tipo de erro:
Microsoft JET Database Engine (0x80040E07)
Tipo de dados imcompatível na expressão de critério.
/agcm2/gerarelatorio.asp, line 41


Tipo de navegador:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648)

Página:
POST 92 bytes to /agcm2/gerarelatorio.asp

POST Data:
dia=10&mes=10&ano=2000&dia2=25&mes2=10&ano2=2009&clientes=selecione&status=novo&enviar=gerar

Hora:
segunda-feira, 22 de junho de 2009, 11:58:27



O que devo mudar???


Obrigada!!!

#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 22/06/2009, 15:25

Tenta mudar o formato da data!!

Se vc estiver usando MsSQL ficaria assim com a função DATEPART:
<%
" ... hora BETWEEN datepart(day, '" & data1 & "') AND datepart(day, '" & data2 & "') ... "
%>
Mais informações: MSDN

Ou usar a função DAY:
<%
" ... hora BETWEEN day( '" & data1 & "') AND day( '" & data2 & "') ... "
%>
Mais informações: DAY

Edição feita por: Renan L. Queiroz, 22/06/2009, 15:28.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#3 giutriv

giutriv

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 23/06/2009, 16:47

Com datepart dá erro e com day não encontra registro nenhum...

#4 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 24/06/2009, 11:22

Caracas ... que viagem!!

Nessas duas funções acima coloquei como referência para a busca o campo DIAS!!
E neste seu caso tem que ser as horas!
Desconsidere a função DAY e na datepart atualize para HOUR (se não me engano)!!

Mas além da verificação da hora teria que ter uma para o dia não?!
Pq vários registros de dias possuem tal hora cadastrada.

Acho que isso resolveria:
"select * from jobs where hora between datepart(hour, '"& data1&"') and datepart(hour, '"& data2 &"')"&_
"and campoData between '"& data1 &"' and '"& data2 &"' and status like '%"& mStatus &"%'"
Outra coisa, vc está utilizando MsSQL?

Edição feita por: Renan L. Queiroz, 24/06/2009, 11:23.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq