Visual Basic.NET - rellenar un TreeView desde tabla Access

 
Vista:

rellenar un TreeView desde tabla Access

Publicado por Javier (1 intervención) el 12/09/2008 22:55:10
Hola

Estoy utilizando el siguente codigo para rellenar un TreeView desde una tabla de Access, pero no consigo que me funcione.

No me da ningun error pero el contro se queda en blanco.

El codigo no entra en el bucle For Each dataRowCurrent, es como si la coleccion estubiera vacia pero no entiendo el porque

El codigo es el siguiente:

'Declarando DataAdapter, DataSet, Parametro a utilizar
Private oDA As OleDbDataAdapter
Private oDS As DataSet

conexion = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Settings.CadenaDeConexion)

Dim SQLZONAS As String

SQLZONAS = "SELECT ZONAS.ID_Zona, ZONAS.ZONA, ZONAS.Nodo, ZONAS.NodoPadre FROM ZONAS ORDER BY ZONAS.Nodo, ZONAS.NodoPadre;"

oDA = New OleDbDataAdapter(SQLZONAS, conexion) 'SqlDataAdapter '("", oCNT)
oDS = New DataSet
oDA.Fill(oDS, "ZONAS")

If oDS.Tables("ZONAS").Rows.Count > 0 Then
GoTo Continua
Else
MsgBox("La consulta esta vacia", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If

Continua:

'Llamar al Método Recurrente por primera vez que llenará el TreeView()
CrearNodosDelPadre("0", Nothing)

'Destruyendo(Objetos)
oP1 = Nothing
oDA = Nothing
oDS = Nothing

'Cerrando la Coneccion
conexion.Close()

End Sub

Private Sub CrearNodosDelPadre(ByVal indicePadre As Integer, ByVal nodePadre As TreeNode)
'Esta es la funcion recursiva, que llena el TreeView

Dim dataViewHijos As DataView

dataViewHijos = New DataView(oDS.Tables("ZONAS"))

dataViewHijos.RowFilter = oDS.Tables("ZONAS").Columns("NODO").ColumnName + " = " + indicePadre.ToString()

' Agregar al TreeView los nodos Hijos que se han obtenido en el DataView.
For Each dataRowCurrent As DataRowView In dataViewHijos

Dim nuevoNodo As New TreeNode
nuevoNodo.Text = dataRowCurrent("ZONA").ToString().Trim()

' si el parámetro nodoPadre es nulo es porque es la primera llamada, son los Nodos
' del primer nivel que no dependen de otro nodo.
If nodePadre Is Nothing Then
TreeView_Edificios.Nodes.Add(nuevoNodo)
Else
' se añade el nuevo nodo al nodo padre.
nodePadre.Nodes.Add(nuevoNodo)
End If

' Llamada recurrente al mismo método para agregar los Hijos del Nodo recién agregado.
CrearNodosDelPadre(Int32.Parse(dataRowCurrent("NodoPadre").ToString()), nuevoNodo)
Next dataRowCurrent

End Sub

La tabla de la que cojo los datos es la siguiente:

Campo "NODO" tipo Integer
Campo "NodoPadre" tipo integer
Campo "ZONA" tipo text 8 (Es el nombre del nodo a mostrar en el TreeView)

Los datos de prueba que tengo, son:

NODO NodoPadre ZONA

1 0 Nodo1
2 1 Nodo11
3 1 Nodo12
4 2 Nodo111
5 0 Nodo2

La version que utilizo es Visual Studio 2005

Si alguien puede ayudarme, se lo agradeceria, estoy totalmente atancado con este asunto. No tengo ni idea de por que no entra en el bucle.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:rellenar un TreeView desde tabla Access

Publicado por julio (1 intervención) el 26/11/2008 23:54:26
metete un tiro
jaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar