Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Velloso

[Resolvido] if e case

Recommended Posts

Ola pessoal,

 

Seguite, to encontrando um modo de resolver um "galho" na minha programação, vou explicar:

1 - A aplicação seleciona todos os meses de uma tabela noticas usando distinct tipo:

 

select distinct date_format(data, '%m') as mes from noticias where YEAR(data) = " + cstr(ano)

 

2 - O que retorna é lógico e evidente os meses validos (que tenham noticias)ao exemplo:

 

01

02

03

04

09

 

* Agora o problema:

 

3 - faço uma lista de links com os meses, bastando apenas o usuario clicar no link, que é o nome do mês e abrira num iframe o detalhe da notícia oa exemplo:

 

Janeiro | Fevereiro | Março | Abril | Maio | Junho |

 

Cod para exibir a lista de links:

 

do while not objrs.eof 
	if objrs("mes") = "01" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Janeiro</a>  |  " 	
	elseif objrs("mes") = "02" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Fevereiro</a>  |  " 		
	elseif objrs("mes") = "03" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Março</a>  |  " 
	elseif objrs("mes") = "04" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Abril</a>  |  " 
	elseif objrs("mes") = "05" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Maio</a>  |  " 
	elseif objrs("mes") = "06" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Junho</a>  |  " 
	elseif objrs("mes") = "07" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Julho</a>  |  " 
	elseif objrs("mes") = "08" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Agosto</a>  |  " 
	elseif objrs("mes") = "09" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Setembro</a>  |  " 
	elseif objrs("mes") = "10" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Outubro</a>  |  " 
	elseif objrs("mes") = "11" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>novembro</a>  |  " 
	elseif objrs("mes") = "12" then 
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Dezembro</a>  |  "
	else
		response.write 
	end if
	
objrs.movenext
loop

Reparem que na lista de links mês, não exibe (Julho, Agosto, Setembro e outros meses), pois estes que não tem noticia, iriam ser exibidos na lista de meses, porem sem o link formado (sem o <a href>).

 

Bom é isso preciso de ajuda com isso, realmente não sei como resolver isso, quaisquer dicas será bem vinda.

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce quer que não apareçam ou que apareçam sem o link?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um If antes, caso o

objrs("mes") seja vazio, você não monta o link, entendeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um If antes, caso o

objrs("mes") seja vazio, você não monta o link, entendeu

 

Xanburzum,

 

Mas como fazer isso se o link é "impresso" dinâmicamente dentro de um loop, e que em cada "passagem" neste loop assume valor diferente?

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Deixa eu explicar melhor, na query o resultado é :

 

01

02

03

04

09

 

Ai monto um loop, que imprime um mes por vez vido da query, na ordem acima.

Ai printo na tela os valores.

*Problema

o "if" espera o valor 05, mas não vem no loop, ou seja, não sei como tratar essa exceção, de acordo com o loop e os ifs infomado acima.

Os ifs só estão preparados para tratar um valor se ele vem no loop, no caso do 05, não vem, ai não consigo tratar.

 

Se alguem puder ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é praticamente o que o Vinicius Ianni fez no post #6....

apenas um if para testar o link antes...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai que esta o problema, pois o nunca vem resgistro nulo do loop...

Vem aquela sequencia, sendo assim não consigo tratar um registro que não vem no loop. Ai mora o problema.

Isso falando daquela estrutura de ifs.. a não que mude tudo.. é a minha duvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se o objrs("mes") diferente de "01" then

'não mostra link

else

response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Janeiro</a> | "

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha tentado algo parecido, mas mudei, para poderem acompar o resultado:

 

os if ficaram:

 

if objrs("mes") <> "01" then
		response.write "Janeiro |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "02" then
		response.write "Fevereiro |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "03" then
		response.write "Março |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "04" then
		response.write "Abril |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "05" then
		response.write "Maio |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "06" then
		response.write "Junho |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "07" then
		response.write "Julho |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "08" then
		response.write "Agosto |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "09" then
		response.write "Setembro |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "10" then
		response.write "Outubro |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "11" then
		response.write "Novembro |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

	if objrs("mes") <> "12" then
		response.write "Dezembro |"
	else
		response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>"+ objrs("mes") +"</a>  |  " 		
	end if

 

resultado:

 

01 | Fevereiro |Março |Abril |Maio |Junho |Julho |Agosto |Setembro |Outubro |Novembro |Dezembro |Janeiro |02 | Março |Abril |Maio |Junho |Julho |Agosto |Setembro |Outubro |Novembro |Dezembro |Janeiro |Fevereiro |03 | Abril |Maio |Junho |Julho |Agosto |Setembro |Outubro |Novembro |Dezembro |Janeiro |Fevereiro |Março |Abril |Maio |06 | Julho |Agosto |Setembro |Outubro |Novembro |Dezembro |Janeiro |Fevereiro |Março |Abril |Maio |Junho |07 | Agosto |Setembro |Outubro |Novembro |Dezembro |Janeiro |Fevereiro |Março |Abril |Maio |Junho |Julho |08 | Setembro |Outubro |Novembro |Dezembro |

 

 

 

 

