ひとつの検索フィールドに入力された値を元に複数のフィールドを検索して、該当するレコードを列挙したくなりました。
Webの情報を参考に作ってみましたが、素人なので不明な語句が多く、文章から判断するのは苦労しました。(/_;)
正しい方法かどうか分かりませんが、とりあえず出来ているので良しとします。
全てのフィールドをマクロに記述すれば、全フィールドに対して検索することができますが、その場合は別のスマートな方法がある気がします。
【追記 2011.06.28】
使用したFileMakerの標準が前方一致なので、全ての部分一致で検索したい場合は、検索項目に「*検索語」のようにアスタリスクを検索語の前に付ける必要がある。
又は、スクリプトで強制的にアスタリスクを付けるようにする。
私の場合は検索漏れがあると困るので「*検索語*」と、前後にアスタリスクを付けて検索している。
環境
- Windows XP Professional SP3
- FileMaker Pro 8.5v2
サンプル
- search.zip(エラー処理なし)
- search1.zip(エラー処理あり)
手順
0. 新規データベースを作ってデータを入力する
1. 検索用レイアウトを作る
「レイアウト」→「新規レイアウト/レポート」。
後から配置するので、レイアウトに配置するフィールドは何も指定しなくて良い。
2. 検索用フィールドをグローバルで1個作成して検索用レイアウトに配置する
「ファイル」→「定義」→「データベース」。
3. 検索実行ボタンを検索用レイアウトに1個配置する
4. 検索用のマクロを作成する
4つのフィールドを同時に検索する場合は以下の通り。
検索するフィールドを増やす場合は、「新規レコード/検索条件」と「フィールド設定」を繰り返します。
4-1. 「フィールド設定」について
- 「ターゲットフィールドの指定」に検索対象のフィールドを指定する。
- 「計算結果」に検索用フィールド(グローバル)を指定する。
マクロの内容
検索結果がゼロの場合、検索モードの状態で美しくないので、元のレイアウトに戻るようにしています。
エラー処理[オン] レイアウト切り替え[「data」] 検索モードに切り替え[] フィールド指定[table::name; table::search] 新規レコード/検索条件 フィールド指定[table::sub name; table::search] 新規レコード/検索条件 フィールド指定[table::address; table::search] 新規レコード/検索条件 フィールド指定[table::status; table::search] 検索実行[] if [Get ( 最終エラー ) = 401] レイアウト切り替え[「search」] End If エラー処理[オフ]
created by Rinker
¥3,080
(2024/11/11 17:15:37時点 楽天市場調べ-詳細)
Comments