SET TABLE TITLES

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

Version 2004.2 (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 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.

Anwendung des Befehls

Virtual Structure 1


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