ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
SET TABLE TITLES
|
SET TABLE TITLES {( tableTitles ; tableNumbers {; *})} | ||||||||
引数 | 型 | 説明 | ||||||
tableTitles | 文字配列 |
![]() |
ダイアログボックスに表示されるテーブル名 | |||||
tableNumbers | 倍長整数配列 |
![]() |
実際のテーブル番号 | |||||
* | 演算子 |
![]() |
フォーミュラエディタでカスタム名を使用 | |||||
SET TABLE TITLESコマンドを使用すれば、アプリケーションモードにおいて、標準の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フォーミュラで使用するかを指定します。デフォルトではこの引数が省略された場合、4D で実行されたフォーミュラはこのカスタムの名前を使用することができないため、実際のテーブルの名前を使用する必要があります。この引数は、ユーザーに提供される情報を管理し、フォーミュラや式が使用されている場面でのインターフェースに必ず統一性をもたせたい場合に渡します。例えば:
注: * 引数が渡された場合、4D によって実行されるフォーミュラの内部においてはこのコマンドによって定義される名前が使用されます。この場合には次の点に注意が必要です。カスタムの名前には4D ランゲージインタープリタで"禁止されている"文字( -?*%! 等)を含めることはできません。例えば、"Rate_in_%" という名前はフォーミュラでは使用することはできません(詳細な情報については、識別子 の章を参照してください)。
SET TABLE TITLES は、データベースの実際のストラクチャーは変更しません。このコマンドは、ランゲージコマンド経由で呼び出された標準の4D エディターとフォームがダイナミックな名前を使用している場合に、コマンドを呼び出した後の使用に影響することを念頭に設計されています。SET TABLE TITLESコマンドの有効範囲は、そのワークセッションです。クライアント/サーバにおける利点の1つは、複数の4Dクライアントステーションがそれぞれ異なる見方でデータベースを同時に "見る" ことができる点です。SET TABLE TITLES コマンドは、何度でも呼び出せます。
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
定義されたカスタムのフィールド名およびテーブル名を全て削除したい場合を考えます:
SET TABLE TITLES //全てのカスタムの名前を削除する
Get last table number
GET TABLE TITLES
Parse formula
SET FIELD TITLES
Table name
プロダクト: 4D
テーマ: ユーザーインターフェース
番号:
601
変更: 4D v11 SQL
ランゲージリファレンス ( 4D v20 R7)