Barvna shema: Riviera
Trenutno dejavna stran: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » GUID-Schlüssel verwenden

GUID-Schlüssel verwenden

Binden Sie WklGrid, WklTreeList, WklTreeView und WklGantt an Tabellen, deren Schlüssel und übergeordneter Schlüssel GUIDs sind (SQL Server uniqueidentifier, Access Replikations-ID), auch wenn sie über ODBC verknüpft sind.

Voraussetzungen: WKL Forms Object Library 1.38.1 oder höher.

Lösungsüberblick

  • Nichts zu konfigurieren. KeyField, ParentField, LinkChildFields und EditKeyFields nennen GUID-Felder wie jedes andere Feld; die Steuerelemente erkennen ein GUID-Feld an seinem Datentyp.
  • Schlüssel sind in VBA Text. VBA hat keinen GUID-Datentyp. Ein Schlüssel, den das Steuerelement zurückgibt (SelectedKey, ein Key-Argument eines Ereignisses), ist der Text, den Access selbst für eine GUID verwendet, {guid {11111111-1111-1111-1111-111111111111}} – derselbe Text, den DAO für das Feld liefert. Er lässt sich mit einem Feldwert vergleichen und unverändert in eine Kriterienzeichenfolge einsetzen.
  • Schlüssel aus VBA in jeder üblichen Form. SelectedKey, NodeText(Key) und die anderen Member, die einen Schlüssel annehmen, akzeptieren {guid {…}}, {…} und die reinen Ziffern im Muster 8-4-4-4-12.
  • DLookup ist die Ausnahme. Bei einem GUID-Feld liefert DLookup die 16 Rohbytes als Zeichenfolge aus 8 Zeichen. StringFromGUID wandelt nur ein Byte()-Array um und gibt eine solche Zeichenfolge unverändert zurück; lassen Sie stattdessen die Datenbank umwandeln: DLookup("StringFromGUID([Id])", ...).

Umsetzung

Einen Kunden auswählen, dessen Schlüssel eine GUID ist, gelesen mit DLookup:

Dim key As String
key = DLookup("StringFromGUID([Id])", "tblKunde", "Name = 'Konrad'")      ' {guid {33333333-...}}
Me!Grid1.Object.SelectedKey = key

Den ausgewählten Schlüssel in einer Kriterienzeichenfolge verwenden, zum Beispiel um ein Unterformular zu filtern:

Private Sub Grid1_RowSelect(ByVal Key As Variant)
    Me!sfBestellungen.Form.Filter = "KundeId = " & Key  ' Key is {guid {...}}
    Me!sfBestellungen.Form.FilterOn = True
End Sub

Eine Struktur über einer Tabelle mit GUID-Schlüssel und übergeordnetem GUID-Schlüssel:

With Me!Tree1.Object
    .RecordSource = "tblOrdner"
    .KeyField = "Id"
    .ParentField = "ElternId"      ' Null for a root
    .TextField = "Name"
End With

Hinweise

  • Bei SQL-Server-Tabellen, die über ODBC Driver 18 oder über den Wkl-OData-Treiber verknüpft sind, liefert DAO ein GUID-Feld als {guid {…}} (Feldtyp 15, dbGUID); DLookup liefert die Rohbytes als Zeichenfolge.
  • Wkl OData: Ein Filter auf eine GUID-Spalte erfordert einen Datendienst, der das GUID-Literal von OData v4 liest. Ein Dienst, der das nicht tut, antwortet mit einem Fehler wie „Die Filterangabe ist ungueltig“. Der Wkl-OData-Treiber selbst sendet das richtige Literal.
  • Strukturen über Wkl OData: Die Anweisung, die die Stammknoten findet, vergleicht zwei Spalten (übergeordneten Schlüssel und Schlüssel). Das unterstützt der Wkl-OData-Treiber nicht; die Struktur liest deshalb alle Datensätze einmal und findet die Stammknoten selbst (bei jedem Schlüsseltyp). Große Strukturen über Wkl OData werden daher bei der ersten Anzeige vollständig geladen.
  • Schreiben über Wkl OData: Die Tabelle braucht bei jedem Schlüsseltyp eine Zeilenversion. Ohne sie wird das Schreiben abgewiesen; siehe Bearbeiten und Speichern: Voraussetzungen.
  • Kopien: Ein in einer Struktur kopierter Datensatz (Ziehen mit gedrückter Strg-Taste) erhält eine neue GUID als Schlüssel.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/use-guid-keys.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille