54 messaggi dal 14 novembre 2001
Avendo due tabelle in access correlate tra di loro:

ARTICOLI: codice, nome
PREZZI: codicearticolo, prezzo1, prezzo2, prezzo3

è possibile creare un ciclo che mi visualizzi per ogni articolo i suoi prezzi ovvero come faccio a far visualizzare i prezzi restando nel ciclo For i=1 to Records ?:

SQL = "SELECT * FROM articoli "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, conn, 1, 3
For i=1 to Records
Response.write rs("codice")
Response.write rs("nome")
Response.write rs("prezzo1") 'evidente! non funziona
rs.movenext
loop



@ndrew

@ndrew
217 messaggi dal 15 settembre 2001
Fai 2 recordset (o due cicli, come vuoi te) uno dentro all'altro...

in quello esterno fai visualizzare gli articoli, dopo il nome del'articolo
inserisci un recordset che per l'articolo attuale (usa una variabile non so' temp_articolo) ti visualizzi i prezzi corrispondenti - nell'sql basta WHERE articolo = temp_articolo ) finito il ciclo dei prezzi, riparte dall'articolo successivo e fa la stessa cosa.

geno

ps. ho risp un po alla svelta ma sto x spegnere il pc...x oggi basta :)
32 messaggi dal 17 luglio 2001
Scusa ma avendo questa struttura
ARTICOLI: codice, nome
PREZZI: codicearticolo, prezzo1, prezzo2, prezzo3
non ti conviene qualcosa del genere

SELECT * FROM articoli
INNER JOIN prezzi
ON articoli.codice=prezzi.codice

A quel punto hai tutti i campi che ti servono:
codice, nome, prezzo1, prezzo2, prezzo3
e non devi effettuare due query annidate !

SQL = "SELECT * FROM articoli " & _
"INNER JOIN prezzi " & _
"ON (articoli.codice=prezzi.codicearticolo)"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, conn, 1, 3
if Not (rs.EOF and rs.BOF) then
rs.MoveFirst
while Not rs.EOF
Response.write rs("codice")
Response.write rs("nome")
Response.write rs("prezzo1")
Response.write rs("prezzo2")
Response.write rs("prezzo3")
rs.movenext
wend
End If



32 messaggi dal 17 luglio 2001
A proposito, non ci avevo fatto caso ... ma sei di nuovo tu ?
:)
Ciao !

54 messaggi dal 14 novembre 2001
ebbene si caro mio, sono di nuovo io!
il tormento del forum...

questa domanda l'ho fatta giorni fa.....

però ci sto lavorando sopra adesso..

ti ringrazio per la risposta che ancora una volta mi sta chiarendo molte cose..... ora vedo se funziona (non ho dubbi.....)

PS. Forse sarebbe meglio se io venissi da te per qualche lezione privata di ASP... eviterei di fare brutte figure con domande magari banali!!!

@ndrew

@ndrew
32 messaggi dal 17 luglio 2001
Naaa, non ti preoccupare !
Verifica solo la sintassi della join ... l'ho sparata li al momento ... puoi farlo con il QueryBuilder di access ... sai com'è non avendo il db non la potevo provare !!!
Fammi sapere !
Ciao

54 messaggi dal 14 novembre 2001
mi succede una cosa strana:

in linea di massima va bene infatti ho scritto così come hai detto tu:

dim Conn, strConn
strConn= "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "&_
Server.MapPath("data/zermat.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open StrConn
SQL = "SELECT * FROM articoli " & _
"INNER JOIN prezzi " & _
"ON (articoli.codice=prezzi.codice)"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, conn, 1, 3
if Not (rs.EOF and rs.BOF) then
rs.MoveFirst
while Not rs.EOF
Response.write rs("codice")
Response.write rs("nome")
Response.write rs("prezzo1")
rs.movenext
wend
End If

però mi da errore sul Response.write rs("codice").
Se io elimino quella riga, funziona correttamente e mi fa vedere il nome e il prezzo1 2 ecc.

secondo te perchè non mi visualizza il codice?


@ndrew

@ndrew
32 messaggi dal 17 luglio 2001
Prova ad invertire i due campi nella clausola where della join (probabilmente ti restituisce il campo codicearticolo della tabella prezzi al posto di codice della tabella articolo.
Cmq, quando non sei sicuro sul risultato di un recordset scriviti una cosa del genere

<%
Dim fldCampo
%>
<table border = "1">
<tr>
<td>Nome Campo</td>
</td>Tipo campo </td>
</tr>
<%
For each fldCampo in rstRecordset.Fields
%>
<tr>
<td><%=fldCampo.Name%></td>
<td><%=fldCampo.Type%></td>
</tr>
<%
Next
%>
</table>

chiaramente il recordset devi averlo già aperto.
Ti compare una tabella con tutti i campi del recordset ed il loro tipo.

Fammi sapere !
Ciao


Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.