はじめに
”ほうがん” です。前回に引き続き、J.P.ホーガン氏の著書の紹介です。 今回は、彼のデビュー作「星を継ぐもの」です。そのはじまりは以下の如く、 月面で深紅の宇宙服をまとった死体が発見されました。綿密な調査の結果、驚くべき事実が判明する。死体はどの月面基地の所属でもなければ、ましてやこの世界の住人でもなかった。彼は五万年前に死亡していたのだ! 月面で5万年前に死亡していたこの宇宙服を着た死体は何者か?をめぐって物語が錯綜します。さて、結論は? 「星を継ぐもの」今まで読んだことが無かったという方、ぜひご一読ください。お勧めです。 この作品は彼のデビュー作であると同時に長らく続くシリーズの第1部で、今まで日本語訳が済んでいなかった第5部にして最終巻となる「ミネルヴァ計画(仮題)」がこの冬(2024年)に刊行されることがアナウンスされています。
チェックしたレコードのみを表示する
本題に戻りましょう。 前回、FileMaker で複数レコードに「チェック」を入れて選択したコードを作成するという手法を紹介いたしました。
今回はこのチェックした選択レコードのみを表示する機能を実現してみたいと思います。
複数同時利用が無い場合(前回のおさらい)
複数同時利用がないデータベースでしたら、 レコードに「チェックボックス」フィールドを置いて、そこにチェックを入れる事で選択レコードを作成できて、 以下のようなスクリプトを実行すれば選択した対象レコードのみ表示する事ができます。 検索モードに切り替え[ 一時停止:オフ] フィールド設定[チェック; 1 ] レコード/検索条件確定[ダイアログあり; オフ] 検索実行[]
複数同時利用を想定した場合(前回のおさらい)
複数同時利用されるデータベースでは、このレコードごとのチェックボックスを「チェック」した場合、複数の人が同時に選択した場合に個々の選択状態は保てません。同じテーブルのレコードをAという人とBという人が同時に「チェック」した場合、2人分の選択したレコードが対象となってしまいます。 このため、複数人が共有したデータベースで個々の選択状態が保ちつつ、レコードの「修正情報タイムスタンプ」が更新されるのも防ぐため、選択レコードされたレコードの情報を当該レコードに書きこまずに「グローバルフィールド」に保存する構造を前回とりました。
今回は、この選択されたレコードの情報を持つ「g_選択レコード」の値を使用して、チェックした対象レコードのみを表示するという動作を実現します。
「g_選択レコード」と「シリアルID」の自己リーレーション作成
前回のファイル「選択レコード」を使って、この機能を作成していきます。 「選択レコード」ファイルを開いて、現状のリレーションシップを確認します。
同じテーブルを複製し「g_選択レコード」と「シリアルID」で連結した自己リレーションシップを作成します。
リレーションシップの準備はこれで終了です。「OK」ボタンを押して、次に対象レコードを表示するスクリプトを作成します。
「選択レコード表示」スクリプトの作成
「選択レコード表示」スクリプトに1ステップを作成します。 関連レコードへ移動 [関連レコードのみ表示; テーブル ; 「住所録_自己」;使用するレイアウト;<現在のレイアウト>]
これでスクリプトは完成です。
ボタン 「選択レコードのみ表示」を作成
レイアウト画面に戻り、「選択レコードのみ表示」ボタンを作成し、先に作成した「対象レコード表示」スクリプトを割り当てます。
ブラウズモードに戻り、ボタンの動作を確認してみます。
これで完成です。ブラウズモードでボタンを押して動作を確認してみます。 「選択レコードのみ表示」のボタンを押すと、チェックを入れたレコードのみが表示されました。
たった1ステップのスクリプトで「対象レコードのみ表示」する機能が実現できました。 関連レコードへ移動スクリプトを使うと、
検索モードに切り替え フィールド設定[] レコード/検索条件の確定 検索実行[]
などの検索スクリプトステップ群を利用することなく対象レコードの一覧を表示する事が出来ます。 覚えておいて損はない手法ですのでぜひご活用ください。 今回作成したファイルを置いておきますので、参考にしていただければ幸いです。