Uporaba ključev GUID
WklGrid, WklTreeList, WklTreeView in WklGantt vežite na tabele, katerih ključ in nadrejeni
ključ sta GUID (SQL Server uniqueidentifier, v Accessu velikost polja ID replikacije), tudi
kadar so povezane prek ODBC.
Zahteva WKL Forms Object Library 1.38.1 ali novejšo različico.
Pregled rešitve
- Ničesar ni treba nastaviti.
KeyField,ParentField,LinkChildFieldsinEditKeyFieldsnavajajo polja GUID kot vsako drugo polje; kontrolniki polje GUID prepoznajo po njegovem tipu. - Ključi v VBA so besedilo. VBA nima tipa GUID. Ključ, ki ga vrne kontrolnik (
SelectedKey, argumentKeydogodka), je besedilo, ki ga za GUID uporablja sam Access,{guid {11111111-1111-1111-1111-111111111111}}, isto besedilo, kot ga za polje vrne DAO. Lahko ga primerjate z vrednostjo polja in ga nespremenjenega vstavite v niz pogoja. - Ključi iz VBA v kateri koli običajni obliki.
SelectedKey,NodeText(Key)in drugi člani, ki sprejmejo ključ, sprejmejo{guid {…}},{…}in gole števke 8-4-4-4-12. DLookupje izjema. Pri polju GUIDDLookupvrne 16 surovih bajtov kot niz z 8 znaki.StringFromGUIDpretvori le poljeByte(), tak niz pa vrne nespremenjen; pretvorbo zato prepustite podatkovni zbirki:DLookup("StringFromGUID([Id])", ...).
Izvedba
Izberite stranko, katere ključ je GUID, prebran z DLookup:
Dim key As String
key = DLookup("StringFromGUID([Id])", "tblStranka", "Ime = 'Kranjc'") ' {guid {33333333-...}}
Me!Grid1.Object.SelectedKey = key
Izbrani ključ uporabite v nizu pogoja, na primer za filtriranje podobrazca:
Private Sub Grid1_RowSelect(ByVal Key As Variant)
Me!sfNarocila.Form.Filter = "StrankaId = " & Key ' Key is {guid {...}}
Me!sfNarocila.Form.FilterOn = True
End Sub
Drevo nad tabelo s ključem GUID in nadrejenim ključem GUID:
With Me!Tree1.Object
.RecordSource = "tblMapa"
.KeyField = "Id"
.ParentField = "NadrejenaId" ' Null for a root
.TextField = "Ime"
End With
Opombe
- Pri tabelah SQL Server, povezanih prek gonilnika ODBC Driver 18 ali gonilnika Wkl OData, DAO vrne polje GUID kot
{guid {…}}(tip polja 15, dbGUID);DLookupvrne surove bajte kot niz. - Wkl OData: filter nad stolpcem GUID zahteva podatkovno storitev, ki bere literal GUID po OData v4; storitev, ki ga ne, odgovori z napako, kot je „Die Filterangabe ist ungueltig“. Gonilnik Wkl OData sam pošlje pravilen literal.
- Drevesa prek Wkl OData: stavek, ki poišče korene, primerja dva stolpca (nadrejeni ključ in ključ), česar gonilnik Wkl OData ne podpira; drevo tedaj enkrat prebere vse zapise in korene poišče samo (za vsak tip ključa). Velika drevesa prek Wkl OData se zato ob prvem prikazu naložijo v celoti.
- Zapisovanje prek Wkl OData: tabela potrebuje različico vrstice, za vsak tip ključa. Brez nje je zapisovanje zavrnjeno; glejte Urejanje in shranjevanje: predpogoji.
- Kopije: zapis, kopiran v drevesu (vlečenje s tipko Ctrl), dobi kot ključ nov GUID.
Sorodne teme
sl/wiki/msaccess/comctl/how-to/use-guid-keys.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille