Ir para conteúdo

POWERED BY:

Arquivado

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

José Krasucki

[Resolvido] Um Loop dentro de outro em ASP

Recommended Posts

Olá Pessoal, preciso de uma ajuda.

 

Estou fazendo um loop para mostrar na tela as informações de uma tabela. Para cada resultado desse primeiro loop preciso que apareça alguns subitens que estão em outra tabela. E para isso preciso fazer um 2º loop. A primeira parte da tarefa consegui realizar com sucesso. A segunda não estou conseguindo. Alguem tem uma luz, como posso fazer esse segundo loop? Abaixo estou postando o código do primeiro loop.

 

<%
	conexaoString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
	conexaoStringDefault = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
        %>
    
        <%
	Set conexao = Server.CreateObject("ADODB.Connection")
	conexao.Open conexaoStringDefault
	%>
                        
        <%
		On Error Resume Next
	id = Request.QueryString("id")

	NumPerPage = 1000
	If id = Request.QueryString("id") Then
	Set rs = Server.CreateObject("ADODB.Recordset")
	rs.Open "SELECT * from PRODUTO WHERE Id_news ="&id&" ORDER BY ID DESC", conexao
        rs.PageSize = NumPerPage
        TotalPages = rs.PageCount
        rs.AbsolutePage = CurPage
	
		
		If Err <> 0 Then
			msg = "Nenhuma noticia cadastrada!"
		End if
	%>
		
        <% 
	num = (NumPerPage * CurPage) - (NumPerPage - 1)
	Count = 0
	Do While (Count < rs.PageSize) AND (not rs.EOF)
	%>
        
<!-- Aqui eu mostro os dados da primeira tabela -->       
        
        <%
	rs.MoveNext 
	num = num + 1
	Count = Count + 1
	Loop
	%>
	
        <% 
	End If 
	conexao.Close
	Set rs = nothing
	Set conexao = nothing
	%>

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Agradeço a quem se dispor a me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

idrs = rs("id")

 

"select * from tabela2 where id="&idrs

 

no loop do primeiro você coloca isso e os response.write referente ao segundo rs

 

Olá Viniciu, obrigado pelo auxilio.

Ainda não consegui resolver o problema. Adicionei o select como você indicou. Mas como vou fazer o loop no resultado deste select?

Não sou programador, por isso, estou quebrando a cabeça...rsrsrs... se puder me ajudar.

 

Segue novamente o código com as alterações.

 

<%
	conexaoString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
	conexaoStringDefault = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
	Set conexao = Server.CreateObject("ADODB.Connection")
	conexao.Open conexaoStringDefault
			%>
            <%
				On Error Resume Next
	id_news = Request.QueryString("id")
	NumPerPage = 100
	Set conexao = Server.CreateObject("ADODB.Connection")
	conexao.Open conexaoStringDefault

	If id_news = Request.QueryString("id") Then
	If Request.QueryString("pag") = "" then
        CurPage = 1 
    Else
        CurPage = Request.QueryString("pag")
    End If
	
	Set rs = Server.CreateObject("ADODB.Recordset")
	rs.CursorLocation = 3
    rs.CacheSize = NumPerPage
	id_news = Request.QueryString("id")
	rs.Open "SELECT * from PRODUTO WHERE id_news =" & id_news &" ORDER BY ID DESC", conexao

	idrs = rs("id")	
	rs.Open "SELECT * from variaveis where id_produto="&idrs, conexao
	
	rs.MoveFirst
    rs.PageSize = NumPerPage
    TotalPages = rs.PageCount
    rs.AbsolutePage = CurPage
	
		
		If Err <> 0 Then
			msg = ""
		End if
			%>
            
            <% 
	num = (NumPerPage * CurPage) - (NumPerPage - 1)
	Count = 0
	Do While (Count < rs.PageSize) AND (not rs.EOF)
			%>
  
	  
	<!--Inicio 1º Loop -->		
    
    
    	<!--Inicio 2º Loop -->		
    
	  	<!--Fim 2º Loop -->		    
    
    
  	<!--Fim 1º Loop -->		
				  
                  
          
      <%
	rs.MoveNext 
	num = num + 1
	Count = Count + 1
	Loop 
	  %>
            
    
	<% If CurPage > 1 Then %>
	<% End If %>
	<% For page = 1 to TotalPages step 1 %>
	<% If CInt(CurPage) = page Then %>
	<%= page %>
	<% Else %>
	<a href="#&pag=<%= page %>"><%= page %></a>
	<% End If %>
	<% Next %>
	<% If CInt(CurPage) <> CInt(TotalPages) Then %>
	<% End If %>
        
        <% 
	End If 
	conexao.Close
	Set rs = nothing
	Set conexao = nothing
		%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você abriu a segunda tabela no lugar errado, ela tem que estar dentro do Loop.

 

