Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Uporaba ključev GUID

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, LinkChildFields in EditKeyFields navajajo 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, argument Key dogodka), 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.
  • DLookup je izjema. Pri polju GUID DLookup vrne 16 surovih bajtov kot niz z 8 znaki. StringFromGUID pretvori le polje Byte(), 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); DLookup vrne 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