Setup Feldtypen Geschätzte Lektüre: 22 Minuten Hier sind alle Feldtypen von LIMBAS gespeichert. Ist admin_mode gesetzt, werden Änderungen an den Feldtypen nicht als Erweiterung, sondern im Core gespeichert. Die Unterschiede zwischen Core und Erweiterung werden farblich hervorgehoben dargestellt. Achtung: Bei einem Systemupdate werden eventuell Änderungen im Core zurückgesetzt! Um die Einstellungen auch über ein Systemupdate hinweg beizubehalten, sollten Sie alle Änderungen dieser Liste nur mit deaktiviertem admin_mode durchführen, sodass diese als Erweiterung gespeichert werden. Intern speichert LIMBAS die Feldtypen in den Tabellen „lmb_field_types“ und „lmb_field_types_depend“. Vordefinierte LIMBAS-Feldtypen Standard-Feldtypen Zahlen Zahl Ganzzahl (positiv oder negativ) mit je nach Datenbank unterschiedlichen Maximalgrößen. Fließkomma-Zahl Kommazahl mit Datenbank-abhängiger Genauigkeit und Größe. Limbas versucht den Rundungsfehler zu verstecken und somit eine exakte Genauigkeit zu simulieren. Eine ausreichende Feldgröße ist dafür Voraussetzung.Für die MAXDB gilt „precision p (0<p<=38)“. Dieser Feldtyp entspricht dem Typ „FLOAT oder REAL“. Dieser Feldtyp ist wegen seiner Geschwindigkeit gut für Berechnungen geeignet. Wegen der Ungenauigkeit ist er für Währungen eher ungeeignet. Numerische-Kommazahl Bei diesem Feldtyp erfolgt keine Rundung. Kann der Tabelleninhalt nicht mit der erforderlichen Genauigkeit gespeichert werden, werden die niederwertigsten Stellen gelöscht.Für die MAXDB gilt „fixed point number (p,s)“. Dieser Feldtyp entspricht dem Typ „FIXED, NUMERIC oder DECIMAL“.Es kann eine exakte Anzahl Vorkomma und Nachkommastellen definiert werden. Die Größe [ 10,3 ] würde ein Feld mit 10 Stellen insgesamt und 3 Nachkommastellen (also 7 Vor 3 Nach) definieren. Prozent-Kommazahl Gleiches wie „Numerische-Kommazahl“. Ein Prozentzeichen wird mit in der Anzeige dargestellt. Zahlen allgemein Formatierung Für die Formatierung der numerischen Feldtypen verwendet LIMBAS die PHP-Funktion number_format, deren Parameter in den Tabellenfeld-Einstellungen (siehe Tabellenfeld-Einstellungen) vorgenommen wird.Die Parameter sind dabei so einzutragen, wie sie der Funktion übergeben werden. Beispiel: Wie 1234,56 dargestellt wird: 2,‘,‘,‘ ‚ ==> 1 234,56 1,‘:‘,’x‘ ==> 1×234:6 Exponentialdarstellung Kann eine Zahl nicht mit der unter „Potenzschwelle“ eingetragenen Anzahl Dezimalstellen dargestellt werden, so wird sie in der Exponentialdarstellung angezeigt. Die beschriebene Formatierung wird in diesem Fall nicht berücksichtigt.Die Darstellung und Eingabe erfolgt für z.B im „1.58e-11“ Format für Formulare und im „15,8-11“ Format für Detaildarstellung. (siehe Tabellenfeld-Einstellungen) Numeric Problem Der Datentyp Numeric verhält sich bei verschiedenen Datenbanken unterschiedlich.PostgreSQL rundet numerische Felder auf Ganzzahlen die ohne Nachkommastellen (z.B numeric 10) definiert sind. Für die Nutzung von Nachkommastellen müssen diese definiert sein (z.B. 10,3).MaxDB hingegen stellt eine Zahl mit der Definition ohne Nachkommastellen (z.B. DECIMAL 10) als dynamische Kommazahl dar. Float Problem Der Datentyp Float verhält sich bei verschiedenen Datenbanken unterschiedlich.PostgreSQL rundet die 4 oder 8 Byte (FOAT4 / FLOAT8) Große Fließkommazahl mit mehr oder weniger großer Genauigkeit. MaxDB definiert hingegen den Feldtyp FLOAT „Floating Point Number“ mit wählbarer Präzision p (0<p<=38).Bei einer Migration beider Datenbanken sollte das berücksichtigt werden. Text Einzeiliger Text mit bis zu 250 Zeichen. Die Darstellung erfolgt als Textzeile. Die Eingabe weiterer Zeichen wird blockiert. Textblock Textblock mit bis zu 2000 Zeichen. Die Darstellung erfolgt als Textblock. Weitere eingegebene Zeichen werden abgeschnitten. Dabei ist zu beachten, dass ein Zeilenumbruch aus zwei Zeichen besteht. Zeilenvorschub und Wagenrücklauf (chr(13) und chr(10)). Long Textblock mit beliebig vielen Zeichen.Durch Auswahl der WYSIWYG-Option können Texte formatiert werden.Die Verschlagwortung-Option wirkt sich in der Listenansicht bei der Suche nach im Tabellenfeld enthaltenen Text aus: Bei nicht aktivierter Option ist es abhängig von der Datenbank, ob eine entsprechende Suche möglich ist. (PostgreSQL+, MAXDb-, MSSQL-) Bei aktivierter Option wird eine Volltextindexierung mit den im Tabellenfeld enthaltenen Einträgen vorgenommen. Dies ermöglicht eine entsprechende Suche für alle Datenbanken und erhöht die Performance bei der Suche. siehe auch: indize Das Long Feld entspricht dem Typ „TEXT,BLOB oder LONG“.Dieser Feldtyp belegt zwar wenig Resourcen in der Tabellendefinition ist aber wegen seiner schlechten Performance und Sonderbehandlung bzw. Restriktionen bei den meisten Datenbanken umsichtig einzusetzen. Zeit / Datum / Datum_Zeit Die Formatierung der Zeit-Feldtypen wird entsprechend der User-Einstellung im Feld „Datumsformat“ (siehe [admin]->[User/Gruppen]->[Administrieren]) vorgenommen. Die Eingabe von Daten in der Bearbeitungsansicht muss in diesem Format vorgenommen werden. Erfolgt die Eingabe in einem anderen Format versucht LIMBAS dies in das richtige Format zu konvertieren.Die Eingabe nicht sinnvoller Tabelleninhalte (z.B. 14.23.2002 13:91:00) wird abgefangen. In der Bearbeitungsansicht wird bei Doppelklick mit der linken Maustaste in das zugehörige Eingabefeld der gerade aktuelle Wert eingefügt. Die Formatierung der Zeit-Feldtypen in der Listen- und Detailansicht kann individuell festgelegt werden. Dazu muß unter Tabelleneinstellungen ([admin]->[Tabellen]) im Feld „Zusatz“ die entsprechendem Formatierungsinformation hinterlegt werden. Das Format für diese Formatierungsinformation und der gültige Wertebereich ist abhängig vom Wert der Umgebungsvariablen „use_datetimeclass“ ([admin]->[Setup]->[UmgVar]): use_datetimeclass = 0: Formatierungsinformation entsprechend der PHP-Funktion „strftime“ (siehe strftime) Der gültige Wertebereich für Zeit/Datum liegt zwischen Freitag, 13.12.1901 20:45:54 GMT und Dienstag, 19.01.2038 03:14:07 GMT. Unter Windows-Betriebssytemen ist dieser Bereich auf 01.01.1970 bis 19.01.2038 beschränkt. use_datetimeclass = 1: Formatierungsinformation entsprechend der PHP-Klasse „DateTime“ (siehe datetime_format) Der gültige Wertebereich umfaßt alle Daten mit 4stelliger Jahreszahl (d.h. das Jahr 1 ist mit 0001 einzugeben). Boolean Feldtyp für TRUE/FALSE oder YES/NO-Informationen. Die Darstellung erfolgt mit einem Haken, die Eingabe über eine Checkbox. Sonder-Feldtypen Auto-ID Positive ganze Zahl mit bis zu 18 Dezimalstellen zur eindeutigen Identifikation des Datensatzes. Der Wert wird von LIMBAS vergeben und kann nicht vom Benutzer verändert werden. Post-User / Edit-User Name des Benutzers, der den Datensatz erstellt bzw. als letztes verändert hat. Der Wert wird von LIMBAS gesetzt und kann nicht vom Benutzer verändert werden. Post-Date / Edit-Date Datum der Erstellung bzw. der letzten Änderung des Datensatzes. Der Wert wird von LIMBAS gesetzt und kann nicht vom Benutzer verändert werden. User / Gruppen-Liste Mit der „User/Gruppen-Liste“ können Limbas-User und -Gruppen ausgewählt werden. In der Listendarstellung kann in dem Suchfeld sowohl nach dem User-/Gruppen-Namen, als auch nach der ID gesucht werden. Die Suche kann durch das Präfix #u# bzw. #g# auf User bzw. Gruppen limitiert werden. Beispiel: Suche nach 1: Zeigt alle User und Gruppen mit der ID 1 an Suche nach #u#1: Zeigt alle User mit der ID 1 an Suche nach #g#admin: Zeigt alle Gruppen an, deren Name admin enthält Währung Verknüpfung aus Betrag (Datenbank-abhängig: Numerische-Kommazahl oder Fließkomma-Zahl) und Währungsinformation. Das Format des Betrages kann wie das Format der numerischen Feldtypen im Feld „Zusatz“ (siehe Formatierung) konfiguriert werden.Die Währung kann in der Bearbeitungsansicht aus einem Select-Feld, dessen Einträge der LIMBAS-Systemtabelle „lmb_currency“ entnommen werden, ausgewählt werden.In der Bearbeitungsansicht besteht die Möglichkeit, durch einfachen Mausklick auf den nebenstehenden Pfeil Beträge von einer Währung in eine andere umzurechnen.Ist beim Speichern des Datensatzes ein Betrag eingegeben, aber keine Währung eingestellt, so wird die Währung, die bei den Tabelleneinstellungen ([admin]->[Tabellen]) im Feld „Zusatz“ (untere Zeile) eingestellt ist, verwendet. Problem: Der Datentyp Float verhält sich bei verschiedenen Datenbanken unterschiedlichAnsatz: PostgreSQL rundet die 4 oder 8 Byte (FLOAT4 / FLOAT8) Große Fließkommazahl mit mehr oder weniger großer Genauigkeit.Für Währungsfelder ist dieser Datentyp also unbrauchbar. MaxDB definiert hingegen den Feldtyp FLOAT „Floating Point Number“ mit wählbarer Präzision p (0<p<=38). Die Migration beider Datenbanken gestaltet sich daher für den Feldtyp Float als problematisch.Für PostgreSQL sollte man bei Währungsfeldern anstatt FLOAT den Feldtyp NUMERIC wählen, wofür im LIMBAS Admin-Bereich dieser Menüpunkt (Setup->Feldtypen) zur Verfügung steht. Diese Einstellung entspricht der Default-Einstellung. Farbauswahl Farbe als RGB-Wert, der in der Bearbeitungsansicht auch über eine Palette ausgewählt werden kann. Telefonie Textfeld für Telefonnummern im internationalen Format. Die Eingabe ungültiger Zeichen sowie ein falsches Format wird von LIMBAS reklamiert. Dateigröße Ganzzahl zur Speicherung einer Dateigröße in Byte. Die Eingabe läßt übliche Größenangaben wie KB, MB, GB oder TB zu und rechnet diese für die Speicherung in der Datenbank in Byte um. Mimetype Der „Mimetype“ wird in der Bearbeitungsansicht aus einem Select-Feld, dessen Einträge im Mimetype-Editor festgelegt werden können, ausgewählt. Abb.: Mimetype-Editor Abb.: Auswahlfeld URL Einzeiliger Text mit bis zu 230 Zeichen für eine URL.In der Bearbeitungs- und Detailansicht öffnet sich durch einfachen Mausklick auf den nebenstehenden Pfeil die URL, sofern diese gültige ist. Wenn keine absolute URL eingetragen ist, versucht LIMBAS die URL relativ zu der aktuell im Browser dargestellten zu öffnen. E-mail Einzeiliger Text mit bis zu 128 Zeichen für eine E-Mail-Adresse. In der Bearbeitungs- und Detailansicht öffnet sich durch einfachen Mausklick auf den nebenstehenden Pfeil der E-Mail-Client des Benutzers zum Verfassen einer E-Mail an die eingetragene Adresse. Auswahl „Übersicht der ausgewählten Pools in den Tabelleneinstellungen“ Die Einträge, die bei einer Auswahl gewählt werden können, werden in LIMBAS zu einem Auswahlpool zusammengefaßt. Es können Pools mit Einträgen neu angelegt und unbenutzte Pools gelöscht werden.[Tabellen]) im Feld „Zusatz“ eingestellt. Es gibt sowohl Auswahlfelder, bei denen mehrere Einträge ausgewählt werden können (multiselect, checkbox, ajax), als auch Auswahlfelder, bei denen nur ein Eintrag gewählt werden kann (Radio, Select und multiselect, checkbox, ajax mit der unique-Option). In der Listenansicht werden die ausgewählten Einträge als Text angezeigt. Ist in den Tabellenfeld-Einstellungen als Darstellungsart „Kurzform“ ausgewählt, werden mehrere ausgewählte Einträge zusammengefasst dargestellt (Abb. 1).Durch einen Klick auf den schwarzen Pfeil öffnet sich eine Liste mit allen ausgewählten Einträgen (Abb. 2). Wird die Darstellungsart „Ausführlich“ gewählt, werden alle ausgewählten Einträge (durch ein wählbares Trennzeichen getrennt) dargestellt (Abb. 3).Siehe auch: Tabellenfeld-Einstellungen Abb. 1: Listendarstellung in Kurzform Abb. 2: ListendarstellungAusführlich Abb. 3: Liste der ausgewählten Einträge In der Detail-Ansicht für einen Datensatz wird für jede Spalte der Tabelle der ausgewählte Wert angezeigt.Bei den Auswahlfeldern, bei denen nur ein Eintrag ausgewählt wurde, wird dieser Eintrag als Text dargestellt. Wurden mehrere Einträge ausgewählt, werden diese als Liste angezeigt. Auswahl (Radio) Auswahl, bei der ein einziger Eintrag ausgewählt werden kann. Der eingestellte Pool sollte daher auch nur maximal einen Eintrag als Default definieren. In der Listenansicht wird der ausgewählte Text angezeigt. Wird die Liste editiert, kann man einen Wert durch ein Dropdown-Menü festlegen. In der Detail-Bearbeitung kann durch mehrere Radio-Buttons ein Wert ausgewählt werden. Abb.: Auswahl (Radio) beim Editieren einer Liste Abb. : Auswahl (Radio) in der Detail-Bearbeitung Auswahl (Select) Auswahl, bei der ein einziger Eintrag ausgewählt werden kann. Der eingestellte Pool sollte daher auch nur maximal einen Eintrag als Default definieren. In der Detail- und Listenansicht wird der gewählte Eintrag als Text angezeigt. Wird die Liste editiert oder befindet man sich in der Detail-Bearbeitung, kann bei deaktivierter ajaxsuche ein Wert durch ein Dropdown-Menü festgelegt werden. Abb.: Funktion: Liste bearbeiten Bei aktivierter ajaxsuche erscheint für „Auswahl (Select)“ in der Bearbeitungsansicht eine Textzeile: Nach Eingabe von mindestens zwei Zeichen oder „*“ klappt eine Liste mit den Auswahlmöglichkeiten, deren Name die eingegeben Zeichen enthält, auf. Auswahl (multiselect) Wie Auswahl (Select), nur dass hier mehrere Einträge ausgewählt werden können. Im Editiermodus der Listenansicht kann ein Fenster geöffnet werden, das die Auswahlmöglichkeiten bietet. In der Detail-Bearbeitung werden die Einträge in einer Select-Liste dargestellt. Hält man die Strg-Taste gedrückt, kann man mehrere Einträge selektieren. Die ausgewählten Einträge werden dabei durch eine andere Farbe hervorgehoben. Abb.: Auswahl (multiselect) beim Editieren einer Liste Abb.: Auswahl (multiselect) in der Detail-Bearbeitung Auswahl (checkbox) Auswahl, bei der mehrere Einträge ausgewählt werden können. Im Editiermodus der Listenansicht kann ein Fenster geöffnet werden, das die Auswahlmöglichkeiten bietet. In der Detail-Bearbeitung können die gewünschten Einträge durch Checkboxes selektiert werden. Abb.: Auswahl (checkbox) in der Detail-Bearbeitung Auswahl (ajax) Auswahl, bei der mehrere Einträge ausgewählt werden können. Im Editiermodus der Listenansicht kann ein Fenster geöffnet werden, das die Auswahlmöglichkeiten bietet. Es gibt zur Auswahl der Einträge in der Detail-Bearbeitung eine Textzeile. Nach Eingabe von mindestens zwei Zeichen oder „*“ klappt eine Liste mit den Auswahlmöglichkeiten, deren Name die eingegeben Zeichen enthält, auf. Die ausgewählten Einträge erscheinen unter der Textzeile. Abb.: Auswahl (ajax) in der Detail-Bearbeitung Attribut Das „Attribut“ stellt eine Erweiterung zur Auswahl dar: Der Benutzer kann zu den gewählten Einträgen noch eine Zusatzinformation speichern. Diese Zusatzinformation kann vom Typ „text“, „int“, „float“, „date“ (Wertebereich beginnend ab 01.01.1902) oder „boolean“ sein. Wie bei der Auswahl fasst LIMBAS die Einträge mit dem Typ der Zusatzinformation zu einem Attribute-Pool zusammen. Auch diese Attribute-Pools können neu angelegt und, falls unbenutzt, gelöscht werden. In den bestehenden Attribute-Pools können neue Einträge hinzugefügt und unbenutzte Einträge gelöscht werden. In jedem Attribute-Pool können ein oder mehrere Einträge als Default für neu angelegte Datensätze gesetzt werden. Der für ein Attribut zu verwendende Pool wird bei den Tabelleneinstellungen ([admin]->[Tabellen]) im Feld „Zusatz“ eingestellt. Zur Auswahl der Attribute gibt es in der Bearbeitungsansicht eine Textzeile: Nach Eingabe von mindestens zwei Zeichen oder „*“ klappt eine Liste mit den Attributen, deren Name die eingegeben Zeichen enthält, auf. Nach einfachen Mausklick auf eines dieser Attribute, wird dieses unterhalb der Eingabezeile in einer zweispaltigen Tabelle aufgenommen. Die linke Spalte ist für den Namen, die rechte Spalte für die Eingabe der Zusatzinformation. Sobald ein Attribut in der Datenbank übernommen wurde, kann auch die Zusatzinformation eingeben werden. Außerdem erscheint ein Papierkorb-Symbol links neben dem Attribut-Namen, womit dieses bei Bedarf wieder aus der Datenbank gelöscht werden kann. Nach einfachem Mausklick auf den Papierkorb ändert sich die Textfarbe des zu löschenden Attribut-Namens von blau noch rot. Zum wirklichen Löschen des Attributs muß dann noch der Datensatz in die Datenbank übernommen werden. In der Detailansicht werden die ausgewählten Einträge mit Zusatzinformation aufgelistet. In der Listenansicht wird die Anzahl der ausgewählten Einträge gezeigt mit der Möglichkeit, eine Liste dieser Einträge aufzuklappen. Upload „Upload“ ermöglicht es, Dateien aus dem Dateisystem hochzuladen und eine Kopie davon in der Datenbank abzulegen. In der Bearbeitungsansicht wählt der Benutzer, wieviel (default 1) Dateien er für den Upload gleichzeitig angeben möchte. Daraufhin wird eine entsprechende Anzahl an Eingabefeldern und ein zugehöriger „Durchsuchen“-Button eingeblendet. Bei Auswahl eines Eingabefeldes oder Betätigung des Buttons öffnet sich ein Fenster zur Auswahl einer Datei. Beim Übernehmen des Datensatzes werden die ausgewählten Dateien als Kopie in der Datenbank eingespielt und stehen mit diesem Stand auch noch zur Verfügung, wenn sie im Dateisystem des Hosts gelöscht oder geändert werden. Sie werden nun unter dem Eingabefeld für neu hochzuladene Dateien mit Datum und Dateigröße aufgelistet. Per Mausklick auf den Dateinamen lassen sich die Dateien im Browser anzeigen. Bei Mausklick auf den nebenstehenden Pfeil werden Dateiinformationen und Meta-Daten angezeigt. In mehreren Schritten können auch mehr als 10 Dateien hochgeladen werden. Die Obergrenze ist durch den für die Datenbank zur Verfügung stehenden Speicherplatz gegeben. In der Detailansicht werden die hochgeladenen Dateien wie nach der Datensatz-Übernahme in der Bearbeitungsansicht aufgelistet. In der Listenansicht wird die Anzahl der Dateien gezeigt. Argumente Feldtypen können in Limbas auch um SQL- oder PHP-Argumente erweitert werden. In der Demo-Anwendung können Sie sich deren Verwendung unter Tutorial-Beispiele genauer ansehen. PHP-Argument „PHP-Argument“ ermöglicht es, das Ergebnis eines PHP-Ausdrucks in der Datenbank abzulegen. Bei der Anlage eines Tabellenelements vom Typ „PHP-Argument“ muß auch der Datentyp vom Ergebnis des PHP-Ausdrucks ausgewählt (default Text 50) werden. Der auszuwertende PHP-Ausdruck, eingebettet in einem return()-Befehl, wird bei den Tabelleneinstellungen ([admin]->[Tabellen]) im Feld „Zusatz“ angegeben. Dabei können Umgebungsvariablen und Einträge aus anderen Tabellenfeldern in den Ausdruck eingebunden werden. Die korrekte Syntax und der korrekte Ergebnistyp des PHP-Ausdrucks ist vom Benutzer sicherzustellen. In den Tabelleneinstellungen der Feldtypen gibt es unter der ID 32 das Argument2, das als Typ ein PHP-Argument erwartet. Auch hier geht bei Klick auf das Symbol (siehe rechts). ein Fenster auf, in dem ein PHP-Argument eingegeben werden kann. In dem dargestellten Fenster sehen Sie zwei Auswahlboxen, über die Sie Umgebungsvariablen und Felder in das PHP-Argument einfügen können. Im Beispiel wird der Username, das Erstelldatum und die Zahl eingefügt woraus beispielsweise folgender Satz erstellt wird: Hallo admin! Der Datensatz wurde am 11.09.2014 erstellt. Folgender Betrag ist zu zahlen: 23 € Sowohl in der Bearbeitungs-, Detail- und Listenansicht wird der berechnete Wert je nach Ergebnis-Datentyp mit einer Checkbox oder in einem Textfeld bzw. Textblock dargestellt. Verfügbare Parameter sind: $ID (Datensatz ID) $gresult (resultset Array) $gtabid (Tabellen ID) $fieldid (Feld ID) $bzm (Tabellenzeilen Schlüssel) Editierbar Falls bei den Tabelleneinstellungen ([admin]->[Tabellen]) im Feld „Zusatz“ der Tabelleninhalt als „editierbar“ konfiguriert wurde, ist in der Bearbeitungsansicht eine Nachbearbeitung des Werts möglich. Beim Übernehmen des Datensatzes wird der nachbearbeitete Tabelleninhalt in die Datenbank übernommen, sofern er dem PHP-Ergebnis-Datentyp entspricht. Wenn das Textfeld oder der Textblock beim Übernehmen des Datensatzes leer ist, erfolgt eine erneute Auswertung des PHP-Ausdrucks. Beispiele Ausgabe des Feldes mit der ID 5 wobei $gtabid die aktuelle TabellenID und $bzm die aktuelle Zeile ist. Für eine Formulardarstellung eines Datensatzes ist $bzm = 0. return $gresult[$gtabid][5][$bzm]; Ausgabe meiner eigenen Funktion fuction myExt_getHelloName($ID,$gtabid,$fieldid,$bzm,$gresult){ return 'hallo '.$gresult[$gtabid][5][$bzm]; } return myExt_getHello(); SQL-Argument „SQL-Argument“ ermöglicht es, das Ergebnis einer benutzerdefinierten SQL-Abfrage in einer Tabelle zu integrieren. Beim Anlegen des „SQL-Arguments“ muß auch der Datentyp des Ergebnisses der SQL-Abfrage ausgewählt (default Text 50) werden. Die SQL-Abfrage wird bei den Tabelleneinstellungen ([admin]->[Tabellen]) im Feld „Zusatz“ definiert. Dabei wird das für eine SQL-Abfrage notwendige Schlüsselwort „SELECT“ implizit von LIMBAS hinzugefügt, darf also nicht mit angegeben werden. Werden SQL-Funktionen oder Operatoren verwendet, so ist sicherzustellen, dass diese von der verwendeten Datenbank unterstützt werden. Falls die Abfrage eines Tabellenfeldes einen Leer-String oder den Wert NULL ergeben könnte, so ist das Verhalten der Datenbank ebenfalls zu überprüfen. Der ermittelte Wert kann vom Benutzer nicht nachbearbeitet oder verändert werden. Entsprechend dem PHP-Argument gibt es in den Tabelleneinstellungen der Feldtypen unter der ID 31 das Argument1, das als Typ ein SQL-Argument erwartet. Klicken Sie auf das Symbol (siehe rechts). Es öffnet sich ein Fenster, in dem ein SQL-Argument eingegeben werden kann. In dem dargestellten Fenster sehen Sie ein einfaches Beispiel, in dem eine Zahl mit 2 multipliziert wird. Ein weiteres Beispiel ist die Anwendung eines CASE-Arguments, bei dem die Versandkosten abhängig von der „zahl“ unterschiedlich sind: CASE WHEN zahl < 20 THEN 'Versandkosten 4,95€' WHEN zahl > 20 and zahl < 50 THEN 'Versandkosten 2,95€' ELSE 'keine Versandkosten' Beispiel Dieses Beispiel zeigt, wie man mit PHP oder SQL den Mittelwert von drei Zahlen berechnet. Folgende Tabelle zeigt zuerst den mit PHP berechneten Mittelwert, dann die drei Zahlen und dann den mit SQL berechneten Mittelwert: Das PHP-Argument ruft die Funktion Mittelwert(Zahl1, Zahl2, Zahl3) auf. Diese befindet sich unter den Extensions in der Datei „ext_gtab.inc“ (Siehe Skript-Erweiterungen). Die Datei könnte so aussehen: <?php function Mittelwert($v1, $v2, $v3){ return round(($v1 + $v2 + $v3) / 3,2); } ?> Der Mittelwert wird mit SQL direkt berechnet: Vererbt Der Feldtyp „Vererbt“ (siehe auch Beispiel Vererbung) kann bei der Dateneingabe Inhalte aus anderen Tabellenfeldern übernehmen (erben) und stellt dadurch eine Eingabehilfe dar. Der Benutzer hat aber trotzdem die Möglichkeit eigene Werte einzutragen, die mit keinem Datensatz der beerbten Tabelle übereinstimmen. Beim Anlegen eines „Vererbt“-Tabellenfeldes ist die Tabelle und das Tabellenfeld, von dem geerbt werden soll, anzugeben. Dadurch ergibt sich der eigentliche Feldtyp. Nicht alle Felder lassen sich sinnvoll beerben. Dies liegt in der Verantwortung des Benutzers. Bei Mausklick auf das Editier-Symbol eines „Vererbt“-Tabellenfeldes, kann diesem eine Vererbungs-„Gruppe“ zugewiesen werden. Abhängig vom eigentlichen Feldtyp gibt es auch die Option „Suchfeld“ sowie die Möglichkeit, „Filter“ einzustellen: Werden in der Bearbeitungsansicht in einem vererbten Feld mit aktivierter „Suchfeld“-Option ein oder mehrere Zeichen eingegeben, klappt eine Liste mit Daten aus dem beerbten Feld, die die eingegebenen Zeichen enthalten und den unter „Filter“ eingetragenen Suchkriterien entsprechen, auf. Nach einfachen Mausklick auf einen dieser Werte, wird dieser in das vererbte Tabellenfeld übernommen. Befinden sich in der Tabelle noch weitere Felder, die Felder aus der gleichen Tabelle beerben und der gleichen Vererbungs-„Gruppe“ zugeordnet sind, so werden diese ebenfalls mit den entsprechenden Daten aus dem zugehörigen Datensatz gefüllt. Die Filter-Einstellungen werden durch Setzen des „$gsr“-Parameters (siehe Funktionsbeschreibung „get_gresult“) vorgenommen. Bei deaktivierter „Suchfeld“-Option sind die „Filter“-Einstellungen bedeutungslos. Verknüpfung siehe: Verknüpfungen Extension-Feldtypen Versionsbemerkung Dieser Feldtyp steht nur versionierten Tabellen zur Verfügung. Bei der Versionierung eines Datensatzes kann eine Bemerkungen (Kommentar, z.B. eine Versionsnummer) eingeben werden. Gibt es in dem versionierten Datensatz ein oder mehrere Felder des Typs „Versionsbemerkung“, so wird die eingegebene Bemerkung automatisch in dieses Feld eingetragen, und zwar bei der neuen Version des Datensatzes. Intern fügt LIMBAS allen versionierten Tabellen automatisch die Spalte „vdesc“ hinzu. Alle Tabellenfelder des Typs „Versionsbemerkung“ werden auf diese Tabellenspalte „vdesc“ gemappt. Es ist also zu beachten, dass wenn ein Datensatz mehrere Tabellenfelder des Typs „Versionsbemerkung“ hat, diese auch alle den gleichen Wert haben. Dokument-Inhalt Der Feldtyp „Dokument-Inhalt“ hat eine Platzhalter-Funktion und wird nicht mit Daten gefüllt. Er ist nur in einer Tabelle mit indizierten Dateien sinnvoll einsetzbar. Dabei ermöglicht er es, in der Listenansicht die Dateien zu ermitteln, deren Inhalte einen Suchbegriff enthalten. Gruppierung Die Gruppierung hat eine Platzhalter-Funktion und wird nicht mit Daten gefüllt. Er ermöglicht es, in der Detail- und Bearbeitungsansicht mehrere Tabellenfelder zu gruppierern. In der Listenansicht ist die Gruppierung nicht sichtbar. Die zu einer Gruppe zugehörigen Tabellenfelder werden bei den Tabelleneinstellungen ([admin]->[Tabellen]) im Feld „Zusatz“ ausgewählt. Dabei ist auch die Sortierung, also an welcher Position sich das Tabellenfeld innerhalb der Gruppe befinden soll, anzugeben. Tabellenfelder, die zu einer Gruppe gehören, werden in der Gruppierung dargestellt, auch wenn sie sich dadurch in einer anderen Sparte befinden (siehe auch Sparte). Tabellenfelder mehreren Gruppen zuzuordnen, ist zwar möglich aber nicht sinnvoll. Ein entsprechendes Tabellenfeld wird in diesem Fall in beiden Gruppen dargestellt. Falls beim Übernehmen des Datensatzes in die Datenbank für dieses Tabellenfeld unterschiedliche Werte angegeben sind, könnte es zu einem nicht beabsichtigten Datenstand kommen. Eine Verschachtelungen von Gruppierungen ist nicht möglich. Gruppierung Reiter Die Tabellenfelder der „Gruppierung Reiter“ werden mit einem Reiter (anstatt wie sonst untereinander) ausgewählt. Daher ist in der Detail- und Bearbeitungsansicht immer nur ein Tabellenfeld aus solch einer Gruppe sichtbar. Gruppierung Zeile Die Tabellenfelder der „Gruppierung Zeile“ werden nebeneinander (anstatt wie sonst untereinander) dargestellt. Sparte Der Feldtyp „Sparte“ hat eine Platzhalter-Funktion, wird nicht mit Daten gefüllt und ist in der Listenansicht auch gar nicht sichtbar. In der Detail- und Bearbeitungsansicht dient „Sparte“ zur optischen Gliederung und Strukturierung des Datensatzes. Dabei gibt es zwei Möglichkeiten der Darstellung: – Auflistung aller Tabellenfelder untereinander Die Reihenfolge bei der Auflistung der Tabellenfelder entspricht der Reihenfolge bei den Tabelleneinstellungen ([admin]->[Tabellen]). Bei einem Tabellenfeld des Typs „Sparte“ wird der im Feld „Bezeichnung“ eingetragene Text zentriert über die gesamte Breite der Liste und farblich hervorgehoben dargestellt. – Gruppierung der Tabellenfelder in Sparten Die Sparten werden durch Reiter dargestellt. Der Text des Reiters wird bei den Tabelleneinstellungen ([admin]->[Tabellen]) aus dem Feld „Bezeichnung“ eines Tabellenfeldes des Typs „Sparte“ entnommen. Die Gruppierung der Tabellenfelder ergibt sich aus der Reihenfolge bei den Tabelleneinstellungen ([admin]->[Tabellen]). Alle Tabellenfelder vor dem ersten Tabellenfeld des Typs „Sparte“ werden jeder Sparte zugeordnet, sind also auch bei jedem Reiter sichtbar. Die Tabellenfelder, welche einem Tabellenfeld des Typs „Sparte“ folgen, werden dieser Sparte zugeordnet, und zwar solange bis ein weiteres Tabellenfeld des Typs „Sparte“ definiert ist. Diese Tabellenfelder sind somit nur sichtbar, wenn der Reiter dieser Sparte ausgewählt ist. Tags Tags sind optionale Zusätze für Felder des Typs Attribut. Am besten lassen sich Tags anhand von Beispielen erklären. Tag-Pools erstellen Erstellen Sie ein neues Feld des Typen „Attribut“ für die Tabelle „Kunden“ („admin->Tabellen->Beispiel-CRM->Kunden“). Diesem Feld sollen nun Tags hinzugefügt werden. Selbstverständlich können Sie Tags auch auf bestehende Felder anwenden. Bearbeiten Sie die Feldoptionen indem Sie auf das Stift-Symbol klicken. Klicken Sie auf den Reiter „Attribut“ im Kontextmenü und erstellen Sie einen neuen Auswahl-Pool der bestimmte Tags enthalten soll. Wählen Sie den neu erstellten Auswahl-Pool aus. Aktivieren Sie den „Tag-Mode“ im Kontextmenü. Auswahl-Pools mit aktiviertem „Tag-Mode“ werden in diesem Artikel als Tag-Pools bezeichnet. Die Funktion „Multiple-Mode“ erlaubt die mehrfache Verwendung eines Tags auf ein und demselben Datensatz. Nun können einzelne Tags innerhalb dieses Tag-Pools erstellt werden. Spezifizieren Sie unter „Attribut“, von welchem Typ ein eventuelles Tag-Attribut sein soll (z.B. „text“ oder „int“; wählen Sie „ohne“ falls das Tag kein Attribut haben soll). Nachdem ein Tag erstellt wurde, können Farbe sowie einige weitere Funktionen gesetzt werden. Hier ein Überblick der Funktionen: Default: Neu erstellte Datensätze werden automatisch mit diesem Default-Tag versehen Pflicht: Das Attribut dieses Tags muss ausgefüllt werden Ausblenden: Das Attribut dieses Tags wird nicht angezeigt Inaktiv: Das Tag kann nicht verwendet werden, solang es inaktiv ist Alle erstellten Tag-Pools können wie auch normale Auswahl-Pools global, also in anderen Feldern und Tabellen, wiederverwendet werden. Verwendung von Tags Vor der Verwendung der neuen Tags ist ein Reset notwendig. Navigieren Sie anschließend zu „Arbeitsplatz->Tabellen->Beispiel-CRM->Kunden“. Klicken Sie einen beliebigen Eintrag doppelt an, navigieren Sie zum Formular-Symbol und wählen Sie im Kontextmenü „Standardformular“ aus. Im Standardformular können Sie nun für den ausgewählten Datensatz im Feld „TAG_FELD“ Tags aus dem Tag-Pool „tag_pool“ auswählen und deren Attribute (falls vorhanden) bestimmen. Hier eine mögliche Auswahl der Tags: Nachdem die Tags erfolgreich angelegt wurden sind sie in der „Kunden“-Tabelle in dem Feld „TAG_FELD“ sichtbar.