sql >> Databáze >  >> RDS >> Access

Ovládací prvek TreeView s podformuláři

Úvod.

V této relaci výukového programu pro ovládání TreeView použijeme dva podformuláře spolu s ovládacím prvkem TreeView v hlavním formuláři frmTreeViewtab . Importovali jsme ovládací prvek ImageList s předinstalovanými obrázky z našeho dřívějšího demo projektu.
Budeme používat stejnou lvCategory a lvProducts Tabulky, které jsme použili pro naše dřívější projekty.
lvCategory Primární klíč tabulky hodnoty pole (CID) a pole popisu (kategorie) jsou Klíč metody TreeView Nodes Add() a Text hodnoty parametrů.

Produkty lvProducts Tabulka obsahuje podrobné informace o každém produktu, jako je kód produktu, popis skladové-jednotkové-množství a katalogová cena.

Kromě toho lvProducts tabulka má ParentID pole, které se aktualizovalo o hodnotu Kód kategorie (CID). Všechny položky produktu, které patří do určité kategorie, jsou aktualizovány hodnotou pole CID (ID kategorie) v poli ParentID. Tímto způsobem mají obě tabulky vztah hlavní a podřízený.

Záznamy produktu mají na ovládacích stránkách karet dva podformuláře. První stránka obsahuje data Zobrazit podformulář a na druhé stránce je Upravit podformulář. První karta ovládacího prvku Stránka zobrazuje všechny záznamy produktu, které patří do určité kategorie ovládacího prvku TreeView. Záznamy prvního podformuláře jsou zobrazeny pro prohlížení a pro výběr konkrétního záznamu pro úpravy ve druhém podformuláři.

Aktuální záznam nebo vybrané uživatelem záznam na prvním podformuláři je k dispozici pro úpravy na druhém podformuláři, na druhé stránce ovládacího prvku Tab. Pole Klíč zvýrazněná šedou barvou jsou uzamčena a nelze je upravovat.

Stromové zobrazení s návrhovým zobrazením podformulářů.

Návrhové zobrazení formuláře frmTreeViewTab je uveden níže:

První dvě nevázaná textová pole v hlavním formuláři jsou aktualizována, když uživatel vybere položku Kategorie z ovládacího prvku TreeView.

Třetí nevázané textové pole (název p_ID) je zpočátku aktualizováno hodnotou jedinečného ID (PID) prvního záznamu produktu, jinak se aktualizuje hodnota uživatelem vybraného záznamu. Vybraný záznam produktu v prvním podformuláři je k dispozici pro úpravy ve druhém podformuláři.

Odkazy na dřívější výukové programy.

Odkazy na dřívější výukové relace jsou uvedeny níže pro přehled:

  1. Výukový program pro ovládání Microsoft TreeView
  2. Vytvoření přístupové nabídky pomocí TreeView Control
  3. Přiřazení obrázků k ovládacímu prvku TreeView
  4. Přiřazení obrázků k TreeView Control-2
  5. Ovládací prvek TreeView zaškrtněte políčko Přidat a odstranit uzly
  6. Rozbalovací nabídka přístupu TreeView ImageCombo
  7. Změňte uspořádání uzlů TreeView přetažením
  8. Ovládání ListView s MS-Access TreeView
  9. Události přetažení ovládacího prvku ListView

CatId nevázané textové pole je [Link Master Fields] Hodnota vlastnosti prvního podformuláře.

Kód produktu na třetím nevázaném textovém poli (p_ID ) je propojen s [Pole předlohy odkazů] hodnotu vlastnosti druhého podformuláře v Zobrazení Stránka záložky.

p_ID hodnota nevázaného textového pole se aktualizuje, když se obnoví obsah prvního podformuláře nebo když uživatel vybere položku.

Normální pohled na obrazovku.

Normální zobrazení frmTreeViewTab formulář je uveden níže:


Pole Klíč v záznamu produktu na druhém podformuláři s šedou barvou popředí jsou uzamčena a není jim dovoleno upravovat obsah.

Formulář frmTreeViewTab Kód VBA modulu třídy:

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


Vzhledem k tomu, že použití TreeView Control a ImageList Control a jejich fungování byly podrobně vysvětleny v předchozích relacích, najdete ve výše uvedeném modulu formuláře pouze několik z těchto dřívějších podprogramů VBA.

Dosud jsme navrhli několik obrazovek s MS-Access TreeView, ListView, ImageList a ImageCombo Control a doufám, že je najdete jako dobrý referenční bod pro svůj vlastní návrh rozhraní projektu.

Problémy s verzí MS Office pro ovládání TreeView.

Pokud jste měli nějaké problémy se spuštěním ukázkové databáze ve vaší verzi Microsoft Access, můžete se podívat na následující odkaz, kde najdete některá nápravná opatření, která mohou být užitečná k vyřešení vašeho problému:

Dříve výše uvedené ovládací prvky neběžely pod 64bitovými systémy. V září 2017 však společnost Microsoft vydala aktualizaci knihovny MSCOMCTL.OCX a níže pro vaši informaci uvádíme následující výňatek z dokumentu společnosti Microsoft:

Kliknutím na výše uvedený obrázek dokumentu zobrazíte úplný text aktualizace z roku 2017:Dokument 1707. Následující odkaz nabízí několik užitečných rad.
  • VYŘEŠENO MSCOMCTL.OCX STÁHNOUT REGISTRACI 64BITOVÝCH WINDOWS

S použitím výše uvedených ovládacích objektů TreeView můžeme vytvořit lépe vypadající a výkonnější uživatelská rozhraní pro naše nové projekty.

Stáhněte si ukázkovou databázi.



  1. Oracle:PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE

  2. Funkce MySQL RAND() – Generování náhodného čísla v MySQL

  3. REGEX, chcete-li vybrat n-tou hodnotu ze seznamu, s možností null

  4. Spojte hodnotu druhého sloupce, pokud je hodnota prvního sloupce stejná