Version 2004.2 (Geändert)
SET TABLE TITLES (TabellenTitel; TabellenNummer{; *})
Parameter | Typ | Beschreibung | |
TabellenTitel | Array String | Tabellennamen, wie sie im Dialog | |
erscheinen sollen | |||
TabellenNummer | Array numerisch | Aktuelle Tabellennummern | |
* | Verwende die eigenen Namen im | ||
Formulareditor |
Beschreibung
Mit dem Befehl SET TABLE TITLES können Sie Tabellen Ihrer Datenbank ausblenden, umbenennen und neu ordnen, wenn sie in den Standarddialogfenstern von 4th Dimension erscheinen, wie z.B. dem Sucheditor in der Benutzer- oder Runtime-Umgebung.
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 Handbuch 4th Dimension 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, vergeben Sie dafür keinen Namen im 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 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.
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 -, +,\(Weitere Informationen dazu finden Sie im Abschnitt Identifiers).
Hinweis: Auf der Ebene des Formeleditors verändert die Ausführung dieses Befehls ohne den Parameter * keine Einstellungen, die zuvor mit * gesetzt wurden. D.h. der Formeleditor zeigt immer den angepassten Namen, der über den letzten Aufruf des Befehls mit dem Parameter * gesetzt wurde.
SET TABLE TITLES verändert NICHT die aktuelle Struktur Ihrer Datenbank. Der Befehl beeinflusst nur den späteren Gebrauch der Standarddialogfenster von 4th Dimension und Formulare mit dynamischen Namen in der Benutzer- oder Runtime-Umgebung. 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.
Warnung: SET TABLE TITLES überschreibt NICHT die Eigenschaft Unsichtbar einer Tabelle. Ist einer Tabelle im Designmodus Ihrer Datenbank die Eigenschaft Unsichtbar zugewiesen, erscheint sie nicht, auch wenn sie im Aufruf von SET TABLE TITLES enthalten ist.
Beispiel
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 untenstehende 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.
` Projektmethode TRANSLATE TABLES AND FIELDS ` TRANSLATE TABLES AND FIELDS ( String ) ` TRANSLATE TABLES AND FIELDS ( Sprache ) C_STRING(31;$1) C_LONGINT($vlTable;$vlField) For ($vlTable;1;Count tables) ` Durchlaufe die Tabellen ` Prüfe, ob es für die angegebene Sprache eine Übersetzung für den Tabellennamen gibt. QUERY([Translations];[Translations]Actual Name=Table name($vlTable);*) QUERY([Translations]; & ;[Translations]Language=$1) If (Records in selection([Translations])=0) ` Wenn nicht, erstelle den Datensatz CREATE RECORD([Translations]) [Translations]Actual Name:=Table name($vlTable) [Translations]Language:=$1 ` Der übersetzte Tabellenname muß eingegeben werden. SAVE RECORD([Translations]) End if For ($vlField;1;Count fields($vlTable)) ` Prüfe, ob es für die angegebene Sprache eine Übersetzung für den Feldnamen gibt. QUERY([Translations];[Translations]Actual Name=Field name($vlTable;$vlField);*) QUERY([Translations]; & ;[Translations]Language=$1) If (Records in selection([Translations])=0) ` Wenn nicht, erstelle das Datenfeld CREATE RECORD([Translations]) [Translations]Actual Name:=Field name($vlTable;$vlField) [Translations]Language:=$1 ` Der übersetzte Feldname muß eingegeben werden. SAVE RECORD([Translations]) End if End for 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:
` Globale Methode LOCALIZED TABLES AND FIELDS ` LOCALIZED TABLES AND FIELDS ( String ) ` LOCALIZED TABLES AND FIELDS ( Sprache ) C_STRING(63;$1) C_LONGINT($vlTable;$vlNbTable;$vlField;$vlNbField) $vlNbTable:=Count tables ` Erhalte Anzahl der Tabellen in der Datenbank ARRAY STRING(31;$asTableName;$vlNbTable) ` Initialisiere die in SET TABLE TITLES zu übergebenden Arrays ARRAY INTEGER($aiTableNumber;$vlNbTable) For ($vlTable;1;$vlNbTable) ` Durchlaufe die Tabellen $asTableName{$vlTable}:=Table name($vlTable) ` Erhalte Name der Tabelle $aiTableNumber{$vlTable}:=$vlTable ` Speichere die aktuelle Tabellennummer QUERY([Translations];[Translations]Actual Name=$asTableName{$vlTable};*) ` Suche nach der Übersetzung QUERY([Translations]; & ;[Translations]Language=$1) If (Records in selection([Translations])>0) $asTableName{$vlTable}:=[Translations]Translated Name ` Wenn vorhanden, verwende den lokalisierten Tabellennamen End if $vlNbField:=Count fields($vlTable) ` Erhalte Anzahl der Felder für diese Tabelle ARRAY STRING(31;$asFieldName;$vlNbField) ` Initialisiere die in SET FIELD TITLES zu übergebenden Arrays ARRAY INTEGER($aiFieldNumber;$vlNbField) For ($vlField;1;$vlNbField) ` Durchlaufe die Datenfelder $asFieldName{$vlField}:=Field name($vlTable;$vlField) ` Erhalte Name des Feldes $aiFieldNumber{$vlField}:=$vlField ` Speichere die aktuelle Feldnummer QUERY([Translations];[Translations]Actual Name=$asFieldName{$vlField};*) ` Suche nach der Übersetzung QUERY([Translations]; & ;[Translations]Language=$1) If (Records in selection([Translations])>0) $asFieldName{$vlField}:=[Translations]Translated Name ` Wenn vorhanden, verwende den lokalisierten Feldnamen End if End for SORT ARRAY($asFieldName;$aiFieldNumber;>) SET FIELD TITLES(Table($vlTable)->;$asFieldName;$aiFieldNumber) End for SORT ARRAY($asTableName;$aiTableNumber;>) SET TABLE TITLES($asTableName;$aiTableNumber)
Beachten Sie, dass Sie neue Lokalisierungen ohne Ändern oder Rekompilieren des Code hinzufügen können.
Referenz
Count tables, SET FIELD TITLES, Table name.