第356夜:ファイルメーカーProのスクリプト2

第354夜に引き続き、ファイルメーカーProのスクリプトネタです。ネット上には、ファイルメーカーProの達人たちが書いた、すばらしいスクリプトが数多くあります。またリファレンス本もたくさん出ています。しかし、自分が今、欲しいスクリプトって、なかなか見つかりません。結局、試行錯誤で、作るしかないことが多いです。自分で作っておいて言うのも何ですが、もっとエレガントな方法がきっとあるはずです。でも、見つからないし、思いつかないので、結局、あか抜けないものを作ってしまいます。

今日紹介するスクリプトの目的は次のとおりです。

「2つのフィールドの値が一致するレコードを抽出する。」→ たったこれだけです。

1つのフィールドの値が一致するレコードを抽出する方法は簡単です。「あるフィールドの値をコピー→検索モードに切り替え→同じフィールドにコピーされた値を貼り付け→検索実行」です。

しかし、2つのフィールドの値が一致するレコード抽出になると、とたんに難しくなりました。

右のように、患者さんのID番号と入院日のフィールドがあります。同じ患者さんが複数回入院することがあるので、同じID番号のレコードが複数個存在することがあります。しかし、ID番号と入院日 の両方が一致するレコードは1つしかないはずです。ID番号と入院日の両方が一致するレコードだけを抽出し、レイアウトを整えて、そのレコードの退院サマリーを印刷するのが目的でした。

結局、ID番号と入院日の値を結合するフィールドを新しく、追加し、そのフィールドの値が一致するレコードを抽出させることにしました。

ここで問題になったのは、ID番号がテキストデータ、入院日が日付データのため、単純には結合できなかったことです。

そこで、最初に、日付データをテキストデータに変換するフィールド(名前を、「入院日テキスト」としました。)を作成し、その後、フィールド「ID番号」とフィールド「入院日テキスト」の値を結合するフィールド(名前を、「IDと入院日」としました。)を作りました。

フィールド「入院日テキスト」に入れる計算式: =GetAsText(入院日)
(フィールドタイプは「計算」、オプションで、計算結果を「テキスト」としておく。)

フィールド「IDと入院日」に入れる計算式: =GetField("ID番号")&" "&GetField("入院日テキスト")
(フィールドタイプは「計算」、オプションで、計算結果を「テキスト」としておく。)

後は、フィールド「IDと入院日」の値が一致するレコードを抽出すれば、1つのレコードのみ取り出せます。

解説:
きっと、もっと良い解決法があると思いますが、思いつかないので、仕方がありません。
なお、フォントやフィールドの色などを、背景と同じにして、見えなくしてしまうことで、見かけ上、レイアウトの変更がないようにもできます。


ホームへ戻る INDEXへ戻る 1つ戻る 1つ進む