みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
OS:[ windows10 ]
FileMaker Ver:[ FileMaker 15 PRO ]
いつもお世話になっております。
今までの質問でリスト形式で、集計した値を得ることはできるようになったのですが、
ポータル上で集計した値を表示させることができなく、ご教授願いたいです。
過去の質問:
https://fm-aid.com/bbs2/viewtopic.php?pid=31880
ポータル(101~104のデータを表示)
ポータルに表示しているデータの元
ポータルには、下記のように表示させたいと考えているのですが、
FileMakerでは難しいのでしょうか。
成分ID//成分名称//員数//表示優先度
55500 テスト成分1 0.15 12
55501 テスト成分2 1.2 15
※成分名称と表示優先度は、あまり関係ないと思うのですが、
書いていないとややこしいのではないかと思い、念のために書いておきました。
※本題とは関係ないのですが、プレビューを押してから、戻らずに送信すると、空白のトピックが立ってしまうんですね。気をつけます!
Last edited by あきひろ009 (2016-11-05 09:29:44)
Offline
ポータルは全ての関連レコードを表示するのでそうなります。
親テーブルで重複させたくないフィールドで自己リレーションして
Sum(自己リレーション::員数)を作ると個々の重複レコードに同じ合計
が出ます。
重複しているレコードのひとつにだけ計算で目印を付けて
ポータルの照合にこの目印を追加する
とか
ポータルフィルタで目印のあるものだけに絞る
などするといいです。
うっ、
>ポータルの照合にこの目印を追加する
は目印が非保存になるケースがあるのでダメか。
ポータルフィルタにしましょう。
Last edited by 旅人 (2016-11-05 09:50:41)
Offline
旅人様
ご回答ありがとうございます!
まだ理解が及ばない部分も多いですが、試しに作ってみて、また来ます!
Offline
旅人様
こうかな。と分かる範囲で作成してみましたが、集計がうまくできていません。
たぶん自己リレーションの理解不足だと思うのですが、ご教授願いたいです。
※目印については、次の段階でチャレンジします。
自己リレーション
テーブル設計
テーブルデータ(フィールドに処方IDを追加しました。処方IDと成分番号が重複しているものを集計したいです。)
よろしくお願い致します。
Last edited by あきひろ009 (2016-11-05 11:06:32)
Offline
旅人様
テーブル設計の計算部分が間違えていることに気づきました。
下記の様に計算式を修正して、意図通りの結果になりました。
Sum(配合表2::員数) → Sum(配合表::員数)
ありがとうございます!
次は目印について、考えます。
Last edited by あきひろ009 (2016-11-05 11:25:19)
Offline
旅人様
計算の理解も同じくあまりできておらず、申し訳ないのですが、
スクリプトを使わずとも、計算フィールドで、目印をつけることが可能ということでしょうか。
重複をどのように判断するのかが、わからず、早速手詰まりになってしまいまして
ご教授願いたいです。
よろしくお願い致します。
Offline
全体に、シリアル番号を付けておきます。
ポータルで表示する時に、自分のシリアル番号とリレーション先のシリアル番号が一致する、というフィルターを付ければ良いです。
Offline
Shin様
いつもありがとうございます。
シリアル番号についてですが、スクリプトにてインポート時に自動付与することはできるのでしょうか。
https://fm-aid.com/bbs2/viewtopic.php?id=1471
上記のURLを参考にさせて頂き、
配合表のシリアル番号のフィールドのオプションでは、作成時に自動入力の設定にしているのですが、インポートの場合は、反映されていないようです。
スクリプトにてインポートする場合には、全置換が必須なのでしょうか。
Last edited by あきひろ009 (2016-11-05 11:54:07)
Offline
とりあえず、シリアル番号は手入力して、ポータルのフィルタを試しているのですが、
下記のようにフィルタ設定をした場合には、1つしか表示されず、手詰まりになりました。
配合表::配合表明細番号=配合表集計::配合表明細番号
もう少し試行錯誤してみます。
Last edited by あきひろ009 (2016-11-05 12:21:55)
Offline
普通は
from 配合表 2, =Sum(配合表 2::員数)
ではなく
from 配合表, =Sum(配合表 2::員数)
です。今後も統一したほうがいい。
インポートがどの部分で必要なのか分かりませんけど
配合表にシリアルがあるのなら、またまた別自己リレーションで
配合表 配合表 3
処方ID = 処方ID
成分番号 = 成分番号
シリアル >= シリアル
にして
目印=Count(配合表 3::シリアル)を作ると
処方IDと成分番号が同じで、自分よりシリアルが小さいレコード数が出ます。
これが1のレコードをポータルフィルタの条件にできるはず。
Offline
> シリアル番号についてですが、スクリプトにてインポート時に自動付与することはできるのでしょうか。
> 配合表のシリアル番号のフィールドのオプションでは、作成時に自動入力の設定にしているのですが、インポートの場合は、反映されていないようです。
インポートの際に、自動設定をオンにオプションをチェックすると自動入力されます。
> スクリプトにてインポートする場合には、全置換が必須なのでしょうか。
スクリプトでも上とおなじです。
インポートしてしまった後は、全置換してしまった方が楽でしょうね。
Offline
旅人様
ご回答ありがとうございます!
普通は
from 配合表 2, =Sum(配合表 2::員数)
ではなく
from 配合表, =Sum(配合表 2::員数)
です。今後も統一したほうがいい。
わかりました。作法がよくわかっておらず。。
変更致します。
インポートがどの部分で必要なのか分かりませんけど
配合表にシリアルがあるのなら、またまた別自己リレーションで
配合表 配合表 3
処方ID = 処方ID
成分番号 = 成分番号
シリアル >= シリアル
にして
目印=Count(配合表 3::シリアル)を作ると
処方IDと成分番号が同じで、自分よりシリアルが小さいレコード数が出ます。
これが1のレコードをポータルフィルタの条件にできるはず。
インポートの部分は省いてしまいまして、すみません。
前段階として、配合表にスクリプトでレコードをインポートしているのです。
なるほどです。リレーションをもう一つ増やせばよいのですね!
やってみます!!
Last edited by あきひろ009 (2016-11-05 15:18:25)
Offline
Shin様
ご回答ありがとうございます!
インポートの際に、自動設定をオンにオプションをチェックすると自動入力されます。
自動設定のオプションの箇所を探してみたのですが、見つけられず。。
下記の画面とは異なる場所で設定すればいいのでしょうか。
よろしくお願い致します。
Offline
インポートボタンを押したあとに出ます。
Offline
旅人様、ご回答ありがとうございます!
スクリプトでのインポートの場合は、出なかったように思うのですけど、スクリプトの場合でも
同一でしょうか。
それと、自己リレーションのテーブルオカレンスをもう1つ作り、目印の計算フィールドを作りまして、希望通りの動作をすることができました。
Last edited by あきひろ009 (2016-11-05 17:30:56)
Offline
手動でインポートして、その時に自動入力オプションをオンにして
スクリプトに記憶させます。
スクリプトをダイアログありにすると出るので、その後記憶でも
良かったかも?
Offline
旅人様
ご回答ありがとうございます!
そんな裏技が・・・!!
全然気づきませんでした。
ダイアログありで、インポートオプションの選択ができました。
ただオフに戻すと、やはりオプションは適用されないのですが、
特殊な記憶方法があるのでしょうか。
Offline
スクリプトでの設定は、スクリプトステップのオプションを開き、フィールドの照合の後、インポートボタンを押した後にでるダイアログで設定します。(手動の時と同じです)
旅人さんの記述は、FM6以前での方法です。FM7 以降で手動後に条件(検索やインポート、ソート)をそのまま保存するには、手動作業後に新たにそのステップを追加する事で可能ですが、条件を再確認する事が必要でしょうから、複雑な検索以外は、同じ手間数になりますので、余りお勧めしません。
簡単なサンプルです。シリアル番号の比較条件は不要で、それより、ポータルの表示範囲の設定と同様の、処方明細IDの範囲リレーションが必要ですよ。これが必要なために、ウィンドウの再表示が必要になりますので、簡単なスクリプトをトリガーで動かしています。
https://www.dropbox.com/s/gj3kpe7ihfcfy … 7.zip?dl=0
Last edited by Shin (2016-11-05 18:17:51)
Offline
Shin様
ご回答ありがとうございます!
スクリプトでの設定は、スクリプトステップのオプションを開き、フィールドの照合の後、インポートボタンを押した後にでるダイアログで設定します。(手動の時と同じです)
どうやらスクリプトでインポート時に自動でシリアルを設定することは難しそうですね。。。
手動で設定できるなら、自動の場合でも設定できるようにしてほしいな。と思うのですが、そうはいかないみたいで。。。
インポートした後に、値を設定するほうがよさそうですね。
サンプルファイルありがとうございます!
見てみます!!
Last edited by あきひろ009 (2016-11-05 18:30:48)
Offline
>旅人さんの記述は、FM6以前での方法です。
あちゃ、そうでしたっけ、古!! m(_ _)m
Offline
スクリプトステップのオプションを開くと、#13 のダイアログが出ますよね。OK ボタンを押すと、インポート時のオプションの小さなダイアログが表示されます。そこで設定です。
Offline
旅人様
ご回答ありがとうございます!
>旅人さんの記述は、FM6以前での方法です。
あちゃ、そうでしたっけ、古!! m(_ _)m
バージョンにより、動作が違うこともあるんですね。
Offline
Shin様
ご回答ありがとうございます!
スクリプトステップのオプションを開くと、#13 のダイアログが出ますよね。OK ボタンを押すと、インポート時のオプションの小さなダイアログが表示されます。そこで設定です。
あれ!本当ですね!出てきました!!
すみません。何回もクリックしていたはずなのに、何故か見落としていました。
ありがとうございます!
Offline
Shin様も旅人様もご回答ありがとうございました!
おかげさまで、頭のなかでもやもやしていたものが、ちょっとスッキリしました。
まだまだわからないことばかりでモヤモヤはたくさんありますが。。。
とりあえず希望通りの動作が出来ましたので、解決にします。
本当にありがとうございました!
Shin様から頂いたサンプルファイルは、まだ理解できていないですが、じっくり勉強します。
Offline
私が書いていたのはこんなのです。
http://pupld.net/14/161105/kbcij76xg0/index.cgi
ポータル重複.fmp12
Offline
[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 578.46 KiB (Peak: 615.37 KiB) ]