Allgemeines
Zuletzt geändert: 14.03.2026 13:50

Allgemeines - SQL-Registry #

Die SQL-Registry ist ein hierarchischer Schlüssel/Wert-Speicher innerhalb der EULANDA-SQL-Server-Datenbank. Sie dient zur Konfiguration aller Programmmodule, Datenobjekte, Berichte, Menübefehle und Benutzereinstellungen.

Baumstruktur #

Die SQL-Registry ist hierarchisch aufgebaut. Das folgende Diagramm zeigt die vollständige Struktur bis zur dritten Ebene:

graph LR ROOT["ROOT"] ROOT --- MACHINE["MACHINE
Arbeitsplätze"] MACHINE --- MACHINE_PC["{pcname}"] MACHINE_PC --- MACHINE_PP["PrinterProfiles"] MACHINE --- MACHINE_ALL[".ALLMACHINE"] ROOT --- MODULES["MODULES
Programmmodule"] MODULES --- MOD_AW["Auftragswesen"] MODULES --- MOD_DV["Datev"] MODULES --- MOD_FB["Fibunorm"] MODULES --- MOD_GW["Grundwerte"] MODULES --- MOD_KA["Kasse"] MODULES --- MOD_SE["SEPA"] MODULES --- MOD_EX["Excel"] MODULES --- MOD_XX["..."] ROOT --- OBJECTS["OBJECTS
Datenobjekte"] OBJECTS --- OBJ_ACT["ACTIONS"] OBJECTS --- OBJ_BND["BANDS"] OBJECTS --- OBJ_DO["DATAOBJECTS"] OBJECTS --- OBJ_FC["FIELDCLASSES"] OBJECTS --- OBJ_FM["FORMS"] OBJECTS --- OBJ_TB["TABLES"] OBJECTS --- OBJ_SP["SQLPROCS"] OBJ_DO --- DO_ALL["Eulanda.Allgemein"] OBJ_DO --- DO_ADR["Eulanda.Adresse"] OBJ_DO --- DO_ART["Eulanda.Artikel"] OBJ_DO --- DO_ANG["Eulanda.Angebot"] OBJ_DO --- DO_AFT["Eulanda.Auftrag"] OBJ_DO --- DO_LFS["Eulanda.Lieferschein"] OBJ_DO --- DO_RCH["Eulanda.Rechnung"] OBJ_DO --- DO_XXX["..."] DO_RCH --- RCH_ACT["Actions"] DO_RCH --- RCH_FLD["Fields"] DO_RCH --- RCH_INF["InfoSystem"] DO_RCH --- RCH_LNK["Links"] DO_RCH --- RCH_OBJ["Objects"] DO_RCH --- RCH_REP["Reports"] ROOT --- SYSTEM["SYSTEM
Systemweit"] SYSTEM --- SYS_DEV["Devices"] SYSTEM --- SYS_LIB["LIBS"] SYSTEM --- SYS_PP["PrinterProfiles"] SYSTEM --- SYS_SQL["SQL"] SYSTEM --- SYS_RA["ReportArchive"] SYSTEM --- SYS_EVT["EVENTS"] SYS_DEV --- DEV_MAIL["EMail"] SYS_DEV --- DEV_FAX["Fax"] SYS_DEV --- DEV_PDF["PDF"] SYS_DEV --- DEV_HTML["HTML"] SYS_DEV --- DEV_XLS["XLS"] SYS_DEV --- DEV_XXX["..."] ROOT --- USER["USER
Benutzer"] USER --- USR_ALL[".ALLUSER"] USER --- USR_DEF[".DEFAULT"] USER --- USR_USR["{benutzername}"] USR_ALL --- USR_OBJ["OBJECTS"] ROOT --- SESSION["SESSION
Sitzung (flüchtig)"] ROOT --- VENDOR["VENDOR
Drittanbieter"] VENDOR --- VND_ESOL["esol"]

Hauptbereiche #

BereichBeschreibungDetails
MACHINEArbeitsplatzspezifische Einstellungen (Drucker, TAPI)Pro PC ein Schlüssel
MODULESProgrammmodul-Einstellungen (Datev, SEPA, Lager etc.)Über Einstellungsdialog pflegbar
OBJECTSDatenobjekte, Felder, Menübefehle, BerichteWird bei Updates überschrieben
SYSTEMGeräte, Exportformate, Skript-BibliothekenSystemweit gültig
USERBenutzereinstellungen und Überschreibungen.ALLUSER als Vorgabe
SESSIONFlüchtige SitzungsdatenWerden beim Beenden verworfen
VENDORBereich für Drittanbieter-PluginsAuf Neuinstallation leer

Datenbank-Schema #

Die Registry wird in der Tabelle cnRegKey (Schlüssel) und cnRegValue (Werte) gespeichert. In älteren Versionen heißt die gemeinsame Tabelle Registry.

Tabellenstruktur #

SpalteTypBeschreibung
IDintPrimärschlüssel
ParentIDintÜbergeordneter Schlüssel (Baumstruktur)
Namenvarchar(200)Name des Schlüssels oder Werts
IsKeybit1 = Schlüssel (Ordner), 0 = Wert
ValTypetinyintDatentyp des Werts (siehe unten)
ValStringnvarchar(max)Zeichenketten-Wert
ValTextnvarchar(max)Mehrzeiliger Text
ValIntintGanzzahl-Wert
ValFloatfloatGleitkomma-Wert
ValBinvarbinary(max)Binärdaten
ChangeDatedatetimeLetzte Änderung

Werttypen (ValType) #

ValTypeKonstanteBeschreibung
2StringZeichenkette (wird intern als Text=4 gespeichert)
3IntGanzzahl
4TextMehrzeiliger Text
5FloatGleitkommazahl
6BinaryBinärdaten (z.B. eingebettete Dateien)

SQL-Prozeduren #

Für den Zugriff auf die SQL-Registry stehen folgende Stored Procedures zur Verfügung:

Schlüsselverwaltung #

ProzedurBeschreibung
cn_RegCreateKeyNeuen Schlüssel anlegen
cn_RegDelKeySchlüssel löschen
cn_RegOpenPathSchlüssel über Pfad öffnen (optional anlegen)
cn_RegKeyExistsPrüfen, ob ein Schlüssel existiert
cn_RegKeyRenameSchlüssel umbenennen
cn_RegCopyKeySchlüssel kopieren
cn_RegSubKeysUnterschlüssel auflisten
cn_RegKeyInfoInformationen zu einem Schlüssel
cn_RegKeyNamesNamen aller Unterschlüssel

Werte lesen #

ProzedurBeschreibung
cn_RegReadStringString-Wert lesen
cn_RegReadIntInteger-Wert lesen
cn_RegReadBlobByIdBinärdaten lesen
cn_RegBulkReadMehrere Werte auf einmal lesen

Werte schreiben #

ProzedurBeschreibung
cn_RegWriteValueWert schreiben (allgemein)
cn_RegWriteStringString-Wert schreiben
cn_RegWriteTextValueText-Wert schreiben
cn_RegWriteBlobValueBinärdaten schreiben
cn_RegCopyValuesWerte kopieren
cn_RegValueDeleteWert löschen
cn_RegValueRenameWert umbenennen

Abfrage und Navigation #

ProzedurBeschreibung
cn_RegValueExistsPrüfen, ob ein Wert existiert
cn_RegValueInfoInformationen zu einem Wert
cn_RegValueNamesNamen aller Werte eines Schlüssels
cn_RegListGesamte Registry-Struktur auflisten
cn_RegShowPathPfad eines Schlüssels anzeigen
cn_RegGetVersionRegistry-Version abfragen

Beispiel: Wert lesen und schreiben #

-- Wert lesen
DECLARE @value nvarchar(max)
EXEC cn_RegReadString '\MODULES\Datev', 'AusgabeOrdner', @value OUT
SELECT @value

-- Schlüssel anlegen und Wert schreiben
DECLARE @keyid int
EXEC cn_RegOpenPath 0, '\VENDOR\MeinPlugin', @keyid OUT, 1  -- 1 = anlegen
EXEC cn_RegWriteString @keyid, 'Version', '2.0'

CNREG-Importformat #

Registry-Einträge können als CNREG-Textdatei exportiert und importiert werden. Das Format ähnelt dem Windows-Registry-Exportformat:

CnRegEdit1

[\PFAD\ZUM\SCHLUESSEL]
"Eigenschaft1"="Wert1"
"Eigenschaft2"=dword:00000001
"MehrzeiligerText"="Zeile 1
Zeile 2"

Der Import erfolgt über die Zwischenablage (Rechte Maustaste auf ROOT > “Einfügen”) oder programmgesteuert.

Detailbereiche #

  • MACHINE – Arbeitsplatzspezifische Einstellungen
  • MODULES – Programmmodul-Konfiguration
  • OBJECTS – Datenobjekte, Felder, Menübefehle
  • SYSTEM – Geräte und Exportformate
  • USER – Benutzereinstellungen und Überschreibungen
  • SESSION – Flüchtige Sitzungsdaten
  • VENDOR – Drittanbieter-Bereich