Pessoal tenho um problema para poder fazer consulta entre datas.
Não consegui. Não teve santo que fizesse o troço dar certo.
Usei até o between para tentar fazer uma busca entre datas, mas nada deu certo... então tive de desenvolver um algorítimo de próprio punho...
---> Compartilharei com quem quiser...
<%
'==== Chamando as strings de cod_curso e Cod_funcionario
Cod_Curso = request.QueryString("Cod_Curso") 'String que busca por curso
Cod_Funcionario = request.QueryString("Cod_Funcionario") 'String que busca por curso
'========= VERIFICANDO SE AS DUAS DATAS SÃO MESMO DATAS VÁLIDAS ===============================
If Not IsDate(request.QueryString("data1")) OR Not IsDate(request.QueryString("data2")) then
response.Write "<br> Alguma das datas digitadas está inválida!<br>"
if Not IsDate(request.QueryString("data1")) then
response.Write " <span style=""color:#FF0000;font-weight:bold"">A data (inicial) "& request.QueryString("data1") & " não é válida</span><br>"
end if
if Not IsDate(request.QueryString("data2")) then
response.Write " <span style=""color:#FF0000;font-weight:bold"">A data (final) "& request.QueryString("data2") & " não é válida</span><br>"
end if
response.End
end if
'========= FIM DE VERIFICAR SE AS DUAS DATAS SÃO MESMO DATAS VÁLIDAS ==========================
'========= VERIFICANDO SE ALGUM CAMPO DE DATA ESTÁ VAZIO ======================================
if IsEmpty(request.QueryString("data1")) OR IsEmpty(request.QueryString("data2")) then
response.Write "As duas datas devem ser digitadas corretamente"
response.End
end if
'========= FIM DE VERIFICAR SE ALGUM CAMPO DE DATA ESTÁ VAZIO =================================
'========= VERIFICANDO SE A PRIMEIRA DATA É MENOR QUE A SEGUNDA DATA ==========================
if DateDiff("d",request.QueryString("data1"),request.QueryString("data2")) < 0 then
response.Write "A data inicial ("& request.QueryString("data1") &") deve ser menor que a data final ("& request.QueryString("data2") &")!"
response.End
end if
'========= FIM DE VERIFICAR SE A PRIMEIRA DATA É MENOR QUE A SEGUNDA DATA =====================
data1 = FormatDateTime(request.QueryString("data1"),2)
data2 = FormatDateTime(request.QueryString("data2"),2)
'==== CRIANDA UMA ARRAY DA DATA PARA PODER SEPARAR EM DIA, mês, E ANO
arrdata1 = split(data1,"/")
arrdata2 = split(data2,"/")
'=== VERIFICAR QUAL A DIFERENÇA DE ANO ENTRE A DATA INICIAL E FINAL
verificarAno = int(arrdata2(2)) - int(arrdata1(2))
if verificarAno < 0 then 'Caso diferença de anos seja menor que 0(zero)
response.Write "Você deve digitar o primeiro ano maior que o segundo ano<br>"
elseif int(verificarAno) = int(0) then 'Caso diferença de anos seja 0(zero)
for xMes = arrdata1(1) to arrdata2(1)
if int(xMes) < int(10) then
xMes = "0"& int(xMes)
else
xMes = xMes
end if
if int(xMes) < int(arrdata2(1)) then
'=== VERIFICANDO SE O LOOP DO DIA VAI COMEÇAR EM 1 OU DIA DO mês INICIAL
if int(xMes) = int(month(data1)) and int(year(data1)) < int(year(data1)+1) then
diaInicial = day(data1)
else
diaInicial = 1
end if
for x = diaInicial to 31
if int(x) < int(10) then
x = "0"& x
else
x = x
end if
'===== VERIFICANDO SE A DATA É VÁLIDA - POR EXEMPLO. NÃO HÁ 31/02/2006
if IsDate(x &"/"& xMes &"/"& arrdata1(2)) then
dataBusca = dataBusca &" D_Contrato='"& x &"/"& xMes &"/"& arrdata1(2) &"' OR D_Contrato='"& int(x) &"/"& int(xMes) &"/"& arrdata1(2) &"' OR"
else
dataBusca = dataBusca
end if
next
else
'=== VERIFICANDO SE O LOOP DO DIA VAI COMEÇAR EM 1 OU DIA DO mês INICIAL
if int(xMes) = int(month(data1)) and int(year(data1)) < int(year(data1)+1) then
diaInicial = day(data1)
else
diaInicial = 1
end if
for x = diaInicial to int(arrdata2(0))
if int(x) < int(10) then
x = "0"& x
else
x = x
end if
'===== VERIFICANDO SE A DATA É VÁLIDA - POR EXEMPLO. NÃO HÁ 31/02/2006
if IsDate(x &"/"& xMes &"/"& arrdata1(2)) then
dataBusca = dataBusca &" D_Contrato='"& x &"/"& xMes &"/"& arrdata1(2) &"' OR D_Contrato='"& int(x) &"/"& int(xMes) &"/"& arrdata1(2) &"' OR"
else
dataBusca = dataBusca
end if
'dataBusca = dataBusca &" D_Contrato="& x &"/"& xMes &"/"& arrdata1(2) &" OR<br>"
next
end if
next
else
for xAno = arrdata1(2) to arrdata2(2)
if int(xAno) < int(arrdata2(2)) then
for xMes = int(arrdata1(1)) to 12
'=== VERIFICANDO SE O LOOP DO DIA VAI COMEÇAR EM 1 OU DIA DO mês INICIAL
if int(xMes) = int(month(data1)) and int(year(data1)) < int(year(data1)+1) then
diaInicial = day(data1)
else
diaInicial = 1
end if
for x = diaInicial to 31
if int(x) < int(10) then
x = "0"& int(x)
else
x = x
end if
if int(xMes) < int(10) then
xMes = "0"& int(xMes)
else
xMes = xMes
end if
'===== VERIFICANDO SE A DATA É VÁLIDA - POR EXEMPLO. NÃO HÁ 31/02/2006
if IsDate(x &"/"& xMes &"/"& xAno) then
dataBusca = dataBusca &" D_Contrato='"& x &"/"& xMes &"/"& xAno &"' OR D_Contrato='"& int(x) &"/"& int(xMes) &"/"& arrdata1(2) &"' OR"
else
dataBusca = dataBusca
end if
'dataBusca = dataBusca & x &"/"& xMes &"/" & xAno &" OR<br>"
next
next
'end if
elseif int(xAno) >= int(arrdata2(2)) then
for xMes = 1 to int(arrdata2(1))
'=== VERIFICANDO SE O LOOP DO DIA VAI COMEÇAR EM 1 OU DIA DO mês INICIAL
if int(xMes) = int(month(data1)) and int(year(data1)) < int(year(data1)+1) then
diaInicial = day(data1)
else
diaInicial = 1
end if
for x = diaInicial to 31
if int(x) < int(10) then
x = "0"& int(x)
else
x = x
end if
if int(xMes) < int(10) then
xMes = "0"& int(xMes)
else
xMes = xMes
end if
'===== VERIFICANDO SE A DATA É VÁLIDA - POR EXEMPLO. NÃO HÁ 31/02/2006
if IsDate(x &"/"& xMes &"/"& xAno) then
dataBusca = dataBusca &" D_Contrato='"& x &"/"& xMes &"/"& xAno &"' OR D_Contrato='"& int(x) &"/"& int(xMes) &"/"& arrdata1(2) &"' OR"
else
dataBusca = dataBusca
end if
'dataBusca = dataBusca & x &"/"& xMes &"/" & xAno &" OR<br>"
next
next
end if
next
end if
dataBusca = replace(dataBusca,"'","#") 'REPLACANDO (') POR (#) PARA PODER FAZER A BUSCA POR DATAS, pois o banco geral está usando data
'====== FAZENDO A VERIFICAÇÃO SE A BUSCA SERÁ POR UM CURSO ESPECÍFICO OU NÃO
if int(Cod_Curso) = "" OR int(Cod_Curso) = 0 then
dataBusca = dataBusca
else
dataBusca = replace(dataBusca,"OR"," AND Cod_Curso="& Cod_Curso &" OR")
end if 'Fim da verificação se a busca será feita pelo curso especifico
'====== FAZENDO A VERIFICAÇÃO SE A BUSCA SERÁ POR UM FUNCIONARIO ESPERICIFO OU NÃO
if int(Cod_Funcionario) = "" OR int(Cod_Funcionario) = 0 then
dataBusca = dataBusca
else
dataBusca = replace(dataBusca,"OR"," AND Cod_Indicacao="& Cod_Funcionario &" OR")
end if 'Fim da verificação se a busca será feita pelo curso especifico
dataBusca = mid(dataBusca,1,len(dataBusca)-3) 'Esta string tira o ultimo "OR" do final da string dataBusca, pois o loop acrescenta demais
response.Write dataBusca
----> O PROBLEMA!
Quanto faço busca de data que tem dias maiores que 12 então ele busca normalmente.
Ex: 13/05/2006
... Mas se eu buscar uma data inferior a 12 então ele entede como data americana (mm/dd/aaaa)
alguém sabe como eu faço para que este burro do computador entenda que eu estou no brasil?
Pergunta
marcos_804
Pessoal tenho um problema para poder fazer consulta entre datas.
Não consegui. Não teve santo que fizesse o troço dar certo.
Usei até o between para tentar fazer uma busca entre datas, mas nada deu certo... então tive de desenvolver um algorítimo de próprio punho...
---> Compartilharei com quem quiser...
----> O PROBLEMA!
Quanto faço busca de data que tem dias maiores que 12 então ele busca normalmente.
Ex: 13/05/2006
... Mas se eu buscar uma data inferior a 12 então ele entede como data americana (mm/dd/aaaa)
alguém sabe como eu faço para que este burro do computador entenda que eu estou no brasil?
Sem o sessio.LCID, cujo já tentei tambem
Desde já agradeço a atenção de todos.!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.