Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problemone con ciclo dentro ciclo e parola chiave UNION ALL!!

    Ciao a tutti,mi sono fatto questo codice:

    <%
    sql = "SELECT * FROM Categories WHERE Name ='" & categories & "'" ''''''''''recupero il record della proprietà della categoria interessata
    rs.Open sql, conn, 1, 3
    id = rs("ID") '''''''''''''recupero l'ID della categoria interessata
    rs.close

    set RsItem = Server.CreateObject("ADODB.Recordset")
    sql2 = "SELECT * FROM I_Properties WHERE ID_Categories = '" & id & "'" ''''''''faccio una query per prendere tutti i record che sono associati a questa categoria
    rs.Open sql2, conn, 1, 3
    do while not rs.EOF

    idproperties = rs("ID")
    nameproperties = rs("Name")

    sqlTot = prova & "SELECT * FROM I_Props WHERE ID_Item = " & itemid & "AND ID_Properties = " & idproperties & ""
    prova = sqlTot & " UNION ALL "

    rs.movenext
    loop

    set RsTot = Server.CreateObject("ADODB.Recordset")
    RsTot.Open sqlTot, conn, 1, 3
    i = 0
    do while not RsTot.EOF
    i = i + 1
    if i MOD 2 = 0 then
    colour = ("#E8F5FF")
    else
    colour = ("#FFFFFF")
    end if

    propvalue = RsTot("Value")
    %>
    <tr bgcolor="<%=colour%>">
    <td valign="top" style="border-left: 1px dotted #D3D3D3; border-right: 1px dotted #D3D3D3" align="left" width="50%"><%=nameproperties%></td>
    <td valign="top" style="border-left: 1px dotted #D3D3D3; border-right: 1px dotted #D3D3D3" align="left" width="50%"><%=propvalue%></td>
    </tr>
    <%
    RsTot.movenext
    loop
    %>

    questo codice mi serve per stampare in una riga sola dati presi da più tabelle di un db.
    il problema che ho risolto con una union all è che la pagina deve essere assolutamente dinamica,quindi,se il risultato della prima query è maggiore di uno deve eseguire la seconda per il numero di volte della prima...ciclo dentro ciclo,praticamente...
    il problema mi sorge quando devo andare a stampare le variabili che ho ottenuto.
    la variabile propvalue,che deriva dalla seconda query,viene stampate giusta e per il giusto numero di volte.
    la variabile nameproperties,invece,viene stampata per il giusto numero di volte,ma sempre con lo stesso valore.
    Perchè questo?perchè la variabile nameproperties viene caricata all'interno del primo ciclo,e ricaricata finchè il recordset non raggiunge l'EOF,quindi vedrò solo l'ultimo record trovato.
    qualcuno sa darmi una mano a risolvere il problema?
    è molto meno complicato di quello che si può pensare,ma mi sono fatto prendere dall'ansia e non riesco a ragionarci tranquillamente...

    grazie mille a chi mi darà una mano!

  2. #2
    niente,scusate,ce l'ho fatta...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.