onde tem numero e nao string, é que encontrou o mês que tem publicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use um array para "armazenar" cada mês em seu "numero" correspondente, faça um laço de repetição de 1 até 12, a cada passagem compare com o seu RS, se for igual imprime com link e dê um MoveNext (cuidado com o EOF), se for diferente imprime sem link e mantém na posição do RS. A cada passagem do laço não se esqueça de "pegar" o nome correspondente.

 

Em caso de dúvidas em implementar a lógica é só postar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use um array para "armazenar" cada mês em seu "numero" correspondente, faça um laço de repetição de 1 até 12, a cada passagem compare com o seu RS, se for igual imprime com link e dê um MoveNext (cuidado com o EOF), se for diferente imprime sem link e mantém na posição do RS. A cada passagem do laço não se esqueça de "pegar" o nome correspondente.

 

Em caso de dúvidas em implementar a lógica é só postar.

 

 

Salgado,

 

Entendi, o que você disse, realmente tem razão, comparar o os dados do loop com outra fonte (array), porém neste caso, não sei implementar, poderia por favor dar uma força?

 

Desde já grato!

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente:

Crie e carregue o array com os meses, começando da posição 1 até a 12;

Laço FOR de 1 até 12

Se x = RS("seuCampo") faça

Com link e Array(x)

Avança o RS

Se não

Sem Link e Array(x)

Próximo

 

Tente transformar essa sequencia em código e poste novamente o resultado. Repare que não fiz nenhuma menção à tratamento de tipos e ao EOF, mas eles serão necessários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Salgado,

 

 

Vou tentar implementar a solução proposta e volto a postar o resultado.

 

[]´s

 

Pessoal,

 

Finalizei a lógica, com conselhos do Salgado, ficou muito bom.

Pra quem interessa saber do desfecho, segue o código final:

[]´s

 


vmes= ""
	do while not objrs.eof		
		vmes = vmes&"|"&objrs("mes") 
		
	objrs.movenext
	loop
	'response.write "banco" + cstr(vmes)
	'response.write "<hr>"
	vetmes = split(vmes,"|")
	for x=1 to 12
		for z=0 to ubound(vetmes)
		vflag = false
		if x < 10 then		
			vaux = "0" & x
		end if			
			if vaux = vetmes(z) then				
				vflag = true
				exit for
			end if			
		next
			if vflag then

				if x = 01 then
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Janeiro |</a>"
				'	response.write "<a href='dsp_pub.asp?mes="+objrs("mes")+"&ano="+ano+"' target='frame2'>Janeiro |</a> "
				elseif x = 02 then
'					response.write "Fevereiro |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Fevereiro |</a> "
				elseif x = 03 then
'					response.write "Março |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Março |</a> "
				elseif x = 04 then
					'response.write "Abril |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Abril |</a> "
				elseif x = 05 then
					'response.write "Maio |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Maio |</a> "
				elseif x = 06 then
					'response.write "Junho |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Junho |</a> "
				elseif x = 07 then
					'response.write "Julho |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Julho |</a> "
				elseif x = 08 then
					'response.write "Agosto |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Agosto |</a> "
				elseif x = 09 then
					'response.write "Setembro |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Setembro |</a> "
				elseif x = 10 then
					'response.write "Outubro |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Outubro |</a> "
				elseif x = 11 then
					'response.write "Novembro |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Novembro |</a> "
				elseif x = 12 then
					'response.write "Dezembro |"	
					response.write "<a href='dsp_pub.asp?mes="+cstr(x)+"&ano="+cstr(ano)+"' target='frame2'>Dezembro |</a> "
				end if		
				
				'response.write cstr(x) + " > sim"	
			else
				'response.write cstr(x) + " <hr color=red>"
					
				if x = 01 then
					response.write "Janeiro |"	
				elseif x = 02 then
					response.write "Fevereiro |"	
				elseif x = 03 then
					response.write "Março |"	
				elseif x = 04 then
					response.write "Abril |"	
				elseif x = 05 then
					response.write "Maio |"	
				elseif x = 06 then
					response.write "Junho |"	
				elseif x = 07 then
					response.write "Julho |"	
				elseif x = 08 then
					response.write "Agosto |"	
				elseif x = 09 then
					response.write "Setembro |"	
				elseif x = 10 then
					response.write "Outubro |"	
				elseif x = 11 then
					response.write "Novembro |"	
				elseif x = 12 then
					response.write "Dezembro |"	
				end if	

			end if
	next


Tópico resolvido.
Até o próximo, rsrs.
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.