Access
 sql >> Baza danych >  >> RDS >> Access

Kontrola TreeView z podformularzami

Wprowadzenie.

W tej sesji samouczka kontrolki TreeView użyjemy dwóch podformularzy wraz z kontrolką TreeView na głównym formularzu frmTreeViewtab . Zaimportowaliśmy kontrolkę ImageList ze wstępnie załadowanymi obrazami z naszego wcześniejszego projektu demonstracyjnego.
Będziemy używać tej samej lvCategory i lvProducts Tabele, których używaliśmy w naszych wcześniejszych projektach.
Kategoria lv Klucz główny tabeli Wartości pola (CID) i pola opisu (kategoria) to Klucz metody TreeView Nodes Add() i Tekst odpowiednio wartości parametrów.

lvProducts W tabeli znajdują się szczegółowe informacje o każdym produkcie, takie jak kod produktu, opis stan-jednostka-ilość i cena katalogowa.

Poza tym lvProducts tabela ma identyfikator rodzica pole, które zostało zaktualizowane wartością kodu kategorii (CID). Wszystkie produkty należące do określonej kategorii są aktualizowane wartością pola CID (ID kategorii) w polu ParentID. W ten sposób obie Tabele mają relację nadrzędny-podrzędny.

Rekordy produktów mają dwa podformularze na stronach kontrolnych karty. Pierwsza strona zawiera dane Wyświetl podformularz, a druga strona ma Edytuj podformularz. Strona kontrolna pierwszej zakładki wyświetla wszystkie rekordy produktu, które należą do określonej kategorii kontrolki TreeView. Rekordy pierwszego podformularza są wyświetlane do przeglądania i wyboru konkretnego rekordu do edycji w drugim podformularzu.

Obecny rekord lub wybrany przez użytkownika rekord w pierwszym podformularzu jest dostępny do edycji w drugim podformularzu, na drugiej stronie kontrolki Tab. Pola Kluczowe podświetlone szarym kolorem są zablokowane i nie można ich edytować.

Widok drzewa z widokiem projektu podformularzy.

Widok projektu formularza frmTreeViewTab podano poniżej:

Pierwsze dwa niezwiązane pola tekstowe w formularzu głównym są aktualizowane, gdy użytkownik wybierze element kategorii z kontrolki TreeView.

Trzecie niezwiązane pole tekstowe (nazwa p_ID) jest początkowo aktualizowane wartością unikalnego identyfikatora (PID) pierwszego rekordu produktu, w przeciwnym razie wartość rekordu wybranego przez użytkownika zostanie zaktualizowana. Wybrany rekord produktu w pierwszym podformularzu jest dostępny w drugim podformularzu do modyfikacji.

Linki do wcześniejszych sesji samouczków.

Linki do wcześniejszej sesji samouczka są podane poniżej w celach informacyjnych:

  1. Samouczek sterowania Microsoft TreeView
  2. Tworzenie menu dostępu za pomocą TreeView Control
  3. Przypisywanie obrazów do kontrolki TreeView
  4. Przypisywanie obrazów do TreeView Control-2
  5. Kontrola TreeView Zaznacz opcję Dodaj usuń węzły
  6. Rozwijane menu dostępu TreeView ImageCombo
  7. Ponownie rozmieszczaj węzły TreeView przez przeciąganie i upuszczanie
  8. Kontrola ListView z MS-Access TreeView
  9. Zdarzenia przeciągania i upuszczania sterowania ListView

CatId niezwiązane pole tekstowe to [Pola nadrzędne linków] Wartość właściwości pierwszego podformularza.

Kod produktu w trzecim niezwiązanym polu tekstowym (p_ID ) jest połączony z [Polami głównymi linków] wartość właściwości drugiego podformularza w Widoku Strona zakładki.

p_ID niezwiązana wartość pola tekstowego jest aktualizowana po odświeżeniu zawartości pierwszego podformularza lub po wybraniu elementu przez użytkownika.

Normalny widok ekranu.

Normalny widok frmTreeViewTab formularz jest podany poniżej:


Pola kluczowe w rekordzie produktu w drugim podformularzu, z szarym kolorem wstępnym, są zablokowane i nie można ich modyfikować.

Formularz frmTreeViewTab Kod VBA modułu klasy:

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


Ponieważ użycie kontrolki TreeView i kontrolki ImageList oraz ich działanie zostały szczegółowo wyjaśnione we wcześniejszych sesjach, tylko kilka z tych wcześniejszych podprogramów VBA pojawia się w powyższym formularzu Moduł.

Do tej pory zaprojektowaliśmy kilka ekranów z MS-Access TreeView, ListView, ImageList i ImageCombo Control i mam nadzieję, że uznasz je za dobry punkt odniesienia dla własnego projektu interfejsu projektu.

Problemy z wersją MS-Office dla TreeView Control.

Jeśli wystąpiły jakiekolwiek problemy z uruchomieniem demonstracyjnej bazy danych w Twojej wersji programu Microsoft Access, możesz skorzystać z poniższego łącza, aby uzyskać informacje o działaniach naprawczych, które mogą być pomocne w rozwiązaniu problemu:

Wcześniej powyższe Kontrole nie działały pod 64-bitowymi systemami. Jednak we wrześniu 2017 r. firma Microsoft wydała aktualizację biblioteki MSCOMCTL.OCX, a poniższy fragment dokumentu Microsoft jest podany poniżej w celach informacyjnych:

Kliknij powyższy obraz dokumentu, aby uzyskać pełny tekst aktualizacji 2017:1707. Poniższy link sugeruje kilka pomocnych wskazówek.
  • ROZWIĄZANY MSCOMCTL.OCX POBIERZ REJESTR 64-BITOWY WINDOWS

Korzystając z powyższych obiektów kontrolnych TreeView, możemy budować lepiej wyglądające i wydajniejsze interfejsy użytkownika dla naszych nowych projektów.

Pobierz demonstracyjną bazę danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę stwierdzić, czy baza danych jest wysokiej jakości?

  2. Jaka jest różnica między MS Access a SQL?

  3. 10 technik tworzenia formularzy w programie Microsoft Access

  4. Jak automatycznie kompaktować i naprawiać bazę danych w programie Access 2016

  5. Otwieranie lub łączenie tekstu lub programu Excel jako źródeł danych w programie Microsoft Access