Ciao a tutti,
ho un problema che vorrei esporvi.

Ho una procedura che legge su una tabella DB2-400 e prende per ogni codice i suoi componenti.

Padre---> Figlio 1, figlio 2,....., figlio n

Ogni Padre può avere più Figli

Codice PHP:
'---------------- Funzione leggi da AS-------------
Sub PrendiFiglio(Padrex)
'
-------------Comandi da eseguire sul sistema AS/400------
    
Response.Write ("Padre da richiesta      = ") & Padrex "</br>"
    
CommandText "SELECT D§COAR, D§CODF FROM " Session("Library") & "." Session("FileName") & " WHERE (D§COAR = '"Padrex &"')"
    
CommandType adCmdText
    AS400Command
.CommandText CommandText
    AS400Command
.CommandType CommandType

Set AS400File_rs 
AS400Command.Execute

If (Err.Number Then
    
While NOT AS400File_rs.EOF
        
    
' verifica a video 
        Response.Write ("Padre AS          ----= ") & AS400File_rs(0) & "  "
        Response.Write ("Figlio            ----= ") & AS400File_rs(1) & "</br>"
    
    AS400File_rs.movenext
    Wend
    AS400File_rs.Close
Else
    DisplayError AS400Connection, Err.Number, Err.Description, Err.Source, "Main"
End If
End Sub 
e questa funziona !!

Ora ho la necessità di fare la stessa cosa per i Figli,
ogni Figlio diventa Padre e devo estrarre i rispettivi Figli e cosi via...

Ho pensato di fare una ricorsione interna alla SUB passando come parametro il primo figlio e via di seguito.


Codice PHP:
'---------------- Funzione leggi da AS-------------
Sub PrendiFiglio(Padrex)
'
-------------Comandi da eseguire sul sistema AS/400------
    
Response.Write ("Padre da richiesta      = ") & Padrex "</br>"
    
CommandText "SELECT D§COAR, D§CODF FROM " Session("Library") & "." Session("FileName") & " WHERE (D§COAR = '"Padrex &"')"
    
CommandType adCmdText
    AS400Command
.CommandText CommandText
    AS400Command
.CommandType CommandType

Set AS400File_rs 
AS400Command.Execute

If (Err.Number Then
    
While NOT AS400File_rs.EOF
        
        
' verifica a video 
        Response.Write ("Padre AS          ----= ") & AS400File_rs(0) & "  "
        Response.Write ("Figlio            ----= ") & AS400File_rs(1) & " </br>"
        
        Figlio= "& AS400File_rs(1) &"
        
    Call PrendiFiglio(Figlio)
        
    AS400File_rs.movenext
    Wend
    AS400File_rs.Close
Else
    DisplayError AS400Connection, Err.Number, Err.Description, Err.Source, "Main"
End If
End Sub 
Ma questo provoca il seguente errore:

Tipo di errore:
ADODB.Recordset (0x800A0E78)
L'operazione non è consentita se l'oggetto è chiuso.
/Webas/Distintabase/EstraiDB.asp, line 142


la riga dell'errore è questa : AS400File_rs.movenext

Io non vorrei crearmi una TB d'appoggio e non posso toccare il DB2,

come se mi chiudesse il recordset, ma la ricorsione non dovrebbe creare un stack che riporta i valori a ritroso nelle varie chiamate????

Qualche idea? Grazie