Tecnico Informatico
Publicado por Pablo (1 intervención) el 30/05/2006 16:13:53
Buenas, necesito ayuda para hacer una funcion recursiva en Visual. La idea es que la funcion genere un arreglo de una consulta a BD, pero el arreglo debe estar ordenado segun un criterio distinto al que entrega la consulta. Les pongo un ejemplo.
[IDGrupo] [IDCuenta]
Activos ActivoCirculante
Activos ActivoFijo
ActivoCirculante CtasDelPersonal
ActivoCirculante CtasxCobrar
ActivoCirculante DeudoresPorVenta
ActivoFijo EquiposComputac
ActivoFijo Instalaciones
CtasDelPersonal 110823
CtasxCobrar 110701
CtasxCobrar 110702
DeudoresPorVenta 110601
EquiposComputac 120301
EquiposComputac 120302
Instalaciones 120402
Eso es lo que me devuelve la consulta. Pero lo que necesito es crear una funcion recursiva que me entrege un arreglo lineal que tenga la siguiente caracterisitcas.
Activos
ActivoCirculante
CtasDelPersonal
CtasxCobrar
DeudoresPorVenta
ActivoFijo
EquiposComputac
Instalaciones
Es decir en el arreglo solo deben ir (aparte del primero que es Activos, que ese se ingresa siempre) las ocurrencias de IDCuenta que se encuentran tambien en IDGrupo.
Esto es lo que tengo, pero no me funciona, no hace el retorno para empezar desde donde quedo, simplemente recorre una ves y se sale.
Private Function ArmaArregloNiveles(ByVal sGrupo$, ByRef aArrNiveles, ByRef Record As Recordset, Cont)
Dim i%
For i = 1 To Record.RecordCount
If VN(Record!IDGrupo, gSTR) = sGrupo Then
aArrNiveles(Cont) = sGrupo
Cont = Cont + 1
ArmaArregloNiveles Record!IDCuenta, aArrNiveles, Record, Cont
Record.MoveFirst
Else
Record.MoveNext
End If
Next i
End Function
Esop, espero que alguien entienda y me pueda ayudar. Tambien me servirían ejemplos de recursividad para comprenderlo un poco mejor.
De antemano gracias.
[IDGrupo] [IDCuenta]
Activos ActivoCirculante
Activos ActivoFijo
ActivoCirculante CtasDelPersonal
ActivoCirculante CtasxCobrar
ActivoCirculante DeudoresPorVenta
ActivoFijo EquiposComputac
ActivoFijo Instalaciones
CtasDelPersonal 110823
CtasxCobrar 110701
CtasxCobrar 110702
DeudoresPorVenta 110601
EquiposComputac 120301
EquiposComputac 120302
Instalaciones 120402
Eso es lo que me devuelve la consulta. Pero lo que necesito es crear una funcion recursiva que me entrege un arreglo lineal que tenga la siguiente caracterisitcas.
Activos
ActivoCirculante
CtasDelPersonal
CtasxCobrar
DeudoresPorVenta
ActivoFijo
EquiposComputac
Instalaciones
Es decir en el arreglo solo deben ir (aparte del primero que es Activos, que ese se ingresa siempre) las ocurrencias de IDCuenta que se encuentran tambien en IDGrupo.
Esto es lo que tengo, pero no me funciona, no hace el retorno para empezar desde donde quedo, simplemente recorre una ves y se sale.
Private Function ArmaArregloNiveles(ByVal sGrupo$, ByRef aArrNiveles, ByRef Record As Recordset, Cont)
Dim i%
For i = 1 To Record.RecordCount
If VN(Record!IDGrupo, gSTR) = sGrupo Then
aArrNiveles(Cont) = sGrupo
Cont = Cont + 1
ArmaArregloNiveles Record!IDCuenta, aArrNiveles, Record, Cont
Record.MoveFirst
Else
Record.MoveNext
End If
Next i
End Function
Esop, espero que alguien entienda y me pueda ayudar. Tambien me servirían ejemplos de recursividad para comprenderlo un poco mejor.
De antemano gracias.
Valora esta pregunta


0