Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros amigos
Estou com um problema tipico de data no asp
tenho pouco tempo de desenvolvimento por isso peço ajuda de vocês
O Problema:
Tenho 2 colunas
A primeira :
d_now = date()
d = split(DateAdd("d",1,d_now),"/")
data = d(2) & d(1) & d(0)
'response.Write(venc)
reagendamento = rs ("reagendamento")
menorvencimento = rs ("menorvencimento")
'
d_now1 = menorvencimento
d1 = split(DateAdd("d",1,d_now1),"/")
venc = d1(2) & d1(1) & d1(0)
if data < venc then
legenda = ("A Vencer")
coratual1 = "#00CC00"
elseif data > venc then
legenda = ("Vencido")
coratual1 = "red"
elseif data = venc then
legenda = ("Hoje")
coratual1 = "yellow"
end if
blz está funcionando normal.
na segunda coluna
eu quero a mesma coisa só com as cores e incluindo o reagendamento for = a vazio ficar cinza
if data < venc then
coratual1 = "#00CC00"
elseif data > venc then
coratual1 = "red"
elseif data = venc then
coratual1 = "yellow"
elseif reagendamento = "" then
coratual1 = "grey"
end if
creio eu que não funciona por que vazio é menor que data por isso fica vermelho
por favor me dem uma solução
não sei fazer
com case tentei fazer alguma coisa
que fi em forum mais tbm deu errado
ps tentei fazer direto no sql tbm n deu
em março de 2012 eu tive um problema paricido como este só resolve com a ajuda de um analista de suporte...
no lugar do "" coloque is null.
if data is null then
'codigo
end if
lembre-se de que o campo no bd deve aceitar nulo
Se o tipo da coluna estiver como Date se nao for enviando nada para o banco de dados para esse coluna ele vai ser prenchido com 0000-00-00.
já tentei....
converto no sql quando nulo ficar " " com espaço
ai trabalho com "espaço" não é nulo mais , mais continua sendo menor que a data atual
RsilvaNeto isso é um fórum serio para profissionais na área . quer divulgar links vai procurar a sua turma
vou tentar tirar a conversão do sql para " ", deixar null e tentar fazer isso GilbertoJR
Gilberto Jr Não deu certo
tentei tbm
if venc = data then
coratual2 = "yellow"
elseif data > venc and reagendamento = " " then
coratual2 = "grey"
elseif data > venc and reagendamento > data then
coratual2 = "#00CC00"
elseif data > venc and reagendamento < data then
coratual2 = "red"
end if
não deu tbm
tentou assim:
<%
data=now
venc=null ' altere para =now, =now-5, venc=now+5
if data < venc then
coratual1 = "#00CC00"
elseif data > venc then
coratual1 = "red"
elseif data = venc then
coratual1 = "yellow"
else 'subjulgando que não satisfaça nenhum dos critérios acima, tipo no SELECT CASE
coratual1 = "grey"
end if
response.write(coratual1)
%>
fiz uns teste e rolou normal
só não dá certo por 2 coisas
estou trabalhando isso dentro de um loop
e antes do else tem o se for menor que data atual fica vermelho e " " é menor que data atual ai ja fica vermelho e não chega rodar o else
aconselho a habilitar o valor nulo no bd e faça a comparação no if ou select case, e vc pode por exemplo antes de inserir no bd verificar se o valor é"" e colocar um valor padrão, dae vc faz a comparação neste valor, entendeu
já fiz isso xanburzum se preferir mando o codigo inteiro pra vc testar
ta funcionando tudo o menor o maior o igual só não funciona o campo quando é nulo creio eu por que eu trato isso antes como menor que data atual
<%
sql = "SELECT c.parcela12,cl.numeroctrabalho,cl.codcliente as codcliente,cl.nome as nome,cl.telefone,cl.cpf,cl.restricao,cl.ativo,cl.loja, c.codcliente as ccodcliente, CONVERT(VARCHAR(20), c.reagendamento, 103) as reagendamento, c.modulo, c.parcelas,c.numerodacobranca, c.valor,c.valorbonus,CONVERT(VARCHAR(20), c.agendamento, 103) agendamento,isnull(CONVERT(VARCHAR(20), c.menorvencimento, 103),'01-01-0000') as menorvencimento FROM cliente as cl left join cobranca as c on cl.codcliente = c.codcliente where ativo = 'sim' and parcela12 <> 'quitado'"
set rs = conexao.execute (sql)
ct = rs ("numeroctrabalho")
codcliente = rs ("codcliente")
parcela12 = rs ("parcela12")
response.Write("<table align='center' cellpadding='0' cellspacing='0' style='margin: 0px; font-size:12px;' border='1'>")
response.Write("<tr class='teste'>")
response.Write("<td align='center' width='50px'>Legenda</td>")
response.Write("<td align='center' width='30px'> </td>")
response.Write("<td align='center' width='60px'>Loja</td>")
response.Write("<td align='center' width='250px'>Nome</td>")
response.Write("<td align='center' width='50px'>Modulo</td>")
response.Write("<td align='center' width='50px'>Parcelas</td>")
response.Write("<td align='center' width='40px'>Valor</td>")
response.Write("<td align='center' width='40px'>Vbonus</td>")
response.Write("<td align='center' width='100px'>Agendamento</td>")
response.Write("<td align='center' width='100px'>Reagendamento</td>")
response.Write("<td align='center' width='100px'>Menorvencimento</td>")
response.Write("<td align='center' width='50px'>Ativo</td>")
response.Write("<td align='center' width='50px'>Reagendar</td>")
response.Write("</table>")
response.write "<table style='font-size:12px; width='100%' border='0'>"
coratual = "#ffffff"
coratual2 = "#ffffff"
do while not rs.EOF
if parcela12 = "quitado" then
legenda = "Quitado"
else
reagendamento = rs ("reagendamento")
menorvencimento = rs ("menorvencimento")
d_now = date()
d = split(DateAdd("d",1,d_now),"/")
data = d(2) & d(1) & d(0)
reagendamento = rs ("reagendamento")
menorvencimento = rs ("menorvencimento")
'
d_now1 = menorvencimento
d1 = split(DateAdd("d",1,d_now1),"/")
venc = d1(2) & d1(1) & d1(0)
teste = date()
''-------AQUI FUNCIONA CORRETO POIS NÃO TENHO DATA FAZIA-----------------------
if data < venc then
legenda = ("A Vencer")
coratual1 = "#00CC00"
elseif data > venc then
legenda = ("Vencido")
coratual1 = "red"
elseif data = venc then
legenda = ("Hoje")
coratual1 = "yellow"
end if
'' TERMINA ------------------------------------------
'INICIA O PROBLEMA
if reagendamento < Ddata then
coratual2 = "#00CC00"
elseif reagendamento > data then
coratual2 = "red"
elseif data = reagendamento then
coratual2 = "yellow"
else
coratual2 = "grey"
end if
end if
response.write "<tr>"
response.write "<td width='50px' bgcolor="&coratual1&">"&(Legenda)
response.write "<td width='30px' bgcolor="&coratual2&">"&(" ")
response.write "<td width='60px' bgcolor="&coratual&">"& rs("Loja")
'response.write "<td width='280px' bgcolor="&coratual&"><a href='teste.asp?codcliente="& rs("codcliente")&"' >"& rs("nome")&"</a>"
response.write "<td width='250px' bgcolor="&coratual&"><a href='cobranca1.asp?codcliente="& rs("codcliente")&"' >"& rs("nome")&"</a>"
response.write "<td width='50px' bgcolor="&coratual&">"& rs("modulo")
response.write "<td width='50px' bgcolor="&coratual&">"& rs("parcelas")
response.write "<td width='40px' bgcolor="&coratual&">"& rs("valor")
response.write "<td width='40px' bgcolor="&coratual&">"& rs("valorbonus")
response.write "<td width='100px' bgcolor="&coratual&">"& rs("agendamento")
response.write "<td width='100px' bgcolor="&coratual&">"& rs("reagendamento")
response.write "<td width='100px' bgcolor="&coratual&">"& rs("menorvencimento")
response.write "<td width='50px' bgcolor="&coratual&">"& rs("Ativo")
response.write "<td width='50px' bgcolor="&coratual&"><a href='reagendar.asp?ncobranca="& rs("numerodacobranca")&"' >Reagendar</a>"
rs.movenext
if coratual = "#ffffff" then
coratual = "#cccccc"
else
coratual = "#ffffff"
end if
loop
%>
se eu retirar o else grey ai em sima funciona namoral o verde vermelho e amarelo
so quando tento incluir vazio na parada que da problema
fiz esse teste fora do sistema tbm naum funfou
<%
data = 1
vencimento = ""
if vencimento = data then
teste = "yellow"
elseif vencimento > data then
teste = "green"
elseif vencimento = "" and vencimento < data then
teste = "grey"
elseif vencimento <> "" and vencimento < data then
teste = "red"
end if
response.write "<table bgcolor="&teste&">oi</table>"
response.write "<table>"
response.write "<tr width='50%'>"
response.write "<td bgcolor="&teste&" >"
response.Write("uagbjffab")
response.write " </td>"
response.write " </tr>"
response.write " </table>"
%>
tente com o IsDate
If not IsDate(vencimento) then
teste = "grey"
problema resolvido !
Coloquei no sql para quando for null passar o campo para 0000/00/00
isnull(CONVERT(VARCHAR(20), c.reagendamento, 103),'0000/00/00') as reagendamento
depois fiz a comparação:
venc1 = rs ("reagendamento")
if venc1 = "0000/00/00" then
venc1 = "0000-00-00"
else
d_now2 = reagendamento
'Aqui a variavel venc1 retira as barras e coloca "yyyymmdd"
d2 = split(DateAdd("d",1,d_now2),"/")
venc1 = d2(2) & d2(1) & d2(0)
end if
Ai consegui trabalhar certinho com o resto:
if venc1 = "0000-00-00" then
coratual2 = "grey"
elseif venc1 < data then
coratual2 = "red"
elseif venc1 > data then
coratual2 = "green"
else
coratual2 = "yellow"
end if
FIM.
AS VEZES UMA BOBERINHA ATRAPALHA NOSSA VIDA , FOI PURA FALTA DE ATENÇÃO
EU NÃO ESTAVA RETIRANDO AS BARRAS DA VARIÁVEL VENC1 E RETIRAVA DA VARIÁVEL DATA
OBRIGADO A TODOS PELA ATENÇÃO PRINCIPALMENTE o
xanburzume
Gilberto Jr
Beleza ASPmano
fica melhor fazendo isso com o SELECT CASE