sql >> Database >  >> RDS >> Access

TreeView-besturingselement met subformulieren

Inleiding.

In deze sessie van de TreeView Control-zelfstudie gebruiken we twee subformulieren samen met het TreeView-besturingselement op het hoofdformulier frmTreeViewtab . We hebben het ImageList-besturingselement geïmporteerd met de vooraf geladen afbeeldingen uit ons eerdere demoproject.
We gebruiken dezelfde lvCategory en lvProducts Tabellen die we hebben gebruikt voor onze eerdere projecten.
De lvCategory Tabel Primaire sleutel field (CID) en Description field (Category) waarden zijn de Key van de TreeView Nodes Add() methode en Tekst parameterwaarden, respectievelijk.

De lvProducts Tabel bevat gedetailleerde informatie over elk product, zoals productcode, beschrijving voorraad-eenheid-hoeveelheid en catalogusprijs.

Daarnaast zijn de lvProducts tabel heeft de ParentID veld dat is bijgewerkt met de waarde van de categoriecode (CID). Alle productitems die tot een bepaalde categorie behoren, worden bijgewerkt met de veldwaarde (Categorie-ID) CID in het veld ParentID. Op deze manier hebben beide tabellen de hoofd-kind relatie.

De productrecords hebben twee subformulieren op de tabbladbesturingspagina's. De eerste pagina heeft de gegevens Bekijken subformulier en de tweede pagina heeft de Bewerken subformulier. De eerste tabbladbesturingspagina geeft alle productrecords weer die tot een bepaalde categorie van het TreeView-besturingselement behoren. De eerste subformulierrecords worden weergegeven om te bekijken en om een ​​bepaald record te selecteren om te bewerken op het tweede subformulier.

De huidige opnemen of door gebruiker geselecteerd record op het eerste subformulier is beschikbaar voor bewerking op het tweede subformulier, op de tweede pagina van het Tab-besturingselement. De met grijze kleur gemarkeerde Sleutelvelden zijn vergrendeld en kunnen niet worden bewerkt.

TreeView met Subforms-ontwerpweergave.

De ontwerpweergave van het formulier frmTreeViewTab wordt hieronder gegeven:

De eerste twee ongebonden tekstvakken op het hoofdformulier worden bijgewerkt wanneer de gebruiker een categorie-item selecteert in het TreeView-besturingselement.

Het derde niet-gebonden tekstvak (naam p_ID) wordt aanvankelijk bijgewerkt met de unieke ID (PID)-waarde van het eerste productrecord, anders wordt de waarde van het door de gebruiker geselecteerde record bijgewerkt. Het geselecteerde productrecord op het eerste subformulier is beschikbaar op het tweede subformulier voor wijzigingen.

Links naar eerdere zelfstudiesessies.

De eerdere Tutorial Sessie-links worden hieronder gegeven ter referentie:

  1. Microsoft TreeView Control-zelfstudie
  2. Toegangsmenu maken met TreeView Control
  3. Afbeeldingen toewijzen aan TreeView-besturingselement
  4. Afbeeldingen toewijzen aan TreeView Control-2
  5. TreeView Control Vinkje Toevoegen Verwijder Nodes
  6. Vervolgkeuzelijst TreeView ImageCombo-toegang
  7. Herschik TreeView-knooppunten door middel van slepen en neerzetten
  8. ListView-besturing met MS-Access TreeView
  9. ListView Control Drag Drop-gebeurtenissen

De CatId niet-gebonden tekstvak is de [Link Master Fields] Eigenschapswaarde van het eerste subformulier.

De productcode in het derde ongebonden tekstvak (p_ID ) is gekoppeld aan de [Hoofdvelden koppelen] eigenschapswaarde van het tweede subformulier op de View Tabblad.

De p_ID niet-gebonden tekstvakwaarde wordt bijgewerkt wanneer de inhoud van het eerste subformulier wordt vernieuwd of wanneer een item door de gebruiker is geselecteerd.

Normale weergave van het scherm.

De normale weergave van de frmTreeViewTab formulier is hieronder weergegeven:


De sleutelvelden op het productrecord op het tweede subformulier, met grijze voorkleur, zijn vergrendeld en mogen de inhoud niet wijzigen.

Het formulier frmTreeViewTab Klassenmodule VBA-code:

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


Aangezien het gebruik van TreeView Control en ImageList Control en hun werking allemaal in detail werden uitgelegd in de eerdere sessies, vindt u slechts enkele van die eerdere VBA-subroutines in het bovenstaande formuliermodule.

We hebben tot nu toe verschillende schermen ontworpen met MS-Access TreeView, ListView, ImageList en ImageCombo Control en ik hoop dat u ze zult vinden als een goed referentiepunt voor uw eigen projectinterface-ontwerp.

Problemen met de MS-Office-versie voor TreeView Control.

Als u problemen had met het uitvoeren van de demodatabase in uw versie van Microsoft Access, kunt u de volgende link raadplegen voor enkele corrigerende acties, die nuttig kunnen zijn om uw probleem op te lossen:

Eerder werden de bovenstaande besturingselementen niet uitgevoerd onder 64-bits systemen. Maar in september 2017 heeft Microsoft een update van MSCOMCTL.OCX Library uitgebracht en het volgende uittreksel van het Microsoft-document wordt hieronder ter informatie gegeven:

Klik op de bovenstaande documentafbeelding voor de volledige tekst van het 2017 Update:1707-document. De volgende link geeft enkele handige tips.
  • OPGELOST MSCOMCTL.OCX DOWNLOAD REGISTREREN 64 BIT WINDOWS

Met het gebruik van de bovenstaande TreeView-besturingsobjecten kunnen we mooiere en beter presterende gebruikersinterfaces bouwen voor onze nieuwe projecten.

Download de demodatabase.



  1. Leer hoe u SQL SELECT gebruikt met voorbeelden

  2. Converteer 'datetime' naar 'datetimeoffset' in SQL Server (T-SQL-voorbeelden)

  3. 6 manieren om een ​​string te converteren naar een datum/tijd-waarde in SQL Server

  4. Laat je niet voor de gek houden door de streams pool