3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FileMakerでポータルの件数を表示する(フィルターあり)

Last updated at Posted at 2018-06-11

#FileMakerで「ポータルレコードのフィルタ」が設定されたポータルの件数を表示する

FileMakerでポータルの件数を確認する方法を紹介します。また、単に件数を表示する他に、検索機能の追加も行ってみます。

今回は、FileMaker Pro 17 Advancedを用いています。
(https://www.filemaker.com/jp/products/filemaker-pro-advanced/17-technical-specifications.html)

##テーブルとレイアウト
まず、テーブルとレイアウトを用意します。
テーブル名とレイアウト名は、「test004」
さらに、ポータルで表示対象となるデータ用のテーブルとレイアウトを用意します。テーブル名とレイアウト名は「list」

##フィールド
テーブル「test004」に、次のフィールドを用意します。
001.png

FMP17Ad標準で、「主キー」、「作成情報タイムスタンプ」、「作成者」、「修正情報タイムスタンプ」、「修正者」というフィールドが用意される様になっています。
これは、このままにしたいと思います。
このテーブルは、ポータルを配置するので、検索入力用のフィールドのみ必要です。
下記フィールドを作成してください。
フィールド名「_g_name」タイプ「テキスト」オプション「グローバル」
レコードは1つで大丈夫です。

FMP17より前のバージョンの場合、主キーは、後ほど利用しますので、設定して頂きたいと思います。値は、「UUID」でも「1」等の数値でも大丈夫です。

##フィールド2
テーブル「list」に、次のフィールドを用意します。
002.png

FMP17Ad標準で、「主キー」、「作成情報タイムスタンプ」、「作成者」、「修正情報タイムスタンプ」、「修正者」というフィールドが用意される様になっています。
このテーブルは、ポータルで表示される対象となります。下記フィールドを作成してください。
フィールド名「name」タイプ「テキスト」
次に、集計用のフィールド
フィールド名「_s_集計」、タイプ「集計」、カウント、主キー
最後に、リレーション用に外部キーのフィールド
フィールド名「外部キー」、タイプ「テキスト」

##リレーションの設定
ポータルにフィルターを設定するので、別テーブルの内容をポータルに表示する為のリレーションを設定します。
003.png

テーブルオカレンス「test004」の「主キー」とテーブルオカレンス「list」の外部キーにリレーション「=」を設定します。

##データの用意
先のリレーションの設定から分かる通り、テーブル「test004」の「主キー」を確認する必要があります。
確認したテーブル「test004」の「主キー」を、これからデータを作成するテーブル「list」の「外部キー」に利用します。

では、テーブル「list」にデータを作成して行きましょう。
レコードを追加し、「name」に名前を入力、「外部キー」に先に確認したテーブル「test004」の「主キー」を入力してください。
名前欄は何でも構いませんが、特に無ければ、画像を参考にしてください。
004.png

##ポータル
今回メインとなります、ポータルを作成していきます。
###レイアウト「test004」にポータルを作成
005.png
ツールバーに「ポータルツール」というボタンがありますので、そのボタンをクリックし、
レイアウトに、ポータルを配置してください、サイズや、行数は後ほど設定しますので、小さ過ぎなければ大丈夫です。

ポータルを配置すると、ポータル設定というウインドウが出ますので、ポータルを設定しましょう。
006.png

今回は、「レコードを表示、list」「垂直スクロールを許可、常時」、「代替の行状態を使用」、「アクティブな行状態を使用」と、
「ポータルレコードのフィルタ」を設定。
ポータルレコードのフィルタを選択すると、計算式の設定ウインドウが出ます。
007.png
「ポータルレコードのフィルタ」の「計算式の設定」は、下記を設定してください。

Case(
 IsEmpty(test004::_g_name); 1;
 PatternCount(list::name; test004::_g_name)
)

計算式の設定を「OK」で閉じ、ポータル設定も「OK」で閉じると、
ポータルにフィールドを追加ウインドウが表示されます。
008.png

::nameを選択し、「移動」をクリックし、OKをクリックしてください。

009.png

ポータル内の「::name」フィールドを選択し、
フィールド入力にあるブラウズモードのチェックを外してください。
021.png

下図を参考に、ポータルのサイズを調整してください。

010.png

ポータルの名前を「ポータル1」と設定してください。
014.png

今までの手順で、上図の様なポータルが作成されているハズです。

続いて、人数を表示する為に、1行のポータルを作成します。
###件数表示
件数表示用の1行ポータルを作成します。
「ポータル1」をコピーして
012.png
貼り付けし、複製してください。
013.png

複製されたポータルの名前を「ポータル2」と設定してください。
015.png

「ポータル2」は人数を表示する用の1行ポータルです。
ポータル設定を開き、下図を参考に、垂直スクロールを許可のチェックを外し、行数を1、代替の行状態を使用のチェックを外し、アクティブな行状態のチェックも外してください。
016.png

次に、「ポータル2」内の「name」フィールドを選択し、
017.png

フィールド設定を開き、「::_s_集計」を選択して、OKをクリックしてください。
018.png

ポータルのサイズを調整し、「_s_集計」を中央揃えにしましょう。
019.png

次に、検索用フィールド、検索ボタンを準備します。
###検索入力用フィールドと検索ボタン
検索入力用に、「_g_name」フィールドを配置してください。
次に、検索用のボタンを配置してください。
020.png

下図を参考にレイアウトを整えましょう。
022.png

最後に、検索ボタン用のスクリプトを作成します。
###検索用スクリプト
スクリプトワークスペースを開いてください。
023.png

新規作成ボタンをクリックしてください。
また、スクリプト名を「検索ボタン」と変更してください。
024.png

下記内容用で、スクリプトを記述してください。

レコード/検索条件確定[ダイアログあり:オフ]
ポータルの更新[オブジェクト名:"ポータル1"]
ポータルの更新[オブジェクト名:"ポータル2"]

025.png

記述できましたら、スクリプトを保存してください。
026.png

保存したスクリプトを、検索ボタンから呼び出される様に設定しましょう。

レイアウトモード時に、検索ボタンを右クリックし、ボタン処理より、スクリプト実行を選択してください。
027.png

スクリプト指定ウインドウで「検索ボタン」スクリプトを選択し、OKボタンをクリックしてください。
028.png

レイアウトモードを終了し、
以上で、完成です。

実際に、検索用フィールドに何か入力し、検索ボタンをクリックして動作を確認してみましょう。
029.png
「ポータル1」には一致した名称が表示され、「ポータル2」には、一致した件数が表示されていると思います。

##最後に
今回は、下記2つを同時に紹介いたしました。
①ポータル内の行数を集計フィールドと1行ポータルを利用して表示する方法
②検索フィールドを設け、ポータル内が検索で絞り込まれている様に見せる方法

①と②は別々に説明した方が分かりやすかったかとは思いますが、
利用する場面では、組み合わせた場合の方が多いかと思い、同時に説明致しました。

また、FMP17Ad以外で同じ手順を行う場合、主キーと言うフィールドは自分で用意する必要があります。

以上です。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?