4D v16.3

SET TABLE TITLES

Home

 
4D v16.3
SET TABLE TITLES

SET TABLE TITLES 


 

SET TABLE TITLES ( TabellenTitel ; TabellenNr {; *} ) 
Parameter Typ   Beschreibung
TabellenTitel  Array String in Tabellennamen, wie sie im Dialog erscheinen sollen
TabellenNr  Array Lange Ganzzahl in Aktuelle Tabellennummern
in Verwende die eigenen Namen im Formeleditor

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.
  ` 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 existiert
          If(Records in selection([Translations])=0) ` Andernfalls lege den Datensatz an.
             CREATE RECORD([Translations])
             [Translations]LanguageCode:=$Language
             [Translations]TableID:=$vlTable
             [Translations]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 lege den Datensatz an.
                   CREATE RECORD([Translations])
                   [Translations]LanguageCode:=$Language
                   [Translations]TableID:=$vlTable
                   [Translations]FieldID:=$vlField  `Der Name des übersetzten Feldes muss eingegeben werden.
                   [Translations]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
 
  `Aktualisiere Tabellennamen
 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)
 
  `Aktualisiere Feldnamen
 $vlTableNum:=Get last table number `Erhalte Anzahl der Tabellen in der 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 Null, da es 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 Rekompilieren des Code hinzufügen können.



Siehe auch 

Get last table number
GET TABLE TITLES
SET FIELD TITLES
Table name

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Benutzeroberfläche
Nummer: 601

 
GESCHICHTE 

Geändert: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)