sql >> Database teknologi >  >> RDS >> Access

TreeView-kontrol med underformularer

Introduktion.

I denne session af TreeView Control Tutorial vil vi bruge to underformularer sammen med TreeView-kontrollen på hovedformularen frmTreeViewtab . Vi har importeret ImageList-kontrollen med de forudindlæste billeder fra vores tidligere demoprojekt.
Vi vil bruge den samme lvCategory og lvProducts Tabeller, vi har brugt til vores tidligere projekter.
lvCategory Tabellens Primære nøgle felt- (CID) og beskrivelsesfeltværdier (kategori) er TreeView Nodes Add()-metodens Nøgle og Tekst parameterværdier, henholdsvis.

lvProducts Tabellen har detaljerede oplysninger om hvert produkt som produktkode, beskrivelse lager-enhed-mængde og listepris.

Udover det, lvProducts tabellen har Forældre-id felt, der er opdateret med værdien Kategorikode (CID). Alle produktelementer, der tilhører en bestemt kategori, opdateres med (Kategori-id) CID-feltværdien i feltet ParentID. På denne måde har begge tabeller mester-barn-forholdet.

Produktposterne har to underformularer på fanekontrolsiderne. Den første side har dataene Vis underformularen, og den anden side har Rediger underformular. Den første fanekontrolside viser alle produktposter, der tilhører en bestemt kategori af TreeView-kontrollen. De første underformularposter vises til visning og til valg af en bestemt post til redigering på den anden underformular.

Den aktuelle optage eller brugervalgt post på den første underformular er tilgængelig til redigering på den anden underformular, på den anden side af fanekontrolknappen. Nøglefelterne fremhævet med grå farve er låst og kan ikke redigeres.

TreeView med underformulardesignvisning.

Designvisningen af ​​formularen frmTreeViewTab er angivet nedenfor:

De første to ubundne tekstbokse på hovedformularen opdateres, når brugeren vælger et kategorielement fra TreeView-kontrolelementet.

Den tredje ubundne tekstboks (navn p_ID) opdateres indledningsvis med den første produktposts unikke ID-værdi (PID) ellers bliver den brugervalgte posts værdi opdateret. Den valgte produktpost på den første underformular er tilgængelig på den anden underformular for ændringer.

Links til tidligere selvstudiesessioner.

De tidligere tutorialsessionslinks er givet nedenfor for let reference:

  1. Microsoft TreeView Control Tutorial
  2. Oprettelse af adgangsmenu med TreeView-kontrol
  3. Tildeling af billeder til TreeView-kontrol
  4. Tildeling af billeder til TreeView Control-2
  5. TreeView Control Check-Mark Tilføj slet noder
  6. TreeView ImageCombo-rullemenuen
  7. Omarranger TreeView-noder ved at trække og slippe
  8. ListView-kontrol med MS-Access TreeView
  9. ListView Control Træk-slip hændelser

CatId ubundet tekstfelt er [Link Master Fields] Ejendomsværdi af den første underform.

Produktkoden på den tredje ubundne tekstboks (p_ID ) er knyttet til [Link Master Fields] egenskabsværdien for den anden underformular på Vis Faneside.

p_ID ubundet tekstboksværdi bliver opdateret, når det første underformularindhold opdateres, eller når et element er valgt af brugeren.

Normal visning af skærmen.

Den normale visning af frmTreeViewTab formularen er angivet nedenfor:


Nøglefelterne på produktposten på den anden underformular, med grå forfarve, er låst og har ikke tilladelse til at ændre indholdet.

Formularen frmTreeViewTab Klassemodulets VBA-kode:

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


Da brugen af ​​TreeView Control og ImageList Control og deres funktion alle blev forklaret i detaljer i de tidligere sessioner, vil du kun finde nogle få af disse tidligere VBA-underrutiner, der vises i ovenstående formular Modul.

Vi har designet adskillige skærme med MS-Access TreeView, ListView, ImageList og ImageCombo Control indtil videre, og jeg håber, du vil finde dem som et godt referencepunkt for dit eget projektgrænsefladedesign.

MS-Office-versionsproblemer til TreeView Control.

Hvis du havde problemer med at køre demodatabasen i din version af Microsoft Access, kan du henvise til følgende link for nogle korrigerende handlinger, som kan være nyttige til at løse dit problem:

Tidligere kørte ovenstående kontroller ikke under 64 bit-systemer. Men i september 2017 udgav Microsoft en opdatering af MSCOMCTL.OCX Library, og følgende uddrag af Microsoft-dokumentet er givet nedenfor til din information:

Klik på ovenstående dokumentbillede for den fulde tekst af 2017-opdateringen:1707-dokumentet. Følgende link foreslår nogle nyttige tip.
  • LØST MSCOMCTL.OCX DOWNLOAD REGISTER 64 BIT WINDOWS

Med brugen af ​​ovenstående TreeView-kontrolobjekter kan vi bygge bedre udseende og bedre ydende brugergrænseflader til vores nye projekter.

Download demodatabasen.



  1. Generering af tilfældige tal i hver række i Oracle-forespørgsel

  2. Opret et SQL Server Agent Job ved hjælp af T-SQL

  3. Det grundlæggende i Tuning MySQL på dedikerede servere

  4. Formater SQLite-forespørgselsresultater som en kommasepareret liste