En SQL
Create database Ejemplo
go
use ejemplo
go
create table rutina
(codigo char(3) primary key,
descripcion varchar(7),
padre char(3))
go
insert into rutina values ('001','Item 1','')
insert into rutina values ('002','Item 2','001')
insert into rutina values ('003','Item 3','001')
insert into rutina values ('004','Item 4','001')
insert into rutina values ('005','Item 5','002')
insert into rutina values ('006,'Item 6','002')
insert into rutina values ('007','Item 7','005')
insert into rutina values ('008','Item 8','005')
insert into rutina values ('009','Item 9','005')
insert into rutina values ('010','Item 10','006')
En .NET
Crea un nuevo proyecto, 1 formulario(Form1) y un control treeview(treeview1)
Imports System.Data.SqlClient
Public Class Form1
Dim con As New SqlConnection("integrated security=sspi;data source=(local);initial catalog=ejemplo")
Dim da As SqlDataAdapter
Dim dtb As DataTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
da = New SqlDataAdapter("select * from rutina", con)
dtb = New DataTable
da.Fill(dtb)
Dim a As Integer
For a = 0 To dtb.Rows.Count - 1
If dtb.Rows(a)("padre").ToString = " " Then
TreeView1.Nodes.Add(dtb.Rows(a)("descripcion").ToString)
añade(dtb.Rows(a)("codigo").ToString, TreeView1.Nodes(TreeView1.Nodes.Count - 1))
End If
Next
End Sub
'Añade, funcion recursiva
Sub añade(ByVal cod As String, ByVal node As TreeNode)
da = New SqlDataAdapter("select * from rutina", con)
dtb = New DataTable
da.Fill(dtb)
'variable que recorre las filas de la tabla
Dim a As Integer
For a = 0 To dtb.Rows.Count - 1
If dtb.Rows(a)("padre").ToString = cod Then
node.Nodes.Add(dtb.Rows(a)("descripcion").ToString)
añade(dtb.Rows(a)("codigo").ToString, node.Nodes(node.Nodes.Count - 1))
End If
Next
End Sub
End Class
Espero sea util, mas demore poniendole color ....
Necesito explicar ¿?