Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2010, 14:47
altairax
 
Fecha de Ingreso: julio-2008
Mensajes: 26
Antigüedad: 15 años, 10 meses
Puntos: 0
Recursividad VB

Tengo una rutina que explosiona o saca los hijos de los hijos, en VBA no tengo problemas, todo lo voy guardando en hoja de excel, todo funciona bien, a la hora de hacerlo en .net me encuentro varios inconvenientes. les dejo el código a ver si alguien puede aconsejarme.

Sub explosion(ByVal padre)
Dim ur As Integer
Dim query As String
Dim Rd As SqlDataReader
Dim comando As SqlCommand
query = "select algo, MB, CAMPO1, CAMPO2 de algua_tabla where otracosa ='algomas'"
Try
comando = New SqlCommand(query, cnFS) 'CNFS es mi conexion que la abrí desde antes de llamar a explosion
Rd = comando.ExecuteReader
ur = app_exc.Range("B65536").End(Excel.XlDirection.xlUp ).Row
While Rd.Read
If Rd.GetValue(1).ToString <> "B" Then
app_exc.Cells(ur, 2) = Rd.GetValue(2).ToString 'guardo valores en una hoja de excel que previamente abrí
app_exc.Cells(ur, 3) = Rd.GetValue(3).ToString
explosion(Rd.GetValue(0).ToString) 'AQUI APLICO LA RECURSIVIDAD PERO AL MOMENTO que
'vuelve a ejecutar el comando marca error que dice
'"There is already an open DataReader associated with this command which must be closed first."
'y pues sí pero se reejecuta la rutina y se queda abierto por que aun podría traer mas valores y
'el asunto es que va jerarquico como para escribir todos los valores y despues ver es distinto de "B" para volverlo a ejecutar
End If
End While
Rd.Close()
Catch ex As Exception
MsgBox(ex.Message)
'"There is already an open DataReader associated with this command which must be closed first."
End Try
End Sub