Der Befehl SET TABLE TITLES kann Tabellen Ihrer Datenbank ausblenden, umbenennen und neu ordnen, die in 4D Standarddialogfenstern in der Anwendungsumgebung erscheinen (insbesondere, wenn die Editoren über Befehle der 4D Programmiersprache aufgerufen werden). Dieser Befehl kann z.B. die Anzeige von Tabellen im Sucheditor in der Anwendungsumgebung ändern.
Mit diesem Befehl können Sie auch Tabellennamen in Ihren Formularen "on the fly" umbenennen, wenn Sie dynamische Namen verwendet haben. Weitere Informationen dazu finden Sie im im Abschnitt Referenzen in statischem Text verwenden des Handbuchs 4D Designmodus.
Die Arrays TabellenTitel und TabellenNr müssen synchronisiert sein. Im Array TabellenTitel übergeben Sie die entsprechenden Namen. Wollen Sie eine bestimmte Tabelle nicht anzeigen, übernehmen Sie deren Namen oder neuen Titel nicht in das Array. Die Tabellen erscheinen in der im Array festgelegten Reihenfolge. Sie übergeben in jedem Element des Array TabellenNr die aktuelle Tabellennummer des dazugehörigen Tabellennamens bzw. des neuen Titels, der unter derselben Elementnummer in TabellenTitel übergeben wurde.
Sie haben zum Beispiel eine Datenbank mit den Tabellen A, B und C in dieser Reihenfolge. Diese Tabellen sollen als X, Y und Z erscheinen, wobei Tabelle B nicht angezeigt werden soll. Außerdem soll die Reihenfolge Z und dann X sein. Übergeben Sie dazu Z und X in einem Array TabellenTitel aus zwei Elementen und 3 und 1 in einem Array TabellenNr aus zwei Elementen.
Mit dem optionalen Parameter * können Sie angeben, ob mit diesem Befehl in 4D Formeln selbst definierte Namen verwendbar sind.
- Ist dieser Parameter nicht angegeben, können Formeln, die in 4D ausgeführt werden, standardmäßig nicht die selbst definierten Namen verwenden; es müssen die tatsächlichen Tabellennamen verwendet werden. Das Verwenden eigener Namen bietet mehr Spielraum bei Tabellennamen, da der Programmiersprache-Interpreter eigene Namen nicht verarbeitet.
- Ist der Parameter * angegeben, können Formeln, die in 4D ausgeführt werden, die selbst definierten Namen verwenden. Beachten Sie in diesem Fall, dass die eigenen Namen keine Zeichen enthalten dürfen, die der Interpreter der 4D Programmiersprache nicht zulässt, wie -?*%! So kann z.B. in einer Formel nicht der Name "Rate_in_%" verwendet werden (Weitere Informationen dazu finden Sie im Abschnitt Namenskonventionen).
Hinweis: Bietet Ihre Anwendung Zugriff auf den Formeleditor, z.B. über den Schnellberichteditor, müssen Sie den Parameter * übergeben, damit die Konsistenz der Oberfläche gewährleistet ist.
SET TABLE TITLES verändert NICHT die aktuelle Struktur Ihrer Datenbank. Der Befehl beeinflusst nur den späteren Gebrauch der Standarddialogfenster von 4D und Formulare mit dynamischen Namen, wenn sie über Befehle der 4D Programmiersprache aufgerufen werden. Die reale Struktur der Datenbank erscheint, wenn der Editor oder das Formular über einen Menübefehl im Designmodus aufgerufen wird. SET TABLE TITLES gilt während einer Arbeitssitzung. Ein Vorteil im Client/Server-Betrieb ist, dass mehrere Arbeitsstationen gleichzeitig Ihre Datenbank auf unterschiedliche Art “sehen” können. Sie können SET TABLE TITLES beliebig oft aufrufen.
Verwenden Sie den Befehl SET TABLE TITLES, wenn Sie:
- Eine Datenbank dynamisch lokalisieren wollen.
- Tabellen in eigener Darstellung anzeigen wollen, unabhängig von der in der Datenbank festgelegten Definition.
- Tabellen je nach dem Benutzer oder den zugewiesenen Privilegien anders anzeigen wollen.
Hinweise:
- SET TABLE TITLES überschreibt NICHT die Eigenschaft Unsichtbar einer Tabelle. Ist einer Tabelle im Designmodus Ihrer Datenbank die Eigenschaft Unsichtbar zugewiesen, erscheint sie nicht im Anwendungsmodus, auch wenn sie im Aufruf von SET TABLE TITLES enthalten ist.
- Plug-Ins greifen immer auf die virtuelle Struktur zu, die durch diesen Befehl spezifiziert ist.
- Sie entwickeln eine 4D Anwendung für den internationalen Gebrauch. Dafür müssen Sie die jeweilige Lokalisierung mit Bedacht planen. Sie können die erforderliche Lokalisierung über eine Tabelle [Translations] und einige Projektmethoden steuern, die lokalisierte Felder für beliebig viele Länder erstellen und einsetzen.
- Fügen Sie in Ihrer Datenbank folgende Tabelle hinzu:
- Dann erstellen Sie die nachfolgende Projektmethode TRANSLATE TABLES AND FIELDS. Diese Methode durchläuft die aktuelle Struktur Ihrer Datenbank und erstellt alle notwendigen [Translations]Datensätze für die Lokalisierung gemäß der als Parameter übergebenen Sprache.
C_TEXT($1)
C_LONGINT($vlTable;$vlField)
C_TEXT($Language)
For($vlTable;1;Get last table number)
If($vlTable#(Table(->[Translations])))
QUERY([Translations];[Translations]LanguageCode=$Language;*)
QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)
QUERY([Translations]; & ;[Translations]FieldID=0)
If(Is table number valid($vlTable))
If(Records in selection([Translations])=0)
CREATE RECORD([Translations])
[Translations]LanguageCode:=$Language
[Translations]TableID:=$vlTable
[Translations]FieldID:=0
[Translations]Translation:=Table name($vlTable)+" in "+$Language
SAVE RECORD([Translations])
End if
For($vlField;1;Get last field number($vlTable))
QUERY([Translations[Translations]LanguageCode=$Language;*)
QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)
QUERY([Translations]; & ;[Translations]FieldID=$vlField)
If(Is field number valid($vlTable;$vlField))
If(Records in selection([Translations])=0)
CREATE RECORD([Translations])
[Translations]LanguageCode:=$Language
[Translations]TableID:=$vlTable
[Translations]FieldID:=$vlField
[Translations]Translation:=Field name($vlTable;$vlField)+" in "+$Language
SAVE RECORD([Translations])
End if
Else
If(Records in selection([Translations])#0)
DELETE RECORD([Translations])
End if
End if
End for
Else
If(Records in selection([Translations])#0)
DELETE RECORD([Translations])
End if
End if
End if
End for
- Führen Sie an dieser Stelle folgende Zeile aus, können Sie soviel Datensätze erstellen, wie Sie für eine Lokalisierung der Tabellen- und Feldtitel in Spanisch benötigen.
TRANSLATE TABLES AND FIELDS("Spanisch")
- Nach Durchführen dieses Aufrufs können Sie für jeden neu erstellten Datensatz [Translations]Translated Name eingeben.
- Damit Sie je nach Bedarf Ihre 4D Standarddialogfenster in Spanisch anzeigen können, schreiben Sie folgenden Code:
LOCALIZED TABLES AND FIELDS("Spanisch")
mit der Projektmethode LOCALIZED TABLES AND FIELDS:
C_TEXT($1)
C_LONGINT($vlTable;$vlField)
C_TEXT($Language)
C_LONGINT($vlTableNum;$vlFieldNum)
$Language:=$1
ARRAY TEXT($asNames;0)
ARRAY INTEGER($aiNumbers;0)
QUERY([Translations];[Translations]LanguageCode=$Language;*)
QUERY([Translations]; & ;[Translations]FieldID=0)
SELECTION TO ARRAY([Translations]Translation;$asNames;[Translations]TableID;$aiNumbers)
SET TABLE TITLES($asNames;$aiNumbers)
$vlTableNum:=Get last table number
For($vlTable;1;$vlTableNum)
If(Is table number valid($vlTable))
QUERY([Translations];[Translations]LanguageCode=$Language;*)
QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)
QUERY([Translations]; & ;[Translations]FieldID#0)
SELECTION TO ARRAY([Translations]Translation;$asNames;[Translations]FieldID;$aiNumbers)
SET FIELD TITLES(Table($vlTable)->;$asNames;$aiNumbers)
End if
End for
Beachten Sie, dass Sie neue Lokalisierungen ohne Ändern oder Rekompilieren des Code hinzufügen können.