OBS/System/Datenbankdefinition

Aus OBS Wiki
Zur Navigation springen Zur Suche springen

Arten von Definitionsdateien

OBS Standard

Die Datenbankdefinition wird beim OBS-Update mit ausgeliefert und befindet sich im OBS-Unterverzeichnis sys in der Datei obsdb.sys.

individuelle Tabellen und Felder

Standardtabellen von OBS können sich erweitern lassen oder auch neue Tabellen definiert werden. Die Definition muss ebenfalls im sys-Verzeichnis abgelegt werden. Der Dateiname muss mit User_ beginnen, auf _obsdb.sys enden und dazwischen Ihre Kundennummer enthalten. Sollten Sie mit mehreren Installationen arbeiten wird zur Kundennummer möglicherweise noch eine Sub-Identifikation benötigt.
Beispiel Dateiname: User_101234_obsdb.sys.

Aufbau einer Datenbankdefinitionsdatei

Datenbank Flag

Flags sind besondere "Markierungen" für Felder, die an verschiedenen Stellen in OBS besondere Funktionalitäten erfüllen. Die Flags werden am Anfang einer Datei definiert, da diese zum Zeitpunkt der Verwendung in den Definition eines Tabellenfelds bekannt sein müssen.

Definition einer Tabelle

Felder

Felder werden mit #FELDNAME hinzugefügt. Dahinter werden dann mit Komma getrennt folgende weitere Angaben gemacht:

Angabe Beschreibung
Feldname Name des Tabellenfeld bzw Tabellenspalte. Die Definition darf nur aus A bis Z, 0 bis 9 und Unterstrich bestehen. Umlaute sind nicht gültig.
FELD_STRASSE ist OK
FELD_STRAßE ist FALSCH
Typ Einzelner Buchstabe. Dieser definiert den Datentyp für die Speicherung. Aktuell Unterstützt werden in der Definition:
  • C : Text vom Typ Char
  • V : Text vom Typ Varchar
  • M : Langtext (mehr als 255 Zeichen)
  • I : Ganzzahl (Integer / Int)
  • N : Dezimalzahl (Decimal)
  • D : Datum/Uhrzeit (Datetime)
  • B : Blob-Daten
Feldlänge Gesamtlänge der Daten, die maximal in das Feld geschrieben werden können. Wenn Sie z. B. eine OBS-Artikelnummer in ein Feld schreiben möchten, muss das Feld mindestens eine Länge von 25 haben, das dies die maximale Länge einer OBS-Artikelnummer ist. Beachten Sie, dass bei Dezimalzahlen die Gesamtlänge den Vor- und Nachkommastellen entsprechen muss. Prozentzahlen von 0 bis 100 mit zwei Nachkommastellen benötigt also eine Länge von mindestens 5.
Nachkommastellen Nur gültig bei Dezimalzahlen. Darf nicht gleich oder Größer sein als die Gesamtlänge - 1, da immer mindestens eine Vorkommastelle vorhanden sein muss.
Picture/Maske Spannend, wenn Datenbankfelder in Eingabemaske geladen werden. Die Maske sollte daher zu Typ, Feldlänge und Nachkommastellen passen.

Folgende Angaben sind erlaubt:

  • C
    1. C wiederholt bis maximal der Feldlänge. Feldlänge 10 gibt also die Freiheit von "C" bis "CCCCCCCCCC"
    2. Maske mit Sternchen ("*") veranlasst OBS automatisch die maximale Feldlänge zu verwenden
    3. Zeiten im digitalen 24-Stunden Format können auch in Textfelder gespeichert werden. Als Vorgabe kann dazu mit zwei Varianten gearbeitet werden: "ZZ:ZZ" oder "ZZ:ZZ:ZZ". Je nachdem, ob auch Sekunden mit angegeben werden können.
      HINWEIS: Die Feldlänge muss in diesem Fall entweder 5 für "ZZ:ZZ" oder 8 für "ZZ:ZZ:ZZ" sein. Sonst ist die Verwendung ungültig.
  • V : wie Char (C)
  • M : Maske ist immer "*"
  • I : N bis zur maximalen Feldlänge. Feldlänge 10 gibt also die Freiheit von "N" bis "NNNNNNNNNN"
  • N : Die Kommastelle ist mit einem Punkt anzugeben. Ansonsten gilt hier auch N bis zur maximalen Feldlänge. 10 , 3 ermöglicht als Maske von "N.N" bis "NNNNNNN.NNN"
  • D : Maske immer auf "TT.MM.JJ"
  • B : Maske ist immer "*"
Flags Flags sind besondere Markierungen für Felder, welche zu besonderen Verhalten von OBS führen. Wenn mehrere Flags angegeben werden sollen, dann sind diese mit Komma zu trennen.

Flags:

  • PERSONENNR : Feld enthält eine OBS-Personennummer. Wird beim Ändern der Personennummer automatisch angepasst.
  • PERSDELCHK : Verhindert das Löschen einer Person, wenn es einen Datensatz mit der entsprechenden Nummer in diesem Feld gibt
  • PERSSETEMPTY : Löscht beim Löschen einer Person nicht den Datensatz sondern leert das Feld
  • ARTIKELNR : Feld enthält eine OBS-Artikelnummer. Wird beim Ändern der Artikelnummer automatisch angepasst.
  • ARTIKELDELCHK : Verhindert das Löschen eines Artikels, wenn es einen Datensatz mit der entsprechenden Nummer in diesem Feld gibt.
  • ARTIKELSETEMPTY : Setzt das Feld leer, wenn der referenzierte Artikel gelöscht wird statt den Datensatz zu löschen.
  • LEISTUNGNR : Feld enthält eine OBS-Leistungsnummer
  • LEISTUNGDELCHK : Verhindert das Löschen einer Leistung, wenn es einen Datensatz mit der entsprechenden Nummer in diesem Feld gibt.
HINWEIS: Diese Auflistung kann unvollständig sein. Eine Definion und/oder Beschreibung finden Sie am Anfang der obsdb.sys. Suchen Sie nach #DBFLAG.

Beispiel für ein Feld mit eine OBS-Artikelnummer (Flag ARTIKELNR):

#FELDNAME MEIN_FELD             , C ,    25 ,  0 , "CCCCCCCCCCCCCCCCCCCCCCCCC" , ARTIKELNR , ARTIKELDELCHK

Fehler in der Definition

Beim Starten von OBS erhalten Sie bei Fehlern in der Definition folgende Meldung (ID: Y006GZTPFV):
Db struktur fehlerhaft.png

Sollte dies der Fall sein, prüfen Sie die adminerror.txt im OBS-Unterverzeichnis ..\data\debug\.

Fehler Lösung
Tabelle "Tabellenname" Feldname "Feld" Maske passt nicht zur Definition! Die Maske enthält unerlaubte Zeichen für den Typen oder ist zu lang. siehe dazu Definition Felder
Tabelle "Tabellenname" Feldname "Feld" Feldlänge 0 nicht erlaubt! In der Spalte für die Feldlänge steht eine 0. Tragen Sie hier die gewünschte Feldlänge ein.