Jakiś problem?

TreeView w MS Access

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *