CREATE TABLE Table1 (AutoID AUTOINCREMENT, Name TEXT, ParentID INTEGER) < / pre>" />

Генерація дерева елементів в ієрархічному поданні в ms access через компонент treeview -

Генерація дерева елементів в ієрархічному поданні в MS Access через компонент TreeView

ActiveX компонент TreeView в MS Access служить для відображення складних даних, що відображаються у вигляді списку або дерева. Рівень вкладеності елементів дерева не обмежений. Для роботи з цим компонентом потрібно підключити посилання (References) на Microsoft Windows Common Controls 6.0 (SP6).

Для роботи з деревом потрібно створити таблицю наприклад з ім'ям Table1. У ній вкажемо поля - AutoID, Name, ParentID. Нехай буде для зручності автоінкрементне поле AutoID (це необов'язково, але тоді доведеться його вводити вручну дотримуючись унікальність значень з цього стовпцю). Скрипт, який дозволить Вам швидко створити таблицю для прикладу в MS Access:

Для зручності роботи ми будемо застосовувати клас cTreeClass. (Не плутайте зі звичайним модулем!) Назвати модуль класу можете, як хочете, головне не забути потім правильно до нього звернутися в формах (через створення об'єкта - ключове слово New). Наш модуль класу названий з ім'ям "cTreeClass".
Перевага даного модуля класу, як Ви вже помітили, в тому що він чіпляється на будь-яку таблицю, якщо вона містить хоча б три поля (ключ, назва, код одного з батьків).

У самій формі, де доданий компонент TreeView, ми в завантаження поміщаємо об'єкт з посиланням на наш клас і инициализируем наші змінні:


Щоб призначити обробник на дерево потрібно буде написати такий код:

При натисканні на будь-який елемент в списку ми отримаємо повідомлення з номером присвоєного ключа.

Спробував скористатися. Не працює. Невідповідність типів в Private Sub Form_Load () Dim tr As Object Set tr = New cTreeClass * Set tr.Tree = Me.xTree.Object * tr.tbl = "Table1" tr.fldKey = "AutoID" tr.fldParent = "ParentID" tr.fldText = "Name" tr.GenerateTree End Sub

Тому що клас треба назвати cTreeClass а не Class1 як за замовчуванням

І не забудь що ParentID у кореневого елемента має дорівнювати 0. Дерево за замовчуванням буде згорнутим. Можна його відразу розкрити: Dim nodThis As MSComctlLib.Node For Each nodThis In Me.xTree.Nodes # 'Loop through all nodes nodThis.Expanded = True Next nodThis With Me.xTree .selecteditem.EnsureVisible .SetFocus End With

Доброго дня. На рядку * Set tr.Tree = Me.xTree.Object * видає повідомлення: "Object doesn # 't support this property or method"

А компонент MSComctlLib додали: C: \ Windows \ System32 \ MSCOMCTL.OCX або C: \ Windows \ SysWOW64 \ MSCOMCTL.OCX (для 64-х розрядної ОС)?

Іноді потрібно скинути лічильник: ALTER TABLE Table1 ALTER COLUMN AutoID COUNTER (1, 1)

Android App Reader

Схожі статті