ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v20 R7
WP SET DATA CONTEXT

WP SET DATA CONTEXT 


 

WP SET DATA CONTEXT ( wpDoc ; contextData ) 
引数   説明
wpDoc  オブジェクト in 4D Write Pro ドキュメント
contextData  オブジェクト in コンテキストに入れるデータ

説明   

WP SET DATA CONTEXT コマンドは、contextData 引数で指定したオブジェクトを、wpDoc 引数で指定した4D Write Pro ドキュメントのデータコンテキストとして設定します。新しいコンテキスト設定した場合には、ドキュメントの既存のコンテキストは全て上書きされます。

wpDoc 引数には、データコンテキストを受け取る4D Write Pro ドキュメントを渡します。

contextData 引数には、データコンテキストの中身を決定するオブジェクトを渡します。4D オブジェクトであればどんな物でも渡すことができます。これには4D.Entity などのORDA クラスに属するオブジェクトも含まれます。コンテキストをリセットするには、null オブジェクトを渡します。

4D Write Pro データコンテキストは揮発性のものです。つまり以下のようなことを意味します: 

  • ランタイムにおいて、4D Write Pro ドキュメント内からアクセス可能です。
  • 他の4D Write Pro プロパティとは異なり、4D Write Pro ドキュメン内には保存されません。

これにより、同じドキュメントを、異なるプロセスで、各プロセスごとに異なるコンテキストで使用することが可能です。

データコンテキストが設定されると、そのデータは4D Write Pro エリア内においてThis.data というフォーミュラを用いて利用可能になります。

注意: 表組のデータソースを使用している場合にはThis を通して追加のフォーミュラを利用することができます。詳細はThis を使用した式 を参照してください。

データコンテキストは、それが定義されたプロセス内においてのみ使用可能です:

  • 異なるプロセスからの計算されたフォーミュラ内でデータコンテキストを使用した場合、それはnull となり、This.data は未定義になります。
  • 他のプロセスにおいて同じドキュメントに対して定義されたデータコンテキストを設定した場合、エラーとなります。

異なるプロセスにおいて異なるデータコンテキストのフォーミュラを計算したい場合(例:同じテンプレートのドキュメントから異なる請求書を生成した場合など)、エラーを避けるためにそれぞれのプロセスにおいて WP New を使用してドキュメントを複製することが推奨されます。ドキュメントを複製してもデータコンテキストはコピーされないという点に注意してください。

4D Write Pro ドキュメントのコンテキストにオブジェクトを挿入し、その情報をページ上に表示させたい場合を考えます: 

 var $person;$info: Object
 
  // person オブジェクトを作成する
 $person:=New object()
 $person.firstName:="John"
 $person.lastName:="Doe"
 
  // person オブジェクトを使用してコンテキストを設定する
 WP SET DATA CONTEXT(WParea;$person)
 
  // "This" キーワードを使用してコンテキストデータにアクセスする
 $info:=Formula(This.data.firstName+" "+This.data.lastName)
 
  // ページ上にコンテキストデータを表示する
 WP INSERT FORMULA(WParea;$info;wk replace// ページ上に "John Doe" を表示する

 

上記のコードを実行した結果は以下のようになります:

テンプレートのドキュメントを使用している場合、それとコンテキストデータを組み合わせることでページにデータを流し込むことができます。これは例えばメールキャンペーンなどにおいて有用と言えます。

テンプレートがロードされてコンテキストが設定されれば、以下のようにテンプレートを活用することができます:

以下のコードは、エンティティセレクション内をループし、各エンティティに対して印刷プレビューを作成します:

 var $person: 4D.Entity
 var $people: 4D.EntitySelection
 
 SET PRINT PREVIEW(True)
 $people:=ds.People.all()
 For each($person;$people)
    WP SET DATA CONTEXT(WParea;$person)
    WP PRINT(WParea)
 End for each



参照 

Blog post - ORDA and 4D Write Pro : The power couple!
WP COMPUTE FORMULAS
WP Get data context

 
プロパティ 

プロダクト: 4D
テーマ: 4D Write Proランゲージ
番号: 1786

 
ページの目次 
 
履歴 

初出: 4D v19 R5

 
ARTICLE USAGE

4D Write Proリファレンス ( 4D v20 R7)