SET TABLE TITLES

4D - Documentation   Français   English   German   Spanish   Japanese   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: 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.

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])))  `Übersetze nicht die Tabelle Translations
            ` Prüfe, ob es eine Übersetzung des Tabellennamen für die angegebene Sprache gibt.
         QUERY([Translations];[Translations]LanguageCode=$Language;*)  `gewünschte Sprache
         QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)  `Tabellennummer
         QUERY([Translations]; & ;[Translations]FieldID=0)  `Feldnummer = 0 heißt, es ist ein Tabellenname
         If(Is table number valid($vlTable))  `Prüfe, ob die Tabelle noch existert
            If(Records in selection([Translations])=0)
                  ` Andernfalls erstelle den Datensatz
               CREATE RECORD([Translations])
               [Traductions]LanguageCode:=$Language
               [Traductions]TableID:=$vlTable
               [Traductions]FieldID:=0
                  ` Der Name der übersetzten Tabelle muss eingegeben werden
               [Translations]Translation:=Table name($vlTable)+" in "+$Language
               SAVE RECORD([Translations])
            End if 

            For($vlField;1;Get last field number($vlTable))
                  ` Prüfe, ob es eine Übersetzung des Feldnamen für die angegebene Sprache gibt.
               QUERY([Translations];[Translations]LanguageCode=$Language;*)  `gewünschte Sprache
               QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)  `Tabellennummer
               QUERY([Translations]; & ;[Translations]FieldID=$vlField)  `Feldnummer
               If(Is field number valid($vlTable;$vlField))
                  If(Records in selection([Translations])=0)
                        ` Andernfalls erstelle den Datensatz
                     CREATE RECORD([Translations])
                     [Traductions]LanguageCode:=$Language
                     [Traductions]TableID:=$vlTable
                     [Traductions]FieldID:=$vlField
                        ` Der Name des übersetzten Feldes muss eingegeben werden
                     [Traductions]Translation:=Field name($vlTable;$vlField)+" in "+$Language
                     SAVE RECORD([Translations])
                  End if 
               Else
                  If(Records in selection([Translations])#0)
                        ` Existiert das Feld nicht mehr, entferne die Übersetzung
                     DELETE RECORD([Translations])
                  End if 
               End if 
            End for 
         Else
            If(Records in selection([Translations])#0)
                  `  Existiert die Tabelle nicht mehr, entferne die Übersetzung
               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

      `Tabellennamen aktualisieren
   ARRAY TEXT($asNames;0)  ` Initialisiere Arrays für SET TABLE TITLES und SET FIELD TITLES
   ARRAY INTEGER($aiNumbers;0)
   QUERY([Translations];[Translations]LanguageCode=$Language;*)
   QUERY([Translations]; & ;[Translations]FieldID=0)  `also Tabellennamen
   SELECTION TO ARRAY([Translations]Translation;$asNames;[Translations]TableID;$aiNumbers)
   SET TABLE TITLES($asNames;$aiNumbers)

      `Feldnamen aktualisieren
   $vlTableNum:=Get last table number   ` Erhalte Anzahl der Tabellen in Datenbank
   For($vlTable;1;$vlTableNum)   ` Durchlaufe jede Tabelle
      If(Is table number valid($vlTable))
         QUERY([Translations];[Translations]LanguageCode=$Language;*)
         QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)
         QUERY([Translations]; & ;[Translations]FieldID#0)  `vermeide 0, das als Tabellenname dient
         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 erneutes Kompilieren des Code hinzufügen können.

Referenz

Get last table number, SET FIELD TITLES, Table name.


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