Farbschema: Hell
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Zusammengesetzten Schlüssel verwenden

Zusammengesetzten Schlüssel verwenden

Binden Sie eine Struktur an Datensätze, deren Schlüssel aus mehreren Feldern besteht, zum Beispiel Bestellpositionen mit Bestellnummer und Positionsnummer als Schlüssel – Access selbst kann diese nur in einem flachen Unterformular anzeigen.

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

Lösungsüberblick

KeyField und ParentField nehmen mehrere durch Semikolons getrennte Feldnamen auf, in gleicher Anzahl und gleicher Reihenfolge. In VBA ist ein zusammengesetzter Schlüssel überall, wo ein Schlüssel vorkommt, ein Array mit einem Wert je Feld: in Eigenschaften, Methodenargumenten, Rückgabewerten und Ereignisparametern. KeyCriteria bildet die WHERE-Bedingung für einen Schlüssel. Ein einzelnes Feld funktioniert wie bisher: Sein Schlüssel bleibt ein einzelner Wert.

Umsetzung

Binden Sie die Struktur (Eigenschaftenblatt, Registerkarte Andere, oder die Designerseite Datenherkunft):

EigenschaftWert
RecordSourcetblPositionen
KeyFieldBestellNr;PosNr
ParentFieldBestellNr;UebergeordnetePosNr
TextFieldBeschreibung

Arbeiten Sie im Formularmodul mit den Schlüsseln:

Private Sub List1_NodeSelect(ByVal Key As Variant)
    ' Key is Array(BestellNr, PosNr)
    Me!txtPosition = Key(1)
    Me!sfmDetails.Form.Filter = Me!List1.Object.KeyCriteria(Key)   ' [BestellNr] = 4711 AND [PosNr] = 2
    Me!sfmDetails.Form.FilterOn = True
End Sub
 
Private Sub cmdPositionNeu_Click()
    Dim newKey As Variant
    newKey = Me!List1.Object.AddNode(Array(4711, 1), "Neue Position") ' below line 1 of order 4711
    Debug.Print newKey(0), newKey(1)                                  ' 4711, next free line number
End Sub

Hinweise

  • Ein zusammengesetzter Schlüssel hat keinen AutoWert. Für einen neuen Knoten schlägt das Steuerelement einen Schlüssel vor: Der letzte Teil wird ab dem höchsten Wert innerhalb derselben vorderen Teile fortgezählt. BeforeNodeAdd und BeforeNodeCopy können mit NewKey = Array(…) einen eigenen Schlüssel setzen.
  • Ein Datensatz wird zum Stammknoten, wenn sein übergeordneter Schlüssel einen Null-Teil hat oder zu keinem Datensatz passt.
  • Das Verschieben eines Knotens schreibt jeden Teil von ParentField.
  • Ein Array der falschen Länge löst wkeInvalidValue aus. Teile werden nach den Regeln von Access verglichen: Zahlen nach Wert, Text ohne Beachtung der Groß-/Kleinschreibung.
  • Von SaveToFile und SaveToString geschriebene Dateien und Texte speichern einen zusammengesetzten Schlüssel als JSON-Array; in FindNodes ist @.Key dieses Array und @.Key[1] ein Teil davon.
  • Indizieren Sie alle Schlüsselfelder in der Tabelle gemeinsam; jede Abfrage vergleicht alle Teile.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/use-a-composite-key.txt · Zuletzt geändert: von Wolfgang van der Stille