Ir para conteúdo

POWERED BY:

Arquivado

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

zeke_

[Resolvido]  com Recordset

Recommended Posts

Olá pessoal!

 

Estou com dificuldades para montar esse RecordSet.

 

Nele são consultadas 3 tabelas: tbl_Produtos, tbl_ProdImagens, tbl_ProdCategorias

 

Cadastrei 2 produtos para a categoria 1, porém apenas um dos produtos possui imagem.

 

Acontece que no Recorset abaixo, só é mostrado um produto. (o que contem a imagem).

 

Se eu cadastro mais de uma imagem para o produto, ele lista o mesmo produto 2 vezes.

Perguntas:

1)Como eu construo esse Recordset para que ele também liste os produtos que não possue imagem cadastrada?

 

2)E como fazer para que ele não repita o produto mais de uma vez caso haja mais de uma imagem para o mesmo produto?

 

No caso do 1º creio que o problema esteja nessa instrução: AND tbl_ProdImagens.idProduto = tbl_Produtos.idProduto .

 

 

 

Ao invés de mandar parte do código, vou postar o código inteiro;

 

ASP
<%@LANGUAGE="VBSCRIPT"%>

 

<!--#include virtual="/Connections/principal.asp" -->

<%

Dim rsProdutorsList__MMColParam

rsProdutorsList__MMColParam = "1"

If (Request.QueryString("CatProd") <> "") Then

  rsProdutorsList__MMColParam = Request.QueryString("CatProd")

End If

%>

<%

Dim rsProdutorsList__MMColParam2

rsProdutorsList__MMColParam2 = "1"

If (Request.QueryString("CatProd") <> "") Then

  rsProdutorsList__MMColParam2 = Request.QueryString("CatProd")

End If

%>

<%

Dim rsProdutorsList

Dim rsProdutorsList_cmd

Dim rsProdutorsList_numRows

 

Set rsProdutorsList_cmd = Server.CreateObject ("ADODB.Command")

rsProdutorsList_cmd.ActiveConnection = MM_principal_STRING

rsProdutorsList_cmd.CommandText = "SELECT * FROM tbl_ProdCategorias, tbl_Produtos, tbl_ProdImagens WHERE tbl_Produtos.idCatProd = ? AND tbl_ProdCategorias.idCatProd = ? AND tbl_ProdImagens.idProduto = tbl_Produtos.idProduto "

rsProdutorsList_cmd.Prepared = true

rsProdutorsList_cmd.Parameters.Append rsProdutorsList_cmd.CreateParameter("param1", 5, 1, -1, rsProdutorsList__MMColParam) ' adDouble

rsProdutorsList_cmd.Parameters.Append rsProdutorsList_cmd.CreateParameter("param2", 5, 1, -1, rsProdutorsList__MMColParam2) ' adDouble

 

Set rsProdutorsList = rsProdutorsList_cmd.Execute

rsProdutorsList_numRows = 0

%>

<%

Dim RepProdList__numRows

Dim RepProdList__index

 

RepProdList__numRows = -1

RepProdList__index = 0

rsProdutorsList_numRows = rsProdutorsList_numRows + RepProdList__numRows

%><link href="/site/library/css/csspage.css" rel="stylesheet" type="text/css">

<table width="100%" border="0" cellspacing="0" cellpadding="0">

  <tr>

    <td height="25" class="bordaGrossaGreen bordaDottedRed"><h2>PRODUTOS</h2></td>

  </tr>

</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

  <tr>

    <td> </td>

  </tr>

  <tr>

    <td><a href="/site/">Inicio</a> / <a href="/?Page=CateProdutos">Compra e Venda</a> / <span class="RedPersonalize"><strong></strong></span></td>

  </tr>

  <tr>

    <td> </td>

  </tr>

  <tr>

    <td><%

While ((RepProdList__numRows <> 0) AND (NOT rsProdutorsList.EOF))

%>

        <% If Not rsProdutorsList.EOF Or Not rsProdutorsList.BOF Then %>

          <table width="100%" border="0" cellspacing="0" cellpadding="0">

            <tr>

              <td width="150"><img name="t" src="" alt="<%=(rsProdutorsList.Fields.Item("NomeProd").Value)%>"></td>

              <td valign="top" style="padding-left:10px;"><h3><%=(rsProdutorsList.Fields.Item("NomeProd").Value)%></h3><br>

                 <span class="Normal"> <%

                Dim BreveDescprod

                BreveDescProd = Mid((rsProdutorsList.Fields.Item("DescProd").Value),1,100)

                Response.Write(BreveDescProd)

                %></span>

              </td>

            </tr>

                      </table>

          <% End If ' end Not rsProdutorsList.EOF Or NOT rsProdutorsList.BOF %>

        <%

  RepProdList__index=RepProdList__index+1

  RepProdList__numRows=RepProdList__numRows-1

  rsProdutorsList.MoveNext()

Wend

%></td>

  </tr>

  <tr>

    <td> </td>

  </tr>

  <tr>

    <td> </td>

  </tr>

  <tr>

    <td> </td>

  </tr>

</table>

 

<table width="100%" border="0" cellspacing="0" cellpadding="0">

  <tr>

    <td>Anterior - Próximo</td>

  </tr>

</table>

<%

rsProdutorsList.Close()

Set rsProdutorsList = Nothing

%>

 

 

Obrigado pela atenção.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você possui uma relação opcional de um para muitos e quer tanto registros que possuem essa ligação como aqueles que não possuem, você tem duas opções:

 

Puxar um ou nenhum registro da tabela filho, no caso imagens:

SELECT *, (SELECT top 1 campo FROM tbl_ProdImagens WHERE tbl_ProdImagens.idProduto = tbl_Produtos.idProduto) AS imagem FROM tbl_ProdCategorias, tbl_Produtos WHERE tbl_Produtos.idCatProd = ? AND tbl_ProdCategorias.idCatProd = ?

Lembrando que onde está escrito campo, só pode ser especificado um campo.

 

Ou você pode puxar tal informação com outra instrução SQL após essa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Luizgrs,

 

Eu havia resolvido o problema com a segunda opção; criar outros recordsets à partir de dados do primeiro.

 

Mesmo assim, obrigado por ter resolvido.

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.