メールマガジン登録解除




DASCH Pro
FileMakerCertified & FBA








FileMakerJapan Site link

Learning from IT expert

FileMaker Pro User's Meeting

FM-Hokkaido
FollowMe @dbpowersco
SmartSection is developed by The SmartFactory (http://www.smartfactory.ca), a division of INBOX Solutions (http://inboxinternational.com)
Get(FM-Universe) > 伸縮型のリストをFileMakerで作る方法
伸縮型のリストをFileMakerで作る方法
FileMaker Proで伸縮型のリストを表現する方法をご紹介します。
出典は、米国でのFileMakerBusinessAlliance Soliant Consulting社です。

Sloiant Consulting

今回の翻訳公開に際して、快く承諾を頂けた事に心より感謝いたします。

引用:
How to make a Collapsible List in FileMaker List View

原文へのリンク


伸縮型のリストをFileMakerで作る方法


引用:
Yesterday, a client asked me to make a collapsible list in FileMaker. Essentially, he wants a subsummary list that only shows the “child” data upon request. In my head I initially thought “FileMaker can’t do that!” which turned into “there’s got to be some way” so I told him I would try. I played around with a subsummary report to see if I could trick it into displaying what I wanted. The problem with the subsummary report is that the “child” data is in the body part definition. So once you omit all the child records, the parent goes away. I need a way to keep the parent record, and hide the children. I was in the middle of compiling an email to my client telling him it’s not possible, and giving him a list of other work-arounds (popup windows, tooltip, ect) when it hit me: The only way to make this work is to have all the data in one table. In this example list, I want to show dog breeds (parent), and then under each breed a list of all of its possible variations or mixes(children). So I made a shadow table that has foreign key to the breed table, a foreign key to the variation table, a sort field, and an action field.


昨日、お客さんからFileMakerで伸縮型のリストを作る方法を尋ねられた時のこと。
ぜひとも小計リスト上で”子”データを表示したい、というものだった。
頭ではすぐに、”FileMakerでは無理だな、なんか他の方法を考えなくては”と思い、「ちょっと考えます」とだけ答えておいた。
そこで、小計パートをいじりながら、なんとか表示できないもんかと考えを巡らしていた。

小計パートを使っての表示の問題は、子データはボディパートで定義をするということにある。だからいったん子データを除いてしまえばと親データも同様だ。
今は親データを維持して、子データを隠したいのだ。お客さんへ”無理ですね”というメールに”伸縮以外で実現できる方法、例えば(ポップアップやバルーンヘルプ)などを半分ほど書いたところで、パッとひらめいた。
これを上手くするには、全部のデータをひとつのテーブルに入れればいい、のだと。
ここにサンプルのリストがある。
ここでは、血統(親)の情報だけが欲しくて、でそれぞれの下に可能性のある種やミックス(子)の情報が欲しい、というものだ。
そこで、まずはシャドーテーブルを作った。そこには血統テーブルへの外部キー、変種テーブルへの外部キーをそれぞれ格納する。また、ソートフィールドとアクションフィールドもだ。

引用:
My list layout is based on the shadow table, and all the fields on the layout are coming from either the breed or variation table. Therefore each record in the shadow table will have the _kf_Breed field populated or _kf_Variation field populated, but not both.

So here’s the kicker: when I press the disclosure triangle for the first time, I am actually importing the “child” variation records into the shadow table. When I press the disclosure triangle for the second time, I am deleting the “child” variation records from the shadow table. The sort field is to make sure that the children always sort with the parent. The action field is either “create” or “delete” and is toggled by the disclosure triangle script. The action field is only used in the parent shadow records. Here’s how it looks:






今回のリストレイアウトはシャドーテーブルにある。
そして、このレイアウト上にある全フィールドは血統テーブルか変種テーブルから表示している。結果、シャドーテーブル上のそれぞれのレコードには、血統レコードもしくは、変種レコードからのいずれかの外部キーを持つことになる。2つともではない。

結論はこうだ。
最初に、展開マークである▲マークをクリックする。この行為は実際には”子供”レコードである変種レコードをシャドーテーブルにインポートしている。
そして2回目にこのマークをクリックした時は、この子供レコードをシャドーテーブルから削除している。
ソートフィールドは、子供たちはは常に親とともにソートされるのだということを確認している。

アクションフィールドは、▲マークをクリックすることで、”作成”、”削除”といった動作を実施している。ポイントは、親側のシャドーレコードでのみ使われるということだ。
こんな感じに。







引用:
Data Disclosure: The cost range for each dog mix is fictional. Although I really do think my yorkipoo is worth that much, if not more.


データの開示:ここで記載されている価格はサンプルです。だけど、うちのYorkipooはもっと価値があるはずだ、例えそうでなかったとしても。

引用:
・The catalog ID and the action are passed in as parameters, separated by a return character
・If action is empty because it’s the first time the parent’s arrow has been clicked, set it to “create”
・If the script parameter is empty, exit script
・Create a popup window to do the work
・If action is “create”, go to the Variation layout, find on the foreign key breed ID, import the Variation primary keys into the Shadow table
・If action is “delete”, go to the shadow table, find on the shadow records to delete, and delete them
・Update the original shadow parent record to toggle between “create” and “delete”
・Close the popup
・Select the original window
・Show all records
・Sort Records by the SortOrder field


・catalogIDとある動作は、改行コードで区分された引数として渡されます。
・仮に親側の矢印が初めて押された時であれば、その動作は「空」となり、「作成(Create)」ということになります。
・引数がそもそも空であれば、スクリプトを抜けます。
・ポップアップウィンドウを利用して作動させます。
・動作が「作成」であれば、変種レイアウトに進み、外部キーの血統IDを検索して変種の親キーをシャドーテーブルに差し込みます。
・動作が「削除(delete)」であれば、シャドーテーブルに進んで削除すべきレコードを捜し、削除を実施します。
・親側のシャドーレコード側では、「削除」「作成」との間での動作でアップデートを実践します。
・ポップアップウィンドウを閉じます。
・もともとの窓を選択します。
・全レコードを表示します。
・ソートフィールドに従って、レコードをソートします。

引用:
Other tips to note:

Use a clear button object (with no script attached) and add conditional formatting to the children rows
Put the “go to detail” button behind the button object so it’s hidden for the child records
The disclosure triangle itself is a calculation in the shadow table of type container


チップス
・特定のスクリプトと連動していない透明なボタンを使用して子供行に対して条件付き書式を設定します。
・”詳細へ”のボタンをボタンオブジェクトの後ろに配置します。そうすれば子供のレコードから見えなくなります。
・開示用の▲マークそれ自体は、シャドーテーブルの計算フィールドでタイプはコンテナとして配置します。


引用:
A few Cons:

If you have a lot of children in your list, your importing may have performance issues, especially over the WAN
You will have to refresh the parent list. I added a “refresh list” button to update the “parent” records, and I also update the list in my navigation script. If you have a lot of parent records that need to be updated, you can also update them in a nightly server script


いくつか
・リスト上で沢山の子供レコードがあるのであれば、インポートのパフォーマンスが問題になります。特にWAN環境では顕著でしょう。
・親側のリストも更新する必要があります。親レコードを更新するために、”リストの更新”ボタンを配置しました。そして、一連のスクリプトステップの中でこのリストは更新しています。更新すべき親のレコードも沢山あるような環境ではサーバースクリプトを使用してアップデートも可能です。

引用:

Overall, pretty slick, Aye? The link to download the sample file is below. I’d be happy to answer any questions via comments or email: mencarnacao@soliantconsulitng.com

Thanks for reading!


どうでしょう。
下にサンプルファイルへのリンクを記載しています。どんな質問にも喜んで答えますよ。

ありがとう。

原文へのリンク
  この記事を PDF フォーマットで見る 記事を印刷する 記事をメールで送信

投稿された内容の著作権はコメントの投稿者に帰属します。