Private Sub Form_Load()
FillStructureTree
End Sub
Sub FillStructureTree()
Dim xTree As MSComctlLib.TreeView
Dim sql As String
Dim rsBoss As DAO.Recordset
Dim rsBiuro As DAO.Recordset
Dim rsTeam As DAO.Recordset
Dim strSKU As String
Dim strPartDescription As String
Dim strPartNumber As Integer
Dim strSKUkey As String
Dim strPartKey As String
Dim strSql As String
Dim wydzialID As Integer
Set xTree = Me.tvStructure.Object
'wczytanie danych od dyrektorach
sql = „SELECT Wydziały.ID_Wydział, [IMIE] & ’ ’ & [Nazwisko] AS boss ” & _
„FROM Wydziały INNER JOIN Pracownicy ON Wydziały.ID_Prac = Pracownicy.ID_Prac ” & _
„WHERE (((Wydziały.poziom) = 0 Or (Wydziały.poziom) = 1)) ” & _
„ORDER BY Wydziały.poziom, Wydziały.[Nazwa wydziału];”
Set rsBoss = CurrentDb.OpenRecordset(sql)
Do While Not rsBoss.EOF
strSKU = rsBoss.Fields(„boss”) 'pobranie informacji jak nazywa się dyrektor
strSKUkey = „SKU” & rsBoss.Fields(„ID_Wydział”) 'pobranie informacji o numerze identyfikacyjnym jednostki
wydzialID = rsBoss.Fields(„ID_Wydział”)
xTree.Nodes.Add , , strSKUkey, strSKU 'utworzenie gałęzi I-go poziomu
'podbranie informacji o komórkach podległych poszczególnym dyrektorom
sql = „SELECT Wydziały.ID_Wydział, Wydziały.[Nazwa wydziału]” & _
„FROM Wydziały INNER JOIN Pracownicy ON Wydziały.ID_Prac = Pracownicy.ID_Prac ” & _
„WHERE Wydziały.poziom = 2 And Wydziały.Jed_nad =” & wydzialID & _
” ORDER BY Wydziały.[Nazwa wydziału];”
Set rsBiuro = CurrentDb.OpenRecordset(sql)
Do While Not rsBiuro.EOF
strPartKey = „Part” & rsBiuro.Fields(„ID_Wydział”)
strPartDescription = rsBiuro.Fields(„Nazwa wydziału”)
wydzialID = rsBiuro.Fields(„ID_Wydział”)
xTree.Nodes.Add strSKUkey, tvwChild, strPartKey, strPartDescription
'pobranie informacji o komórkach w ramach danej komórki organziacyjnej
sql = „SELECT Wydziały.ID_Wydział, Wydziały.[Nazwa wydziału] ” & _
„FROM Wydziały INNER JOIN Pracownicy ON Wydziały.ID_Prac = Pracownicy.ID_Prac ” & _
„WHERE Wydziały.poziom = 3 And Wydziały.Jed_nad = ” & wydzialID & _
” ORDER BY Wydziały.[Nazwa wydziału];”
Set rsTeam = CurrentDb.OpenRecordset(sql)
Do While Not rsTeam.EOF
strTeamKey = „Team” & rsTeam.Fields(„ID_Wydział”)
strPartDescription = rsTeam.Fields(„Nazwa wydziału”)
xTree.Nodes.Add strPartKey, tvwChild, strTeamKey, strPartDescription
rsTeam.MoveNext
Loop
rsBiuro.MoveNext
Loop
rsBoss.MoveNext
Loop
End Sub
'obsługa kliknięcia na dowolnym węźle. Wystarczy utworzyć procedurę bez żadngo 'wiązania z obiektem. Ważne aby w nazwie procedury była nazwa obiektu, którego ona 'dotyczy – w tym wypadku tvStructure
Private Sub tvStructure_NodeClick(ByVal selectedNode As Object)
Debug.Print Val(selectedNode.Key) & ” ” & selectedNode.Text
End Sub