sql >> Databasteknik >  >> RDS >> Access

TreeView-kontroll med underformulär

Introduktion.

I denna session av TreeView Control Tutorial kommer vi att använda två underformulär tillsammans med TreeView-kontrollen på huvudformuläret frmTreeViewtab . Vi har importerat ImageList-kontrollen med de förladdade bilderna från vårt tidigare demoprojekt.
Vi kommer att använda samma lvCategory och lvProducts Tabeller som vi har använt för våra tidigare projekt.
lvCategory Tabellens Primära nyckel fält (CID) och beskrivningsfält (Category) värden är TreeView Nodes Add()-metodens nyckel och Text parametervärden, respektive.

lvProducts Tabellen har detaljerad information om varje produkt som produktkod, beskrivning lager-enhet-kvantitet och listpris.

Förutom det, lvProducts tabellen har förälder-ID fältet som uppdaterades med värdet för kategorikod (CID). Alla produktartiklar som tillhör en viss kategori uppdateras med (Kategori-ID) CID-fältvärdet i fältet ParentID. På så sätt har båda tabellerna relationen mellan herre och barn.

Produktposterna har två underformulär på flikkontrollsidorna. Den första sidan har data Visa underformulär och den andra sidan har Redigera underformulär. Den första flikkontrollsidan visar alla produktposter som tillhör en viss kategori av TreeView-kontrollen. De första underformulärsposterna visas för visning och för att välja en viss post för redigering på det andra underformuläret.

strömmen registrera eller användarvald post på det första underformuläret är tillgängligt för redigering på det andra underformuläret, på den andra sidan av flikkontrollen. Nyckelfälten markerade med grå färg är låsta och kan inte redigeras.

TreeView med designvy för underformulär.

Designvyn i formuläret frmTreeViewTab ges nedan:

De två första obundna textrutorna i huvudformuläret uppdateras när användaren väljer ett kategoriobjekt från TreeView-kontrollen.

Den tredje obundna textrutan (namn p_ID) uppdateras initialt med den första produktpostens unika ID-värde (PID) annars uppdateras den användarvalda postens värde. Den valda produktposten på det första underformuläret är tillgängligt på det andra underformuläret för ändringar.

Länkar till tidigare självstudiesessioner.

De tidigare länkarna till handledningssessionen ges nedan för enkel referens:

  1. Microsoft TreeView Control Tutorial
  2. Skapa åtkomstmeny med TreeView-kontroll
  3. Tilldela bilder till TreeView-kontroll
  4. Tilldela bilder till TreeView Control-2
  5. TreeView Control Markera Lägg till Ta bort noder
  6. TreeView ImageCombo rullgardinsmeny
  7. Arrangera om TreeView-noder genom att dra och släppa
  8. ListView-kontroll med MS-Access TreeView
  9. ListView Control Drag Drop Events

CatId obunden textruta är [Link Master Fields] Egenskapsvärdet för det första underformuläret.

Produktkoden på den tredje obundna textrutan (p_ID ) är länkad till [Link Master Fields] egenskapsvärdet för det andra underformuläret i vyn Fliksida.

p_ID värde för obundet textruta uppdateras när innehållet i det första underformuläret uppdateras eller när ett objekt valts av användaren.

Normal vy av skärmen.

Den normala vyn av frmTreeViewTab formuläret finns nedan:


Nyckelfälten i produktposten på det andra underformuläret, med grå förfärg, är låsta och får inte ändra innehållet.

Formuläret frmTreeViewTab Klassmodulens VBA-kod:

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


Eftersom användningen av TreeView Control och ImageList Control och deras funktion förklarades i detalj i de tidigare sessionerna, hittar du bara ett fåtal av de tidigare VBA-subrutinerna som visas i ovanstående formulärmodul.

Vi har designat flera skärmar med MS-Access TreeView, ListView, ImageList och ImageCombo Control hittills och jag hoppas att du kommer att hitta dem som en bra referenspunkt för din egen projektgränssnittsdesign.

MS-Office-versionsproblem för TreeView Control.

Om du hade några problem med att köra demodatabasen i din version av Microsoft Access kan du hänvisa till följande länk för några korrigerande åtgärder, som kan vara till hjälp för att lösa ditt problem:

Tidigare har ovanstående kontroller inte körts under 64-bitars system. Men i september 2017 har Microsoft publicerat en uppdatering av MSCOMCTL.OCX Library och följande utdrag av Microsoft Document ges nedan för din information:

Klicka på dokumentbilden ovan för den fullständiga texten av 2017 Update:1707 Document. Följande länk ger några användbara tips.
  • LÖST MSCOMCTL.OCX LADDA NER REGISTRERA 64-BITS WINDOWS

Med hjälp av ovanstående TreeView-kontrollobjekt kan vi bygga snyggare och bättre presterande användargränssnitt för våra nya projekt.

Ladda ned demodatabasen.



  1. SQL MELLAN-Smarta tips för att söka efter en rad värden

  2. MySQL maximal minnesanvändning

  3. Hur får man åtkomst till fjärrserver med lokal phpMyAdmin-klient?

  4. Hur man lägger till total rad i MySQL