Proit hozzáférés építési szakaszok a fa - treeview és a VBA

Tegyük fel, hogy van egy tábla az egyetemi tanszékek (tblDepartment) formátumban:
intID - strDepartmentName - intParentID
ahol
intID - egység azonosítója
strDepartmentName - egység neve,
intParentID - azonosítója a szülői egység.

A gyökér elem hivatkozunk, mint a „szülő” magának.
Szintén a kényelem, a kivitelező a szülő tábla a területen, akkor megadhatja helyettesítés, utalva ugyanannál az asztalnál:

Proit hozzáférés építési szakaszok a fa - treeview és a VBA


kérelmére helyettesíthető a szöveg:

SELECT tblDepartment. strDepartmentName AS P drazde L ix,

tblDepartment_1. strDepartmentName AS dite P o l s,

AZ tblDepartment LEFTJOIN tblDepartment AS tblDepartment_1

ON tblDepartment. intParentID = tblDepartment_1. intID

ORDERBY tblDepartment. strDepartmentName;

Ezt követően, a szülő oszlop, tudjuk választani nem azonosító és nevében kapcsolt vállalkozások (de ID továbbra is tárolni fogja a oszlop).

Ennek eredményeként képesek leszünk, hogy töltse ki a táblázatot az alábbiak szerint:

Proit hozzáférés építési szakaszok a fa - treeview és a VBA


Most megépíteni a fa. Ehhez hozzon létre egy üres űrlapot tervezés nézetben és válassza a „ActiveX elemek”:

Proit hozzáférés építési szakaszok a fa - treeview és a VBA


A listában jelölje ki az elemet „Microsoft TreeView vezérlő (6,0)”

Proit hozzáférés építési szakaszok a fa - treeview és a VBA


A kiválasztott terméket adunk a formában a megfelelő helyen a megfelelő méretet:

Proit hozzáférés építési szakaszok a fa - treeview és a VBA


Ezután lépjen a Visual Basic kódot mód és adjuk hozzá a következő kódot:

Opció összehasonlítása Database

Dolgozni egy csomópont, ahol a szülők nem null

Opció összehasonlítása Database

Private Sub Form_Load ()
homályos strRoot
strRoot = ""

Private Sub addNode (ByVal ParentID As String)
Állítsa rsCommon = Új ADODB.Recordset

Ha ParentID = „” Akkor
rsCommon.Open "SELECT EIA, Ðîäèòåëü, Èìÿ FROM Req DP WHERE IsNull (Ðîäèòåëü)" "ORDER BY Èìÿ" CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Do While Not rsCommon.EOF
TreeViewDep.Nodes.Add. Str (rsCommon ( "EIA")) "$ KEY", rsCommon ( "Èìÿ")
TreeViewDep.Nodes.Item (Str (rsCommon ( "EIA")) "$ KEY"). Expanded = True
AddNode (Str (rsCommon ( "EIA")))
rsCommon.MoveNext
hurok
rsCommon.Close
Állítsa rsCommon = Semmi

más
rsCommon.Open „SELECT EIA, Ðîäèòåëü, Èìÿ FROM Req DP Amikor a KHT <> Ðîäèòåëü ÉS Ðîäèòåëü = " ParentID "ORDER BY Èìÿ" CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Do While Not rsCommon.EOF
TreeViewDep.Nodes.Add ParentID "$ KEY", tvwChild, Str (rsCommon ( "EIA")) "$ KEY", rsCommon ( "Èìÿ")
TreeViewDep.Nodes.Item (Str (rsCommon ( "EIA")) "$ KEY"). Expanded = True
AddNode (Str (rsCommon ( "EIA")))
rsCommon.MoveNext
hurok
rsCommon.Close
Állítsa rsCommon = Semmi
End If

Helló Doros ki kell tölteni részei a fa. mert több ezer elemek, az építőiparban a fa tegyen konkrét időben. Most, betöltve egy ága kattintva az elemet. Kérdés: hogyan lehet közel a „+” ikonra elem. És ez kényelmetlen - nem kattint, akkor nem tudom, hogy ez a gyerek elem helyzetben, vagy nem

Még nem dolgoztam ezen ellenőrzés. Alternatívaként megjelenik minden eleme zárójelben a gyermekek száma? Vagy feltölteni egy elemre kattint legalább egyik gyerek?

Köszönöm a tanácsot. Most a probléma, és eldönti, rakodási gyermek elemek. De ez nem túl kényelmes, figyelembe véve a rekurzív természete számozása elemek amit használtam. Szerettem volna egy kicsit könnyebb magad.

Kapcsolódó cikkek