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!![]()

Rispondi quotando