統合
シードコードカレンダーを既存のファイルに追加する:早わかり解説
多くの方が、シードコードカレンダーを自分のファイルにペーストし、既存のイベントのテーブルにあるイベントをカレンダーに表示したいとお考えのことでしょう。このページは、そんな方々のための解説です。シードコードカレンダーの「SampleEvents」テーブルを自分のイベントのテーブルとして使いたいのであれば、ステップ2の解説に従ってこのテーブルを自分のファイルにインポートし、ステップ5に進んでください。
1. ファイルをバックアップする
バックアップは忘れないでください。
また、重要なことがあります。統合を始める前に、既存のファイルにいくつか変更が必要な場合がありますので確認してください。
2. フィールド
2.1 シードコードカレンダーの「SampleEvents」テーブルから、以下の2つのフィールドを自分のイベントのテーブルに追加してください。
- z_sc_TimestampEndCalc
- z_sc_TimestampStartCalc
FileMaker Pro Advancedでフィールドをベーストした場合は、この2つのフィールドの計算式を編集して、「/」で始まり「/」で終わるコメントのタグを削除します(つまり、計算式の始めと終わりから「/*」と「*/」を取り除きます)。それから、計算式中の「DateStart」や「TimeStart」などのフィールドを、あなたのイベントのテーブルにある該当するフィールドに置き換えます。どちらのフィールドも、計算結果を「タイムスタンプ」にします。
索引設定は、計算フィールドのデフォルト状態のままです(索引設定;なし、必要時に索引を自動設定にチェックあり)。
2.2 次に、自分のイベントのテーブルに「TimeStart」フィールドに、オプションの「入力値の自動化」で以下の計算値を追加してください。
If ( Self = Time ( 24 ; 0 ; 0 ) ; Time ( 24 ; 0 ; 1 ) ; Self )
「フィールドに既存の値が存在する場合は置き換えない」のチェックボックスには、チェックを付けません。イベントを深夜0時にスタートさせることができるようにしたい場合、この入力値の自動化のオプションが必要です。
3. テーブル
シードコードカレンダーから既存のファイルに、「CalendarRows」と「CalendarInterface」の2つのテーブルをインポートします。なぜFileMaker Pro Advancedが必要なのだろうと思ったことはありませんか。これがその答えです。
ただし、手作業でテーブルを作ることもできます。手作業で作る場合は、まず通常のフィールドを作り、次に計算フィールドを作ります。「CalendarInterface」から作り始めて、それから「CalendarRow」を追加します(データを分割している場合、これらのテーブルはインターフェイスのファイルに追加してください)。
4. 値一覧
シードコードカレンダーを開き、既存のファイルに「Yes No」の値一覧を再作成します。
5. テーブルオカレンス
自分のイベントのテーブル(カレンダーに表示させたいレコードが保存されているテーブル)に新規のテーブルオカレンスを1つ追加し、「SampleEvents」という名前にします(テーブルオカレンスの名前の途中にはスペースを入れないでください)。この名前は、後で変更できます。
6. リレーションシップ
リレーションシップグラフで、「SeedCode Calendar」と同様に「CalendarRows」と「CalendarInterface」をリンクします。テーブルオカレンスの名前がサンプルファイルと同じになっていることを、ここで念のため再度確認してください。
この時点で、もともとある「イベントリスト」や「イベント詳細」レイアウトと同じようにリスト表示でイベントの色を表示させたい場合には、「z_ColorCalc」フィールドをサンプルイベントからコピーして、自分のイベントのテーブルに追加します。計算式の最初と最後から「/*」と「*/」を削除します。そして「ステータス」として使われているフィールドを、自分のイベントのファイルのこれに相当するフィールドに置き換えます。このフィールドが、カレンダーのイベントの色分けに使用されています。
7. レイアウト(その1)
既存のファイルに空白レイアウトをいくつか作ります(この後のステップで、この空白レイアウトにコンテンツをペーストします)。シードコードカレンダーのレイアウト1つに対して、既存のファイルに1つレイアウトを作ります(ユーザに対して表示されるレイアウトはいくつかに限られますが、すべてのレイアウトが必要です)。レイアウトは「CalendarRows」、「CalendarInterface」、「SampleEvents」のいずれかに基づくものです。レイアウトができたら先に進みます。作成したレイアウトが、シードコードカレンダーのレイアウトと完全に同じ名前であることを確認します。また、すべてのレイアウトから、ヘッダとフッタを削除します。
シードコードカレンダーと同じように区切り線のレイアウト(「Calendar Interface」に基づくレイアウト)を作るとよいかもしれませんが、これはあくまでも見た目と使い勝手だけの問題です。
ステップ3でテーブルをインポートした際に作られたデフォルトのレイアウトは、削除します。
イベントのリストやイベントの詳細に使用したいレイアウトがこの段階ですでに作られているかもしれません。その場合は、「自分で作ったイベントのレイアウト」を参照してください。
8. スクリプト
シードコードカレンダーからスクリプトをインポートします。インポートするには、「シードコードカレンダー」フォルダの先頭にあるチェックボックスをクリックしてチェックを付けるだけです。これで、フォルダの中にあるスクリプトがすべてインポートされます。インポートの際にエラーのレポートがたくさん表示されますが、これは正常です。後述の「セットアップ」で、スクリプト中に使用されているフィールドや設定を、既存のファイルの中の値に指定し直します。
9. レイアウト(その2)
シードコードカレンダーの各レイアウトから、レイアウトのコンテンツをコピーし、既存のファイルの同名のレイアウトにペーストします。そしてもちろん、レイアウト上に「Calendar Records」のコンテンツが必要です。「Developer」のコンテンツはオプションです。レイアウトを大きくする必要があるとメッセージが表示されるかもしれませんが、大きくしてかまいません。
イベントの詳細は、フィールドやボタンを追加するなど、使いやすいように自由に編集します。画面下部の「閉じてカレンダーに反映」の大きなボタンは、そのまま残しておいてください。
10. レイアウトのスクリプトトリガ
スクリプトトリガを割り当てます。レイアウトに対するスクリプトトリガはレイアウトの要素をコピー&ペーストする際には移行されないため、設定し直す必要があります。設定が必要なのは2つだけですので、ご安心ください。
レイアウト:「Calendar」(トリガ1件)
イベント:OnRecordLoad
スクリプト:「Load Calendar Layout」
以下で有効:ブラウズと検索
(これを、4つのカレンダーレイアウトのそれぞれに対して設定します)
レイアウト:「Event Details」(トリガ1件)
イベント:OnRecordLoad
スクリプト:「On Event Record Load」
以下で有効:ブラウズ
設定が完了したら「Calendar Home」レイアウトに戻り、ブラウズモードに切り替えます。
11. セットアップ
11.1 カレンダーの設定。
「Load Calendar Settings - On Startup...」スクリプトの編集ウインドウを開き、コメントに従って必要に応じて値を変更します。
11.2 レコードのソート。
「"Sort FileMaker Records...」スクリプトの編集ウインドウを開き、指示に従って、ソートのステップを自分のイベントのテーブルにあるフィールドを使うように編集して、レコードが日付/時刻の昇順でソートされるようにします。
11.3 データの割り当て。
「Source No 1」レイアウトに切り替え、レイアウト上の指示に従ってフィールドをあなたの「SampleEvents」テーブルのフィールドに割り当てます。「Summary」は、ここではあなたのイベントのタイトルなどのシンプルなフィールドに割り当てます。
12. クリーンアップ
「SampleEvents」のテーブルオカレンスを、分かりやすい名前に変更します。ファイルを開くときに実行するスクリプトとして「Upon Opening」スクリプトを指定し、ファイルを開くときに実行するレイアウトを好みに応じて削除します。
13. スクリプトの実行
これで完了です。「Upon Opening」スクリプトを実行すると、イベントが「日」表示で表示されます。
ご活用ください!