Autovalues
Dynamische Autowerte
func.DynAutoValue
Mithilfe der Funktion können dynamische Autowerte generiert werden. Es wird ein Wert zurückgegeben, der um 1 größer ist, als der größte auf Integer konvertierbare Wert des betroffenen Felds in allen Datensätzen.
Beispiel:
Jedes Objekt, welches angelegt ist bekommt einen Wert zugewiesen, der um 1 größer ist als das zuletzt angelegte Objekt des selben Typs.
Autowerte mit MAXVALUES in Tabelle
func.AutoValue(<AutoValueID>,FeatureClass/Feld-Kombination,Trennzeichen)
Mit diesem Mechanismus werden die zuletzt verwendeten höchsten Werte (4) in einer Tabelle names AutoValues im gleichen Workspace abgelegt. Diese Tabelle muss im SDE vorhanden sein, in den anderen Workspacetypen wird sie bei Bedarf erstellt.

Feldname |
Beschreibung |
|---|---|
OID (1) |
Zeilen ID |
AutoValue-ID (2) |
AutoValue-ID |
AutoValue-Name (3) |
frei definierter oder übergebener Name |
Current maximum value (4) |
zuletzt verwendete höchste Werte |
Feature-Class-Fieldvalues-Combination (5) |
Einschränkung auf eine Feature-Class oder Kombination aus Feature-Class und Feldwert-Kombination |
(2)(3) AutoValueID/AutoValue-Name
Der Parameter kann eine frei wählbare ganze Zahl sein (=AutoValue-ID), ein Textstring (=AutoValue-Name) oder aus einem Feld ausgelesen werden (=AutoValue-Name). Es wird ein Autovalue entsprechend der definierten ID aus der Autovalue-Tabelle geholt. Die AutoValueIDs können FeatureClass-übergreifend innerhalb eines Workspaces verwendet werden.
Beispiel:
func.AutoValue(2,","") > Der MAXVALUE wird aus dem Eintrag mit der AutoValue-ID 2 ausgelesen.
func.AutoValue([Typ],","") > Beim Erstellen der Objekte wird anhand der Typisierung hochgezählt. Für jeden im Feld TYP bestehenden Wert wird ein Eintrag in der Autovalue-Tabelle erstellt, wobei die Erkennung über den AutoValue-Namen von statten geht.
(5) FeatureClass/Feld-Kombination
Mit diesem Parameter kann ein Autowert auf eine bestimmte FeatureClass eingeschränkt werden. Wird ein Funktionsfeld einer anderen FeatureClass mit der selben ID verwendet, so ist dessen MAXVALUE unabhängig davon.
Beispiel:
func.AutoValue("My AV,"Widmungen,"")
Zusätzlich zum Feature-Class-Namen können ein oder mehrere Feldnamen hinzugefügt werden, um verschiedene AutoValues pro Feldwertkombination zu verwenden. So können zum Beispiel innerhalb einer FeatureClass abhängig vom verwendeten Widmungscode verschiedene AutoValues erzeugt werden. Der AutoValue wird in diesem Fall nur geschrieben, wenn die Felder, von denen er abhängt, zugewiesene Werte enthalten. Das Trennzeichen zwischen Feature-Class-Namen und Feldnamen ist der Schrägstrich (/).
Beispiel:
func.AutoValue("My AV,"Bepflanzung/WidCode,"")
Trennzeichen
Intern werden die einzelnen Feldwerte zusammengehängt und dazwischen Trennzeichen gesetzt. Diese sind hardcoded #~&. Sollte es sich um Daten handeln, die diese Zeichenfolge realistischerweise beinhalten könnten, dann kann man im dritten Parameter eine eigene Trennzeichenkombination übergeben. Diese sollte aber danach nicht mehr geändert werden, da sonst ein neuer AutoValue-Datensatz angelegt wird und die Zählung wieder von 1 beginnt. Sollte eine Änderung des Trennzeichens bei bestehenden Daten nötig sein ist es erforderlich, in der AutoValues-Tabelle die betroffenen Datensätze nachzukorrigieren.
Beispiel:
func.AutoValue("My AV,"Bepflanzung/WidCode,"#!!!+s")