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!!!

Busca Entre Datas
Started By giutriv, 22/06/2009, 12:03
3 replies to this topic
#1
Posted 22/06/2009, 12:03
#2
Posted 22/06/2009, 15:25
Tenta mudar o formato da data!!
Se vc estiver usando MsSQL ficaria assim com a função DATEPART:
Ou usar a função DAY:
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:
#3
Posted 23/06/2009, 16:47
Com datepart dá erro e com day não encontra registro nenhum...
#4
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:
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:
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)