4D v15.4

EXECUTE FORMULA

  •  
 
4D v15.4
EXECUTE FORMULA

EXECUTE FORMULA 


 

EXECUTE FORMULA ( statement ) 
引数   説明
statement  文字 in 実行するコード

説明   

EXECUTE FORMULAstatementをコードとして実行します。ステートメントの文字列は必ず1 行だけです。statementに空の文字列を指定した場合、EXECUTE FORMULAコマンドは何も行いません。

statementが一行のメソッドとして実行されるかぎり、それは正しく実行される、というのが大原則です。EXECUTE FORMULA は実行速度を低下させるので、代替え手段として利用します。コンパイル済みデータベースにおいても、そのコードはコンパイルされていません。つまりstatementは実行されますが、コンパイル時にコンパイラによるチェックはされません。

statementには以下をの要素を含めることができます:

  • プロジェクトメソッドの呼び出し
  • 4D コマンドの呼び出し
  • 代入

フォーミュラにはプロセス変数とインタープロセス変数を含めることができます。しかしstatementは1行でなければならないため、(If, While, などの) フローコントロールを含めることはできません。

使用する4Dの言語やバージョンやに関わらず、statement が正常に評価されると言う事を保証するためには、異なるバージョン間において名前が変化する可能性のある要素(コマンド、テーブル、フィールド、定数)に対してはトークンシンタックスを使用する事が推奨されます。例えば、[#cmd id="178"/]コマンドを挿入するためには'Current time:C178'と入力します。この点についてのより詳細な情報については、フォーミュラ内でのトークンの使用を参照して下さい。

リストボックスに動的なカラムを追加して型を指定したい場合を考えます:

  //カラムを追加
 C_POINTER($Ptr_nil)
 $Txt_column:="column"
 $Txt_header:="header"
 LISTBOX INSERT COLUMN(*;"listbox";MAXLONG;$Txt_column;$Ptr_nil;$Txt_header;$Ptr_nil)
 
  //カラムの型を設定、ここではARRAY OBJECTを使用
  //ARRAY OBJECT((OBJECT Get pointer(Object named;$Txt_column))->;0)
 EXECUTE FORMULA("ARRAY OBJECT:C1221((OBJECT Get pointer:C1124(3;\""+$Txt_column+"\"))->;0)")

4Dコマンドとテーブルへの呼び出しを含むフォーミュラを実行したい場合を考えます。これらの要素は改名されている可能性があるため、以下のようにトークンシンタックスを使用する事によって、アプリケーションの将来のバージョンにおいても正常な実行を保証する事ができます:

 EXECUTE FORMULA("Year of:C25 ([Products:5]Creation_Date:2])+$add")



参照 

Command name
EDIT FORMULA
EXECUTE METHOD
フォーミュラ内でのトークンの使用