Access
 sql >> база данни >  >> RDS >> Access

TreeView Control с подформуляри

Въведение.

В тази сесия на урока за контрол на TreeView ще използваме два подформуляра заедно с контролата TreeView в главния формуляр frmTreeViewtab . Импортирахме контролата ImageList с предварително заредените изображения от нашия по-ранен демонстрационен проект.
Ще използваме същата lvCategory и lvПродукти Таблици, които сме използвали за предишните си проекти.
lvCategory Първичен ключ на таблицата Стойностите на поле (CID) и поле за описание (Категория) са ключ на метода TreeView Nodes Add() и Текст стойности на параметрите, съответно.

Продуктите lvProducts Таблицата съдържа подробна информация за всеки продукт, като код на продукта, описание на складово-единично количество и каталожна цена.

Освен това, lvProducts таблицата има ParentID поле, което се актуализира със стойността на кода на категорията (CID). Всички артикули на продукти, които принадлежат към определена категория, се актуализират със стойността на полето CID (ID на категория) в полето ParentID. По този начин и двете таблици имат връзката главен-дете.

Записите за продукти имат две подформуляри на контролните страници на раздела. Първата страница съдържа данните Преглед подформуляр и втората страница има Редактиране подформуляр. Страницата за контрол на първия раздел показва всички записи на продукти, които принадлежат към определена категория на TreeView Control. Първите записи на подформуляр се показват за преглед и за избор на конкретен запис за редактиране във втория подформуляр.

Натоката запис или избран от потребителя записът в първия подформуляр е достъпен за редактиране във втория подформуляр, на втората страница на контролния раздел . Ключовите полета, маркирани със сив цвят, са заключени и не могат да бъдат редактирани.

Изглед на дърво с изглед за проектиране на подформуляри.

Изгледът за проектиране на формата frmTreeViewTab е даден по-долу:

Първите две необвързани текстови полета в основния формуляр се актуализират, когато потребителят избере елемент от категорията от контролата TreeView.

Третото необвързано текстово поле (име p_ID) първоначално се актуализира със стойността на уникалния идентификатор (PID) на първия запис на продукта, в противен случай стойността на избрания от потребителя запис се актуализира. Избраният запис на продукт в първия подформуляр е наличен във втория подформуляр за модификации.

Връзки към по-ранни учебни сесии.

По-ранните връзки към сесията на урока са дадени по-долу за лесна справка:

  1. Урок за контрол на Microsoft TreeView
  2. Създаване на меню за достъп с TreeView Control
  3. Присвояване на изображения към TreeView Control
  4. Присвояване на изображения към TreeView Control-2
  5. TreeView Control Маркирайте отметка за добавяне на изтриване на възли
  6. DreeView ImageCombo падащо меню за достъп
  7. Пренаредете възлите на TreeView чрез плъзгане и пускане
  8. ListView Control с MS-Access TreeView
  9. ListView Control Drag Drop Events

CatId необвързаното текстово поле е [Link Master Fields] Стойност на свойството на първия подформуляр.

Кодът на продукта в третото необвързано текстово поле (p_ID ) е свързан с [Link Master Fields] стойност на свойството на втория подформуляр в Изглед Раздел Страница.

p_ID Стойността на необвързаното текстово поле се актуализира, когато съдържанието на първия подформуляр се обнови или когато елемент е избран от потребителя.

Нормален изглед на екрана.

Нормалният изглед на frmTreeViewTab Формулярът е даден по-долу:


Ключовите полета в записа на продукта във втория подформуляр, със сив преден цвят, са заключени и нямат право да променят съдържанието.

Формулярът frmTreeViewTab VBA код на модула за клас:

Option Compare Database
Option Explicit

Dim tv As MSComctlLib.TreeView
Dim imgList As MSComctlLib.ImageList
Const Prfx As String = "X"

Private Sub Form_Load()
Dim db As DAO.Database
Dim tbldef As TableDef

'Initialize TreeView Nodes
    Set tv = Me.TreeView0.Object
    tv.Nodes.Clear
'Initialixe ImageList Object
    Set imgList = Me.ImageList3.Object
    
