Estoy intentando adaptar una función de Visual Basic a gambas que rellena un árbol de forma recursiva, sin límite de niveles. La función toma los datos de una tabla con la siguiente estructura:
Id Denominacion IdPadre
1 Categoría 1 -
2 Categoría 2 1
3 Categoría 3 -
4 Categoría 4 2
...
Que daría una estructura sigueinte:
- Categoría 1
-- Categoría 2
--- Categoría 4
- Categoría 3
Y la función que he creado es la siguiente:
Private Function fncRellenarArbol(Optional padre As Integer)
If padre = 0
DatosArbol = mdlDatos.objConexion.Exec("SELECT * FROM tabla where IdPadre is null")
Else
DatosArbol = mdlDatos.objConexion.Exec("SELECT * FROM tabla where IdPadre =" & padre)
End If
While DatosArbol.Available
If padre = 0
Me.Tree.Add(DatosArbol["Id"], DatosArbol["Denominacion"])
Else
Me. Tree.Add(DatosArbol["Id"], DatosArbol["Denominacion"],, DatosArbol["IdPadre"])
End If
fncRellenarArbol(DatosArbol["Id"])
DatosArbol.MoveNext
Wend
End
If padre = 0
DatosArbol = mdlDatos.objConexion.Exec("SELECT * FROM tabla where IdPadre is null")
Else
DatosArbol = mdlDatos.objConexion.Exec("SELECT * FROM tabla where IdPadre =" & padre)
End If
While DatosArbol.Available
If padre = 0
Me.Tree.Add(DatosArbol["Id"], DatosArbol["Denominacion"])
Else
Me. Tree.Add(DatosArbol["Id"], DatosArbol["Denominacion"],, DatosArbol["IdPadre"])
End If
fncRellenarArbol(DatosArbol["Id"])
DatosArbol.MoveNext
Wend
End
La cuestión es que se llama a la función desde si misma, y creo que el contenedor de datos 'DatosArbol' toma los nuevos valores y se 'olvida de los anteriores'.
¿ Tenéis alguna idea ?, ¿tenéis alguna función parecida ?. Muchas gracias.