Wednesday, 20 November 2013

TB_LABEL_DEF.ID

In der Map-Hilfe ist zu TB_LABEL_DEF.ID folgendes hinterlegt:

"Speichert die ID der Labeldefinition. Die benutzerdefinierte Labeldefinition beginnt mit der ID 10.000. IDs, die kleiner als 10.000 sind, werden für Autodesk-Anwendungen verwendet."

Probleme könnten nun im Zusammenhang mit CountryKits entstehen. Im "Workbook" für das CK Abwasser (CH, 2013) findet man Verweise auf Labels mit einer bestimmten ID, z.B. ID=10025.

Anlegen einer eigenen Label-Definition - ID im Beispiel ist im gleichen Bereich wie IDs des CountryKit.

Legt man als Benutzer eigene Labeldefinitionen an, scheint es besser zu sein, IDs nicht im zehntausender Bereich zu verwenden, da dort auch Label-Definition der CountyrKits definiert sind. Ein CK Update könnte ein neue Label-Definition einführen und - so mein Verständnis - dazu führen, dass eine eigene Label-Definition überschrieben wird.

Nachträglich kann man die ID manuell in der Tabelle ändern. Besser ist es, bei der Erstellung der Labeldefinitionen geeignete IDs zu verwenden. Die Vergabe der IDs bei den Label-Definitionen werden über die Sequenz TB_LABELDEF_S gesteuert.

Es gibt zwei Varianten wie man die Sequenz ändern kann:

a) Sequenz löschen und neu erstellen
Vorteil - einfache Vorgehensweise
Nachteil - Berechtigungen anderer Oracle Benutzer (speziell Gastdokumente) gehen beim Löschen der Sequenz verloren und müssen nachträglich wieder neu eingerichtet werden

Zur Kontrolle - wer hat Berechtigung auf der Sequenze?
select * from all_tab_privs where table_name='TB_LABELDEF_S';

Falls jemand Berechtigung hat (sollten nur bestehende Gastdokumente sein) müssen diese Berechtigungne nachträglich manuell wieder gesetzt werden.

drop sequence TB_Labeldef_s;

create sequence TB_Labeldef_s__x
increment by 1
start with 20000 -- neuer Startwert
minvalue 20000
maxvalue 9999999999999999999999999999
nocycle;


b) bestehende Sequenz ändern
Vorteil - bestehende Berechtigungen gehen nicht verloren
Nachteil - umständlichere Vorgehensweise

Die Vorgehensweise ist im Internet mehrfach beschrieben (z.B. https://forums.oracle.com/thread/1999691).


Nach dem Ändern der Sequenz beginnt die ID Vergabe nun bei 20000
Aufpassen muss man, wenn Labeldefinitionen direkt in die Tabelle eingetragen werden. Dann wird die Sequenz nicht zwangsläufig verwendet und bereits vergebene IDs in der Tabelle sind in der Sequenz noch verfügbar. Legt man eine neuen Labeldefinition an und die bereitgestellt ID aus der Sequenz ist bereits in der Tabelle vergeben, erhält man eine Fehlermeldung beim Einfügen:
Labeldefinitions-ID bereits vorhanden - Fehlermeldung im Administrator beim Versuch, die Labeldefinition abzuspeichern.




Offenbar gibt es hier eine Abweichung von der Map-Dokumentation und dem Verhalten von Map und der Vergabe der IDs in Countrykits. Die IDs ab 10000 stehen eben gerade nicht für benutzerdefinierte Labeldefinitionen zur Verfügung.

Map 2013, SP2


1 comment:

  1. Hallo Robert

    Wenn man über Strukturupdates (genx) eine neue Label_Def erstellt, kann man die neue Label_Def_ID ohne Probleme selber auswählen. Ein ungeschriebenes Gesetz bei Autodesk ist, dass die ID's wie folgt definiert sind:

    1-9'999 -> Autodesk
    10'000 - 19'999 -> Country-Kits
    ab 20'000 -> Anwender

    Diese Regel sollte man neben den Label_Def's auch bei den TBD's beachten.

    Gruss Marcel

    ReplyDelete