SET TABLE TITLES

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 11 (Geändert)


SET TABLE TITLES (TabellenTitel; TabellenNummer{; *})

ParameterTypBeschreibung
TabellenTitelArray String Tabellennamen, wie sie im Dialog
erscheinen sollen
TabellenNummerArray numerischAktuelle 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 4D erscheinen, wie z.B. dem Sucheditor in der Anwendungsgebung (insbesondere, wenn die Editoren über Befehle der 4D Programmiersprache aufgerufen werden).

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 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, 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 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.

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 ( Text)
     ` TRANSLATE TABLES AND FIELDS ( LanguageCode )

   C_TEXT($1) ` Sprachcode   
   C_LONGINT($vlTable;$vlField)
   C_TEXT($Language)

   For ($vlTable;1;Get last table number) ` Durchlaufe die Tabellen
      If($vlTable#(Table(->[Translations])))  `Do not translate table of translations
            ` Check if there is a translation of the table name for the specified language
         QUERY([Translations];[Translations]LanguageCode=$Language;*)  `desired language
         QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)  `table number
         QUERY([Translations]; & ;[Translations]FieldID=0)  `field number = 0 means that it is a table name
         If(Is table number valid($vlTable))  `check that the table still exists
            If(Records in selection([Translations])=0)
                  ` Otherwise, create the record
               CREATE RECORD([Translations])
               [Traductions]LanguageCode:=$Language
               [Traductions]TableID:=$vlTable
               [Traductions]FieldID:=0
                  ` The name of the translated table will need to be entered
               [Translations]Translation:=Table name($vlTable)+" in "+$Language
               SAVE RECORD([Translations])
            End if 

            For($vlField;1;Get last field number($vlTable))
                  ` Check if there is a translation of the field name for the specified language
               QUERY([Translations];[Translations]LanguageCode=$Language;*)  `desired language
               QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)  `table number
               QUERY([Translations]; & ;[Translations]FieldID=$vlField)  `field number
               If(Is field number valid($vlTable;$vlField))
                  If(Records in selection([Translations])=0)
                        ` Otherwise, create the record
                     CREATE RECORD([Translations])
                     [Traductions]LanguageCode:=$Language
                     [Traductions]TableID:=$vlTable
                     [Traductions]FieldID:=$vlField
                        ` The name of the translated field will need to be entered
                     [Traductions]Translation:=Field name($vlTable;$vlField)+" in "+$Language
                     SAVE RECORD([Translations])
                  End if 
               Else
                  If(Records in selection([Translations])#0)
                        ` If the field no longer exists, remove the translation
                     DELETE RECORD([Translations])
                  End if 
               End if 
            End for 
         Else
            If(Records in selection([Translations])#0)
                  ` If the table no longer exists, remove the translation
               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:

      ` Globale Methode LOCALIZED TABLES AND FIELDS 
      ` LOCALIZED TABLES AND FIELDS ( Text )
      ` LOCALIZED TABLES AND FIELDS ( LanguageCode )

   C_TEXT($1)  `Language code 
   C_LONGINT($vlTable;$vlField)
   C_TEXT($Language)
   C_LONGINT($vlTableNum;$vlFieldNum)
   $Language:=$1

      `Updating table names
   ARRAY TEXT($asNames;0)  ` Initialize arrays for SET TABLE TITLES and SET FIELD TITLES
   ARRAY INTEGER($aiNumbers;0)
   QUERY([Translations];[Translations]LanguageCode=$Language;*)
   QUERY([Translations]; & ;[Translations]FieldID=0)  `thus table names
   SELECTION TO ARRAY([Translations]Translation;$asNames;[Translations]TableID;$aiNumbers)
   SET TABLE TITLES($asNames;$aiNumbers)

      `Updating field names
   $vlTableNum:=Get last table number  ` Get number of tables in database
   For($vlTable;1;$vlTableNum)  ` Pass through each table
      If(Is table number valid($vlTable))
         QUERY([Translations];[Translations]LanguageCode=$Language;*)
         QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)
         QUERY([Translations]; & ;[Translations]FieldID#0)  `avoid the zero that serves as table name
         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.

Referenz

SET FIELD TITLES, Table name.

Anwendung des Befehls

Virtual Structure 1


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next