'Modify TreeView Font Properties
With tv
    .Font.Size = 9
    .Font.Name = "Verdana"
    .ImageList = imgList 'assign preloaded imagelist control
 End With
    
   LoadTreeView 'Create TreeView Nodes

End Sub

Private Sub LoadTreeView()
    Dim Nod As MSComctlLib.Node
    Dim strCategory As String
    Dim strCatKey As String
    Dim strProduct As String
    Dim strPKey As String
    Dim strBelongsTo As String
    Dim strSQL As String
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    
    'Initialize treeview nodes
     tv.Nodes.Clear
    
    strSQL = "SELECT lvCategory.CID, lvCategory.Category, "
    strSQL = strSQL & "lvcategory.BelongsTo FROM lvCategory ORDER BY lvCategory.CID;"
    
    Set db = CurrentDb
    Set rst = db.OpenRecordset(strSQL, dbOpenSnapshot)

    ' Populate all Records as Rootlevel Nodes
    Do While Not rst.BOF And Not rst.EOF
        If rst.AbsolutePosition = 1 Then
           Me![CatID] = rst![CID]
        End If
            strCatKey = Prfx & CStr(rst!CID)
            strCategory = rst!Category
            
            Set Nod = tv.Nodes.Add(, , strCatKey, strCategory, 1, 2)
            Nod.Tag = rst!CID
        rst.MoveNext
    Loop
    
    'In the second pass of the the same set of records
    'Move Child Nodes under their Parent Nodes
    rst.MoveFirst
    Do While Not rst.BOF And Not rst.EOF
        strBelongsTo = Nz(rst!BelongsTo, "")
        If Len(strBelongsTo) > 0 Then
            strCatKey = Prfx & CStr(rst!CID)
            strBelongsTo = Prfx & strBelongsTo
            strCategory = rst!Category
            
            Set tv.Nodes.Item(strCatKey).Parent = tv.Nodes.Item(strBelongsTo)
        End If
        rst.MoveNext
    Loop
    rst.Close
    

    TreeView0_NodeClick tv.Nodes.Item(1)
    
End Sub

Private Sub TreeView0_NodeClick(ByVal Node As Object)
Dim Cat_ID As String

'Initialize hidden unbound textbox 'Link Master Field' values
Cat_ID = Node.Tag
Me!CatID = Cat_ID
Me![xCategory] = Node.Text

End Sub

Private Sub cmdExit_Click()
    DoCmd.Close
End Sub


Тъй като използването на TreeView Control и ImageList Control и тяхното функциониране бяха обяснени подробно в по-ранните сесии, ще откриете, че само някои от тези по-ранни VBA подпрограми се появяват в горния модул за формуляр.

Досега сме проектирали няколко екрана с MS-Access TreeView, ListView, ImageList и ImageCombo Control и се надявам, че ще ги намерите като добра отправна точка за вашия собствен дизайн на интерфейса на проекта.

Проблеми с версията на MS-Office за TreeView Control.

Ако сте имали проблеми при стартирането на демонстрационната база данни във вашата версия на Microsoft Access, можете да се обърнете към следната връзка за някои коригиращи действия, които може да са полезни за решаване на проблема ви:

По-рано горните контроли не работеха под 64-битови системи. Но през септември 2017 г. Microsoft пусна актуализация на библиотеката MSCOMCTL.OCX и следното извлечение от документа на Microsoft е дадено по-долу за ваша информация:

Щракнете върху изображението на документа по-горе за пълния текст на документа за актуализация за 2017 г.:1707. Следната връзка предлага някои полезни съвети.
  • РЕШЕН MSCOMCTL.OCX ЗА ИЗТЕГЛЯНЕ РЕГИСТРЪТ 64 БИТОВ ПРОЗОР

С използването на горните контролни обекти TreeView можем да изградим по-добре изглеждащи и по-ефективни потребителски интерфейси за нашите нови проекти.

Изтеглете демонстрационната база данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Причини да превърнете приложенията за достъп в уеб-базирани приложения

  2. Свързване на PHP на Linux към Microsoft Access на Windows Share

  3. Използване на ADO асинхронно в Microsoft Access за ускоряване на формуляри

  4. Предимства и недостатъци от използването на съхранени процедури

  5. Microsoft Access DevCon във Виена, Австрия, 1-2 април 2017 г