4D v16.3SET TABLE TITLES |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
SET TABLE TITLES
|
SET TABLE TITLES ( tableTitles ; tableNumbers {; *} ) | ||||||||
引数 | 型 | 説明 | ||||||
tableTitles | 文字配列 |
![]() |
ダイアログボックスに表示されるテーブル名 | |||||
tableNumbers | 倍長整数配列 |
![]() |
実際のテーブル番号 | |||||
* |
![]() |
フォーミュラエディタでカスタム名を使用 | ||||||
SET TABLE TITLESコマンドを使用すれば、アプリケーションモードにおいて、標準の4Dダイアログボックスに現れるデータベーステーブルを一部隠したり、表示名称を変更したり、並び順を変えたりできます (ただしこれらのダイアログが4Dランゲージコマンドから呼び出された場合)。例えばこのコマンドを使用すれば、アプリケーションモードでのクエリエディターのテーブル表示を変更できます。
さらにこのコマンドを使用すると、動作中にフォーム上のテーブル名のラベルを変更することが可能です。これには、ダイナミックな名前を使用します。ダイナミックなテーブル名とフィールド名の挿入についての詳細は、4Dデザインリファレンスマニュアルのスタティックテキスト中で参照を使用するを参照してください。
引数 tableTitles と tableNumbers 配列は同期させる必要があります。配列 tableTitles には、表示させたいテーブルの名前を渡します。
ある特定のテーブルを表示したくない場合には、そのテーブル名または新しく付けたタイトルを、配列含めないようにします。テーブルはこの配列に指定した順序で表示されます。
配列 tableNumbers の各要素には、配列 tableTitles にある同じ要素の数値に渡したテーブル名または新しいタイトルに対応する実際のテーブル番号を渡します。
例えば、テーブルA、B、Cで構成されるデータベースがあり、テーブルはこの順序で作成されたとします。表示の際には、これらのテーブルをX、Y、Zという名前にし、さらにテーブルBは表示したくないとします。最終的に、ZとXを、この順序で表示することにします。この場合、配列 tableTitles の2つの要素としてZとXを渡し、配列 tableNumbers の2つの要素として3と1を渡します。
オプションの * 引数は、カスタマイズした名前を4Dフォーミュラで使用するかを指定します。
Note: フォーミュラエディタレベルでは、* 引数を省略してコマンドを呼び出しても、以前に * 引数付きでコマンドを呼び出したときの設定を変更しません。言い換えれば、フォーミュラエディタは常に、最後に * 引数付きで呼び出された設定が有効となります。
SET TABLE TITLES コマンドは、データベースの実際のストラクチャを変更するわけではありません。ランゲージコマンド経由で標準の4Dダイアログボックスやダイナミックな名前を使用しているフォームを呼び出したときのみ影響します (デザインモードにおいて、エディタまたはフォームがメニューコマンドから呼び出された際、データベースの実際のストラクチャが表示されます) 。 SET TABLE TITLESコマンドの有効範囲は、そのワークセッションです。クライアント/サーバにおける利点の1つは、複数の4Dクライアントステーションがそれぞれ異なる見方でデータベースを同時に "見る" ことができる点です。SET TABLE TITLES コマンドは、何度でも呼び出せます。
SET TABLE TITLESコマンドは、以下のような場合に使用します。
注:
各国で販売する予定の4Dアプリケーションを構築しているとします。この場合、ローカライズの問題を慎重に考慮する必要があります。アプリケーションモードで表示される標準の4Dダイアログボックスとダイナミックな名前を用いたフォームに注意すれば、[Translations] テーブルといくつかのプロジェクトメソッドを使用して、必要なだけ各国向けにローカライズされたフィールドを作成し、使用することによって、ローカライズのニーズに対応できます。
データベースに以下のテーブルを追加します。
` TRANSLATE TABLES AND FIELDS プロジェクトメソッド
` TRANSLATE TABLES AND FIELDS (Text)
` TRANSLATE TABLES AND FIELDS (LanguageCode)
C_TEXT($1) `ランゲージコード
C_LONGINT($vlTable;$vlField)
C_TEXT($Language)
$Language:=$1
For($vlTable;1;Get last table number) `各テーブルを渡す
If($vlTable#((->[Translations]))) `翻訳テーブルを翻訳しない
`特定ランゲージ用のテーブル名の翻訳があるかどうかをチェックする
QUERY([Translations];[Translations]LanguageCode=$Language;*) `目的のランゲージ
QUERY([Translations]; & ;[Translations]TableID=$vlTable;*) `テーブル番号
QUERY([Translations]; & ;[Translations]FieldID=0) `フィールド番号 = 0はテーブル名
If(Is table number valid($vlTable)) `テーブルがまだ存在しているかチェックする
If(Records in selection([Translations])=0)
`なければ、レコードを作成
CREATE RECORD([Translations])
[Translations]LanguageCode:=$Language
[Translations]TableID:=$vlTable
[Translations]FieldID:=0
`翻訳されたテーブル名を入力する必要がある
[Translations]Translation:=Table name($vlTable)+" in "+$Language
SAVE RECORD([Translations])
End if
For($vlField;1;Get last field number($vlTable))
`特定ランゲージ用のフィールド名の翻訳があるかどうかをチェックする
QUERY([Translations];[Translations]LanguageCode=$Language;*) `目的のランゲージ
QUERY([Translations]; & ;[Translations]TableID=$vlTable;*) `テーブル番号
QUERY([Translations]; & ;[Translations]FieldID=$vlField) `フィールド番号
If(Is field number valid($vlTable;$vlField))
If(Records in selection([Translations])=0)
`なければ、レコードを作成
CREATE RECORD([Translations])
[Translations]LanguageCode:=$Language
[Translations]TableID:=$vlTable
[Translations]FieldID:=$vlField
`翻訳されたフィールド名を入力する必要がある
[Translations]Translation:=Field name($vlTable;$vlField)+" in "+$Language
SAVE RECORD([Translations])
End if
Else
If(Records in selection([Translations])#0)
`フィールドがもはや存在しない場合、翻訳を削除する
DELETE RECORD([Translations])
End if
End if
End for
Else
If(Records in selection([Translations])#0)
`テーブルがもはや存在しない場合、翻訳を削除する
DELETE RECORD([Translations])
End if
End if
End if
End for
TRANSLATE TABLES AND FIELDS("Spanish")
LOCALIZED TABLES AND FIELDS("Spanish")
` LOCALIZED TABLES AND FIELDS global method
` LOCALIZED TABLES AND FIELDS (Text)
` LOCALIZED TABLES AND FIELDS (LanguageCode)
C_TEXT($1) `ランゲージコード
C_LONGINT($vlTable;$vlField)
C_TEXT($Language)
C_LONGINT($vlTableNum;$vlFieldNum)
$Language:=$1
`テーブル名を更新する
ARRAY TEXT($asNames;0) `SET TABLE TITLES と SET FIELD TITLESを初期化する
ARRAY INTEGER($aiNumbers;0)
QUERY([Translations];[Translations]LanguageCode=$Language;*)
QUERY([Translations]; & ;[Translations]FieldID=0) `テーブル名
SELECTION TO ARRAY([Translations]Translation;$asNames;[Translations]TableID;$aiNumbers)
SET TABLE TITLES($asNames;$aiNumbers)
`フィールド名を更新する
$vlTableNum:=Get last table number `データベース上のテーブルの数を数える
For($vlTable;1;$vlTableNum) `テーブルを渡す
If(Is table number valid($vlTable))
QUERY([Translations];[Translations]LanguageCode=$Language;*)
QUERY([Translations]; & ;[Translations]TableID=$vlTable;*)
QUERY([Translations]; & ;[Translations]FieldID#0) `テーブル名として機能するゼロを避ける
SELECTION TO ARRAY([Translations]Translation;$asNames;[Translations]FieldID;$aiNumbers)
SET FIELD TITLES(Table($vlTable)->;$asNames;$aiNumbers)
End if
End for
Get last table number
GET TABLE TITLES
SET FIELD TITLES
Table name
プロダクト: 4D
テーマ: ユーザーインターフェース
番号:
601
変更: 4D v11 SQL
ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)