Foros del Web » Programación para mayores de 30 ;) » .NET »

Recursividad VB

Estas en el tema de Recursividad VB en el foro de .NET en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 07/05/2010, 14:47
 
Fecha de Ingreso: julio-2008
Mensajes: 26
Antigüedad: 15 años, 9 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

Etiquetas: recursividad, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:02.