Newsgroup: it.comp.www.asp
Titolo: Problema con movenext o cosa'altro?

Salve Vi scrivo sperando che qualcuno possa darmi delucidazioni in merito
vi spiego il problema in parole povere
ho la necessità di generare un meu gerarchico a tre livellli esempio
1 livello)  HARDWARE
                    2)|---------------- Componenti pc e server
                                                      3)|-------------- 
ALIMENTATORI
                                                          |-------------- 
Floppy disk
1 livello)   SOFTWARE
                    2)|---------------- ANTIVIRUS
il codi di esempio che vi mando è il seguente:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../Connections/dbmenuglobe.asp" -->
<%
Dim cat
Dim cat_numRows
Set cat = Server.CreateObject("ADODB.Recordset")
cat.ActiveConnection = MM_dbmenuglobe_STRING
cat.Source = "SELECT * FROM Categorie"
cat.CursorType = 3
cat.CursorLocation = 2
cat.LockType = 1
cat.Open()
cat_numRows = 0
%>
<%
Dim scat
Dim scat_numRows
Set scat = Server.CreateObject("ADODB.Recordset")
scat.ActiveConnection = MM_dbmenuglobe_STRING
scat.Source = "SELECT * FROM Scategorie where categoria = '" +
Replace((Cat.Fields.Item("ID").Value), "'", "''") + "' order by id asc"
scat.CursorType = 3
scat.CursorLocation = 2
scat.LockType = 1
scat.Open()
scat_numRows = 0
%>
<%
Dim sscat
Dim sscat_numRows
Set sscat = Server.CreateObject("ADODB.Recordset")
sscat.ActiveConnection = MM_dbmenuglobe_STRING
sscat.Source = "SELECT * FROM SScategorie where scategoria = '" +
Replace((scat.Fields.Item("ID").Value), "'", "''") + "' order by id asc"
sscat.CursorType = 3
sscat.CursorLocation = 2
sscat.LockType = 1
sscat.Open()
sscat_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows = -1
Repeat1__index = 0
cat_numRows = cat_numRows + Repeat1__numRows
%>
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
..Stile1 {color: #FF0000}
..Stile2 {color: #00CC99}
-->
</style>
</head>
<body>
<%
scat.movefirst
While ((Repeat1__numRows <> 0) AND (NOT cat.EOF))
%>
<span class="Stile1"><%=(cat.Fields.Item("Categoria").Value)%></span><br>
<%dim contascat
  if not scat.eof or scat.bof then
for contascat = 0 to scat.recordcount - 1%>
<span
class="Stile2">&nbsp;<%=(scat.Fields.Item("Scategoria").Value)%></span><br>
<%dim contasscat
  if not sscat.eof or sscat.bof then
for contasscat = 0 to sscat.recordcount - 1%>
&nbsp;&nbsp;<%=(sscat.Fields.Item("SSCategoria").Value)%><br>
<%sscat.movenext
next
end if
%>
<%scat.movenext
next
end if
%>
<%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  cat.MoveNext()
Wend
%>
</body>
</html>
<%
cat.Close()
Set cat = Nothing
%>
<%
scat.Close()
Set scat = Nothing
%>
<%sscat.Close()
Set sscat = Nothing%>
--------------------------------------------------------------------------
Il Risultato che ottengo :
Hardware
 Frutta
  aaa1
  aaa2
  aaa3
  bxvbv4
 Verdura
 Riviste
 Abbonamenti
 Stampanti
 Notebook
Software
AAAAA
Considerate che Verdura contiene altre sottocategorie
software altre sottocategorie ma che non vengono conteggiate in pratica
sscat.movenext e simili non generano lo spostamento del puntatore e non
agiornano le relazioni tra tabelle..
dove sbaglio...?
Vi invio un enorme e anticipato grazie !!!

 cat.Open()
[megaCUT]
NON USARE Dreamweaver per fare ASP. Scordatelo proprio.
Nel codice che hai messo, vai ad aprire 3 recordset. Non ti sembra 
eccessivo, per tirar fuori qualche ortaggio?
Credo te ne basti uno, con un join di tabelle, con un normale loop nel 
recordset (non come quello di DW, con variabili che non servono a 
nulla) e qualche IF nel mezzo.
Se cominci a mettere giů roba a mano e hai problemi, io ti aiuto.
Cosě, no.

Ach! Che disordine! :-)
Suggerirei di cambiare approccio, facendo una query unica che ti
restituisca una tabella a più colonne, del tipo:
hardware; componenti; alimentatori
hardware; componenti; cpu
hardware; componenti; ventole
hardware; periferiche; mouse
hardware; periferiche; tastiera
software; antivirus;
software; sistemi operativi; windows
software; sistemi operativi; mac os
A livello di HTML, ciclando sul recordset, riconosci che hai una categoria
nuova poiché è diversa da quella precedente (ovviamente la query deve
essere ordinata). Per esempio:
categoria1Precedente=""
categoria2Precedente=""
while not rs_categorie.eof
 categoria1=rs_categorie.fields.item("cat1").value
 categoria2=rs_categorie.fields.item("cat2").value
 categoria3=rs_categorie.fields.item("cat3").value
 if (categoria1Precedente<>categoria1) then
  %>
  <span class="Stile1"><%=categoria1%></span><br>
  <%
 end if
 %>
 if (categoria2Precedente<>categoria2) then
  %>
  <span class="Stile2"><%=categoria2%></span><br>
  <%
 end if
 %>
 <span class="Stile2"><%=categoria3%></span><br>
 <%
 categoria1Precedente=categoria1
 categoria2Precedente=categoria2
wend
%>
Il codice va ovviamente rifinito :-)
Alex
-- 
___________________________________________________________
a p bertolini
(
www.webwarrior.org
)

