Ir para conteúdo

POWERED BY:

Arquivado

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

natalia

Como fazer um loop dentro do outro

Recommended Posts

Oi pessoal, como eu posso fazer um loop dentro do outro? Vou dar exemplo usando 2 produtos.Prod1nomefotopreço descr1 (aqui nas descrições seria outro loop)descr2descr3Prod2nomefotopreço descr1 descr2descr3E assim por diante.Abaixo estão alguns trechos do meu código.CheckProd = Request.Form("lista")strComp = " SELECT ... WHERE Produto.Codigo_Prod IN (" & CheckProd & ") "Call Open_cnSet rsComp = Conexao.Execute(strComp)Do while Not rsComp.EOF<img src="<%= rsComp("Logo")%>"><%= Left(rsComp("Nome_Prod"),50)%>...cod_prod = rsComp("Codigo_Prod") Do While Not rsComp("Codigo_Prod") = cod_prod AND Not rsComp.EOF<%= rsComp("Conteudo")%> <%rsComp.MoveNextLoopLoop%> Alguém sabe fazer, pque o meu não funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Gatinha, vou quebra seu galho: espeimenta o código abaixo em uma página, depois é só adaptar....

 

<%Dim contador' variavel_contadora' execute enquanto o contador for menor ou igual a 2000Do While contador <= 1000' incrementa o contadorcontador = contador + 1' imprime o valor do contador na páginaResponse.Write ("<B>" & contador &"</b><BR>")	Dim contador1' variavel_contadora	' execute enquanto o contador for menor ou igual a 2000	Do Until contador1 = 100	' incrementa o contador	contador1 = contador1 + 1	' imprime o valor do contador na página	Response.Write (contador1 &"<BR>")	LoopLoop%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro e mais importante: o teu SQL tem que trazer os dados das duas tabelas ao mesmo tempo, usando o innerjoin... com isso o recordset viria mais ou menos assim:Prod1, nome, foto, preço, descr1 Prod1, nome, foto, preço, descr2 Prod1, nome, foto, preço, descr3 Prod2, nome, foto, preço, descr1 Prod2, nome, foto, preço, descr2 Prod2, nome, foto, preço, descr3 Prod2, nome, foto, preço, descr4(exemplo de innerjoin no fim)depois tu faz um loop externo que mostra o produto e um loop interno que mostra as descrições testando se o produto ainda não mudou (baseado nos dados do recordset ali de cima)Veja um exemplo parecido onde são mostrados dados de uma agenda... (o "flag" é só para formatar um cabecalho) Estuda e altera...if not RS_agenda.eof then ///se tem dadosresponse.write "<table width=140 border='0' cellspacing='0' cellpadding='0'>" ///abre uma tabelado while not RS_agenda.eof ///faz enquanto tem dadosztipo=RS_agenda("tipo_informacao") ///pega a primeira informaçaoztipo2=ztipo ///pega uma cópia delaflag="" /// prepara um flag para inserir um cabeçalhodo while ztipo=ztipo2 ///primeiro loop - faz enquanto a informação (produto1=produto1) é igualif flag="" then ///flag vazio então cria uma linha e poem um cabeçalho (titulo)...response.write "<tr bgcolor='#F5F5F5'><td width='3'></td><td align='left' height='20'valign='bottom'><span class='cabecalho'>"&ztipo&"</span></td></tr>"flag="mostrado" ///avisa o flag que o cabeçalho (titulo ou nome do produto) foi mostrado - (só mostra uma vez para várias descricoes)response.write "<tr bgcolor='#F5F5F5'><td width='3'></td><td align=left>" ///abre uma nova linha/celulaend ifif RS_agenda("informacao")<>"" then ///se o campo não está vazio então mostraresponse.write "<span class='agenda_11'> "&RS_agenda("informacao")&"</span><br>"///mostra a descriçãoend ifRS_agenda.MoveNext ///vai pro proximo registroif RS_agenda.eof then ///ve se terminouresponse.write "</td></tr>" ///se terminou então fecha a célulaexit do ///se terminou pula fora do loopelseztipo2=RS_agenda("tipo_informacao") ///se não terminou guarda o nome do produto na variavel para confirmar novamente na validação do loop. Dai se o produto1=produto1 o loop continua verdadeiro e uma nova descrição é mostrada senão, se o produto trocou depois do movenext (ztipo=produto1e ztipo2=produto2, false), quando o loop testar e ver que o ztipo2 é diferente do ztipo, ele percebe que trocou de produto e pula para o loop externo... (colocando um novo cabeçalho para o novo produto e recomecando o loop das descrições...)end ifloop /// na troca dos produtos o loop pula pra proxima linha e continua no loop externo até que not RS.eofloop ///quando RS.eof, então fecha a tabela e termina...response.write "</table>"end ifRS_agenda.closeSet RS_agenda=nothingO mais importante neste tipo de loop é usar somente UM MOVENEXT e testar sempre se mudou de produto... Usando somente UM movenext evitamos a possibilidade de "engulirmos" algum registro importante...Ve se ajudou e desculpe o código sujo...LuckyExemplo de innerjoin para pegar o nome do produto numa tabela produtos associada com o cod_produto da tabela descrição...: "SELECT produtos.nome, descricoes.* FROM produtos INNER JOIN descricoes ON produtos.cod_produto = descricao.cod_produto"

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.