複数のソース

複数のテーブルから同一のカレンダーにレコードを表示するには、どのようにしますか?

概要

基本的に、ポータルには1つのテーブルオカレンスからのレコードのみを表示できます。ただし、ポータルのベースとなっているテーブルオカレンスに関連づけられている別のテーブルオカレンスから、フィールドをポータルに含めることはできます。

しかしこのカレンダーでは、まったく関連のないテーブルのイベントを含めることができます。カレンダーの「データソース」にあるイベントということです。そのため、電話、ミーティングなどの予定を保存しているイベントのテーブルのソースは、1つかもしれません。そして、カレンダーに仕事の期限を表示するテーブルを2番目のソースとして使う場合もあります。

カレンダーにはサンプルとして2つめのソース、「To-Do List」が設定されていて、複数のソースの動作を確認できます。この2つめのソースは、カレンダーの左方のサイドバーで「ソース」タブを開いてオン/オフを切り替えることができます。

同一のテーブルから複数のソースを設定することもできます。たとえば、仕事のテーブルに期限を保存し、電話をかける日付も仕事のテーブルに保存してあるとしたら、これらを2つの別々のソースにすることもできます。

複数のソースがあると、描画するレコードが多くなるためにカレンダーの処理速度に影響を及ぼすことがあることに注意してください。ただしこのFM12のカレンダーは、以前のバージョンに比べて複数のソースの描画がずっと速くなっています。

FileMakerの2番目のソースを作成する

カレンダーの各ソースは、レイアウトによって表されています。カレンダーのサンプルファイルのレイアウトのうちのいくつかを見ると、そのことが分かります。「Source No 1」、「Source No 2」という名前のレイアウトがそれです。新たに作成するソースには、このような名前のレイアウトが必要です。

新たにFileMakerのソースを作成する方法は、以下の通りです。

1.

「Source No 1」レイアウトを複製して、レイアウト名を「Source No 3」(または既存のレイアウトに続く連番の次の番号)と変更します。

2.

レイアウトモードで作業をしていきます。「レイアウト設定」ダイアログで、新たに作ったレイアウトが使用するテーブルを、表示したいレコードのテーブルに変更します。ここでは例として、「Orders」という名前のテーブルと仮定します。

もともとある「イベント」テーブルを「Orders」テーブルの子どもにすると、注文に対して複数のイベントを表示できることに注意してください。1つの注文に対して1つの事項だけをカレンダーに表示するのであれば(たとえば期限など)、「Orders」自体を1つのソースにするのが最適です。

3.

レイアウトモードで作業を続けます。設定の各タブで、詳細を入力したりソースのフィールドを割り当てたりします。設定できたらブラウズモードに切り替え、各タブでエラーが発生しないか確認します。最初にカレンダーの組み込みをする際に、イベントのテーブルにどのようにフィールドを追加したかを覚えていますか? 必要なフィールドをすべて揃えるために、このテーブル(ここでは「Orders」)に同じフィールドを追加する必要があります。必要なフィールドは以下の通りです。

  • zscEventSummaryCalc
  • zscTimestampEndCalcNum
  • zscTimestampStartCalcNum

また、「TimeStart」フィールドに、以下のように計算値が自動入力されるようにしておくとよいでしょう(開始時刻のフィールドがない場合には、作成してください)。「TimeEnd」も同様です。フィールドを作成し、次の自動入力の計算式を使用します。

Case ( 
Self = Time ( 24 ; 0 ; 0 ) ; Time ( 24 ; 0 ; 1 ) ; 
Self = Time ( 0 ; 0 ; 0 ) ; Time ( 0 ; 0 ; 1 ) ; 
Self > Time ( 24 ; 0 ; 0 ) ; Self - Time ( 24 ; 0 ; 0 ) + 1 ; 
Self )

「フィールドに既存の値が存在する場合は置き換えない」のチェックボックスにはチェックを付けないでください。イベントを深夜0時に開始または終了できるようにしたい場合には、この値の自動入力のオプションが必要です。

「イベントリスト」や「イベント詳細」レイアウトのようにリスト表示でイベントの色を使用したい場合には、サンプルイベントから「z_ColorCalc」フィールドをコピーして自分の「Orders」テーブルに追加し、もともとある「status」フィールドに相当するフィールドとして割り当てます。これが、カレンダー内の色分けに使用しているフィールドです。このカレンダーでは、ステータスとリソースのリストは、すべてのソースで同一のものを共有していることに注意してください。

4.

このソースの「イベント詳細」レイアウトを作成します。これは、カレンダーでイベントをクリックした際の表示に使用する、小さいウインドウのレイアウトです。イベントをクリックしたときに既存のレイアウト(注文のレイアウトなど)にジャンプさせたい場合でも、小さいサイズの詳細レイアウトを作成することを推奨します。小さいウインドウが開くようにしておくと、ユーザはカレンダーから移動することなくすぐにイベントを見て、見終わったらウインドウを閉じることができるので便利です。このレイアウトにボタンを追加して、さらに情報が必要な場合にはメインのレイアウトにジャンプできるようにします。「イベントにジャンプする」を参照してください。

5.

「Load Calendar Settings - On Startup ....」スクリプトの編集ウインドウを開いて、「Which sources are active by default(デフォルトでアクティブなソースはどれか)」のコメントを見つけます。起動時に自分のソースをカレンダーに表示させたい場合は、このコメントの後にある「List ()」関数にソースの番号を追加します。この設定をしない場合、「ソース」タブで使用可能なソースとして表示されますが、そのソースのイベントはユーザがソースをクリックして使用するまではカレンダーに表示されません。

 6.

「Load Source Settings at Startup ....」スクリプトを編集します。このスクリプトには、ソースごとに十数行がまとまったブロックがあります。既存のブロックをスクリプトにコピー&ペーストして、新しいソースのためのブロックを作ります。すでに作られているように、ソースのレイアウト名をテストするところからブロックが開始するようにしてください。すなわち、「Source No 3」をテストします。その後、ブロック内の各行を編集します。スクリプト中のコメントを参考にしてください。

これで完了です。

ソースの制限

ガントチャートは1番目のソースからのみレコードを表示できます。ほかの表示とは異なり、複数のソースから同時にレコードを表示することはできません。