初心者にもわかるファイルメーカーの
使い方

ポータルを使用した印刷処理の組み方!!

2020-10-06 |  

こんにちは、filemakerチームの久保田です。
今回書かせていただく記事は、ポータルを利用した印刷処理の組み方です。

見積の印刷レイアウトなど、filemakerで印刷のレイアウトを作って欲しいという要望はよくあると思います。
そこで苦労するところの1つに明細部分の管理が上げられるかと思います。

その中でも、明細をポータル行で表現する場合、ポータルの既定の行数以上印刷時に表示しないといけないとなると、苦労されるかと思います。

そこで今回は印刷時の明細のポータル管理を中心に印刷処理に関してお話しさせていただこうと思います。

ファイルを用意しました。

テーブル

見積 見積明細

レイアウト

見積 print_見積(印刷用なだけで見積と見た目は同じ)

行数10で設定したポータルに12レコード用意しました。
現状の状態だと、印刷時に上の10行しか表示されません。

そこで利用するのがSQLのOFFSET句・ FETCH FIRST 句とポータルのフィルターです!!

ではスクリプトを組んでいきます。

30行目のSQLについて解説します。
基本的に見積明細の主キーを縦線区切りで保持させているのですが、条件に

OFFSET " & ($カウント-1) * 10 & " ROWS FETCH
FIRST " & $ポータル行数 & " ROWS ONLY

というものが入っていると思います。

上のOFFSET句はデータの一覧があったときに何番目以降からとるということを宣言し、FETCH FIRST句で何個分取得しますということを宣言します。

例えば、「ご飯|お味噌汁|サラダ|とんかつ|豆腐」というデータの一覧があったとき、

OFFSET 1 ROWS FETCH
FIRST 3 ROWS ONLY

と書かれていると取得されるデータは1以降(つまり2個目から)かつ3個分のデータを取得することになるので、「お味噌汁|サラダ|とんかつ」が取得されます。

最後に、ポータルのフィルターを設定していこうと思います。

PatternCountは左のテキスト($$明細表示リスト)に対して検索テキストが(見積明細::主キー)がいくつ含まれているかを数えます。
filemakerの論理式は0・空白・テキストならFalse、そうでなければ、Trueを返すので、SQLで取得した主キーに該当するポータル行だけが表示されます。

これで完成です。では試してみます。

見事表示されました!!

いかがだったでしょうか、SQLはこれ意外にもいろいろなことができるので、試してみて面白いと感じました。
なのでSQLにあまり馴染みがない方もこれを気に使ってみてはいかがでしょうか。
これで終わらせていいただきます。ご精読ありがとうございました。