Come da voi consigliato ho utilizzato il metodo join ecc... per relazionare
le tabelle di seguito il codice:
<%
 response.buffer=true
 response.expires=0
 Dim rsOrdini
 Dim rsArticoli
 start=timer
 set rsOrdini=server.createobject("adodb.recordset")
 dbPath=server.mappath("db.mdb")
 rsOrdini.activeconnection="Provider=Microsoft.Jet.Oledb.4.0;data source=" &
dbPath
 sqlJoin="SELECT 
CATEGORIE.ID
, CATEGORIE.CATEGORIA, 
SCATEGORIE.ID
,
SCATEGORIE.CATEGORIA, SCATEGORIE.SCATEGORIA " & _
   "FROM CATEGORIE LEFT JOIN SCATEGORIE ON 
CATEGORIE.ID
 =
SCATEGORIE.CATEGORIA"
rsOrdini.open sqlJoin
%>
con questo codice testato e funzionate riesco a collegare 2 tabelle come
faccio per collegarle ad una terza tabella?
io avevo provato cosi:
////////////////////
<%
 response.buffer=true
 response.expires=0
 Dim rsOrdini
 Dim rsArticoli
 start=timer
 set rsOrdini=server.createobject("adodb.recordset")
 dbPath=server.mappath("db.mdb")
 rsOrdini.activeconnection="Provider=Microsoft.Jet.Oledb.4.0;data source=" &
dbPath
 sqlJoin="SELECT 
CATEGORIE.ID
, CATEGORIE.CATEGORIA, 
SCATEGORIE.ID
,
SCATEGORIE.CATEGORIA, SCATEGORIE.SCATEGORIA, 
SSCATEGORIE.ID
,
SSCATEGORIE.SSCATEGORIA, SSCATEGORIE.SCATEGORIA " & _
   "FROM (CATEGORIE LEFT JOIN SCATEGORIE ON 
CATEGORIE.ID
 =
SCATEGORIE.CATEGORIA)" & _
   "(SCATEGORIE INNER JOIN SSCATEGORIE ON 
SCATEGORIE.ID
 =
SSCATEGORIE.SCATEGORIA)"
rsOrdini.open sqlJoin
%>
/////////////////////
e questo è quello che restituisce iis
Microsoft JET Database Engine error '80040e14'
Errore di sintassi nella proposizione FROM.
/sito/join.asp, line 21
come posso risolvere il problema
grazie anticipate!
--------------------------------