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
e questa funziona !!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 = 0 ) 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
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.
Ma questo provoca il seguente errore: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 = 0 ) 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
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

Rispondi quotando