Veja:

 <%
        conexaoString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
        conexaoStringDefault = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
        Set conexao = Server.CreateObject("ADODB.Connection")
        conexao.Open conexaoStringDefault
                        %>
            <%
                                On Error Resume Next
        id_news = Request.QueryString("id")
        NumPerPage = 100
        Set conexao = Server.CreateObject("ADODB.Connection")
        conexao.Open conexaoStringDefault

        If id_news = Request.QueryString("id") Then
        If Request.QueryString("pag") = "" then
        CurPage = 1 
    Else
        CurPage = Request.QueryString("pag")
    End If
        
        Set rs = Server.CreateObject("ADODB.Recordset")
        rs.CursorLocation = 3
    rs.CacheSize = NumPerPage
        id_news = Request.QueryString("id")
        rs.Open "SELECT * from PRODUTO WHERE id_news =" & id_news &" ORDER BY ID DESC", conexao

     
        rs.MoveFirst
    rs.PageSize = NumPerPage
    TotalPages = rs.PageCount
    rs.AbsolutePage = CurPage
        
                
                If Err <> 0 Then
                        msg = ""
                End if
                        %>
            
            <% 
        num = (NumPerPage * CurPage) - (NumPerPage - 1)
        Count = 0

'aqui se inicia o primeiro loop
        Do While (Count < rs.PageSize) AND (not rs.EOF)
                        
'portanto aqui dentro você abre a segunda tabela e faz o segund loop
       idrs = rs("id") 'aqui abre o ID em questão

        Set rs2 = Server.CreateObject("ADODB.Recordset")
        rs2.Open "SELECT * from variaveis where id_produto="&idrs, conexao

      'segundo loop

         do while rs2.eof 
              'insera aqui o que aparecer 
         rs2.movenext
         loop

      set rs2 = nothing

        
        rs.MoveNext 
        num = num + 1
        Count = Count + 1
        Loop 
          %>
            
    
        <% If CurPage > 1 Then %>
        <% End If %>
        <% For page = 1 to TotalPages step 1 %>
        <% If CInt(CurPage) = page Then %>
        <%= page %>
        <% Else %>
        <a href="#&pag=<%= page %>"><%= page %></a>
        <% End If %>
        <% Next %>
        <% If CInt(CurPage) <> CInt(TotalPages) Then %>
        <% End If %>
        
        <% 
        End If 
        conexao.Close
        Set rs = nothing
        Set conexao = nothing
                %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você abriu a segunda tabela no lugar errado, ela tem que estar dentro do Loop.

 

Veja:

 <%
        conexaoString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
        conexaoStringDefault = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("meu banco") 
        Set conexao = Server.CreateObject("ADODB.Connection")
        conexao.Open conexaoStringDefault
                        %>
            <%
                                On Error Resume Next
        id_news = Request.QueryString("id")
        NumPerPage = 100
        Set conexao = Server.CreateObject("ADODB.Connection")
        conexao.Open conexaoStringDefault

        If id_news = Request.QueryString("id") Then
        If Request.QueryString("pag") = "" then
        CurPage = 1 
    Else
        CurPage = Request.QueryString("pag")
    End If
        
        Set rs = Server.CreateObject("ADODB.Recordset")
        rs.CursorLocation = 3
    rs.CacheSize = NumPerPage
        id_news = Request.QueryString("id")
        rs.Open "SELECT * from PRODUTO WHERE id_news =" & id_news &" ORDER BY ID DESC", conexao

     
        rs.MoveFirst
    rs.PageSize = NumPerPage
    TotalPages = rs.PageCount
    rs.AbsolutePage = CurPage
        
                
                If Err <> 0 Then
                        msg = ""
                End if
                        %>
            
            <% 
        num = (NumPerPage * CurPage) - (NumPerPage - 1)
        Count = 0

'aqui se inicia o primeiro loop
        Do While (Count < rs.PageSize) AND (not rs.EOF)
                        
'portanto aqui dentro você abre a segunda tabela e faz o segund loop
       idrs = rs("id") 'aqui abre o ID em questão

        Set rs2 = Server.CreateObject("ADODB.Recordset")
        rs2.Open "SELECT * from variaveis where id_produto="&idrs, conexao

      'segundo loop

         do while rs2.eof 
              'insera aqui o que aparecer 
         rs2.movenext
         loop

      set rs2 = nothing

        
        rs.MoveNext 
        num = num + 1
        Count = Count + 1
        Loop 
          %>
            
    
        <% If CurPage > 1 Then %>
        <% End If %>
        <% For page = 1 to TotalPages step 1 %>
        <% If CInt(CurPage) = page Then %>
        <%= page %>
        <% Else %>
        <a href="#&pag=<%= page %>"><%= page %></a>
        <% End If %>
        <% Next %>
        <% If CInt(CurPage) <> CInt(TotalPages) Then %>
        <% End If %>
        
        <% 
        End If 
        conexao.Close
        Set rs = nothing
        Set conexao = nothing
                %>

Deu certo. Valew, muitissimo 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.