Uporaba sestavljenega ključa
Drevo vežite na zapise, katerih ključ sestavlja več polj, na primer postavke naročila s ključem iz številke naročila in številke postavke, ki jih Access sam lahko prikaže le v ploskem podobrazcu.
Zahteva WKL Forms Object Library 1.23 ali novejšo različico.
Pregled rešitve
KeyField in ParentField sprejmeta več imen polj, ločenih s podpičji, v enakem številu in
enakem vrstnem redu. V VBA je sestavljeni ključ polje (array) z eno vrednostjo za vsako polje, in
to povsod, kjer nastopa ključ: v lastnostih, argumentih metod, vrnjenih vrednostih in parametrih
dogodkov. KeyCriteria sestavi pogoj WHERE za ključ. Posamezno polje deluje kot doslej: njegov
ključ ostane posamezna vrednost.
Izvedba
Vežite drevo (list z lastnostmi, zavihek Drugo, ali stran oblikovalnika Vir zapisov):
| Lastnost | Vrednost |
|---|---|
RecordSource | tblPostavke |
KeyField | NarociloID;StPostavke |
ParentField | NarociloID;NadrejenaPostavka |
TextField | Opis |
S ključi delajte v modulu obrazca:
Private Sub List1_NodeSelect(ByVal Key As Variant)
' Key is Array(NarociloID, StPostavke)
Me!txtPostavka = Key(1)
Me!sfmDetails.Form.Filter = Me!List1.Object.KeyCriteria(Key) ' [NarociloID] = 4711 AND [StPostavke] = 2
Me!sfmDetails.Form.FilterOn = True
End Sub
Private Sub cmdNovaPostavka_Click()
Dim newKey As Variant
newKey = Me!List1.Object.AddNode(Array(4711, 1), "Nova postavka") ' below line 1 of order 4711
Debug.Print newKey(0), newKey(1) ' 4711, next free line number
End Sub
Opombe
- Sestavljeni ključ nima samoštevila. Za novo vozlišče kontrolnik predlaga ključ: zadnji del se nadaljuje za najvišjo vrednostjo pri enakih vodilnih delih.
BeforeNodeAddinBeforeNodeCopylahko zNewKey = Array(…)nastavita lasten ključ. - Zapis je koren, če ima njegov nadrejeni ključ del z vrednostjo Null ali se ne ujema z nobenim zapisom.
- Premik vozlišča zapiše vse dele
ParentField. - Polje napačne dolžine sproži
wkeInvalidValue. Deli se primerjajo po pravilih programa Access: števila po vrednosti, besedilo brez razlikovanja velikih in malih črk. - Datoteke in besedila, ki jih zapišeta
SaveToFileinSaveToString, sestavljeni ključ hranijo kot polje JSON; vFindNodesje@.Keyto polje,@.Key[1]pa en del. - V tabeli indeksirajte vsa polja ključa skupaj; vsaka poizvedba primerja vse dele.