Ho scritto il seguente codice in VBSCRIPT:
funzione ricorsiva
sub storia(tot,lis,ver,fam,pp,tab)
for i=0 to tot
if ((lis(1,i)=ver) and (lis(2,i)=fam) and (lis(3,i)=pp)) then
tab = tab & lis(5,i) & lis(6,i) & lis(7,i) & "
"
ver_ = lis(5,i)
fam_ = lis(6,i)
pp_ = lis(7,i)
call storia(tot,lis,ver_,fam_,pp_,tab)
end if
next
end sub
dati iniziali
versione = "1"
famiglia = "1"
pp = "1"
estrazione dati da tabella ACCESS
sql = "select * from ALL_C where ANNO='" &anno& "'"
set rs = server.createObject("ADODB.Recordset")
rs.open sql, connobj, 1, 3
creazione della lista con i dati estratti
if not rs.eof then
lista = rs.getrows()
end if
chiamata della funzione ricorsiva che pone il risultato della ricerca nella variabile tabella
totale = 0
tabella = ""
if IsArray(lista) then
totale = Ubound(lista,2)
call storia(totale,lista,versione,famiglia,pp,tabella)
end if
chiusura del recordset
rs.close
set rs = nothing
... ma con i seguenti dati
x000x666x
x011x222x
x011x333x
x012x444x
x012x555x
x111x011x
x111x012x
x666x777x
dove con x indico le posizioni di lista che non mi interessano, e cioè 0, 4 e 8
dà erroneamente il risultato
011
222
012
444
invece di
011
222
333
012
444
555
In pratica discende solo sui rami sinistri e non su quelli destri.
Qualcuno mi sà aiutare ???
Grazie.
Vincenzo

Rispondi quotando
