みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
お疲れ様です。テーブルオカレンスの考え方が理解できず、以下の問題を解消できません。よろしくお願いします。
# 実現したいシステム
経費の申請フォームを作成しようとしています。流れとしては「申請者が申請内容、管理者IDを入力し申請書を作成すると、該当の管理者に通知がいき、承認を行う」というものです。
ただ、以下のように実装すると、申請を行っても管理者用の一覧画面に申請書が乗りません。
# うまくいかない現在の実装
下記のような具合に実装し、うまく行きません。
1. レイアウト
下記の三つ。
・申請画面
・申請者用一覧画面
・管理者用一覧画面
申請画面では申請ができ、申請者用一覧画面には申請中の申請がポータルで一覧表示される。
管理者用一覧画面には申請者用一覧画面と基本的に同じだが、加えて申請を受けている一覧(承認依頼一覧)がポータルで表示される。
2. テーブルとテーブルオカレンス
テーブルは以下のふたつ
・アカウントマスタ
→ アカウントIDなどが含まれる。
・申請書トラ
→ 申請内容、申請者ID、管理者ID、ステータスなどが含まれる。
テーブルオカレンス以下の三つ
・アカウントマスタ
・申請書トラ(申請者用)
申請者IDでアカウントマスタのアカウントIDとリレーションを張っている。
・申請書トラ(管理者用)
管理者IDでアカウントマスタのアカウントIDとリレーションを張っている。
3. レイアウトとテーブルオカレンスの関係
例)レイアウト ー テーブルオカレンス
・申請画面 ー 申請書トラ(申請者用)
・申請者用一覧画面 ー アカウントマスタ
・管理者用一覧画面 ー アカウントマスタ
# うまく行っていない点と原因(の予測)
以上の実装で申請を行うと、管理者用一覧画面の承認依頼一覧に申請が載りません。
原因は、管理者用一覧画面で「申請している一覧」と「承認依頼一覧」をポータル表示するために、申請者IDでアカウントマスタと紐付く申請者用申請書トラ、管理者IDでアカウントマスタと紐付く管理者用申請書トラのふたつを用意しているためだと思います。
実装を始めた時は、同じテーブルを基にしたテーブルオカレンスは値やレコードを共有するのだと考えていました。
そのため申請者用の申請書トラを使ってレコードの作成をしても、管理者用トラにも反映され、管理者用トラが管理者用一覧画面に反映されるのだと考えていました。
しかし、テーブルオカレンスが違うとレコードの共有はしてくれません。
しかし自分の申請を一覧化しつつ、自分宛に承認を依頼されている申請を一覧化しようとした場合、このような実装以外どうすればいいのかわかりません。
皆さんはどのようにしてこういう問題を回避しているのでしょうか。
以上、よろしくお願いします。。
基本的には間違っていないように思います。
ポータル用のテーブルの設定を間違えてしまっているのかもしれません。
通りすがりさんです。
Offline
通りすがりさん、ありがとうございます。
発想としては間違っていないようで安心しました。またサンプルファイルまで作っていただいてありがとうございます。
いただいたファイルの内容と、手元のファイルの実装を比べてどこが間違っていたのか探してみます。
判明し次第、内容を書いて解決ずみとさせていただきます。。
通りすがりさん
サンプルファイルを拝見して気がついたのですが、
DB管理ダイアログの「グラフ内のテーブル名」というところに書いてあるTO達はデータを共有するということでしょうか。
今自分はレイアウトとデータでファイルを分けて開発しており、
データ用のFMファイルのDB管理ダイアログの「グラフ内のテーブル名」には、
「申請書トラ(申請者用)」と「申請書トラ(管理者用)」の記載がありませんでした。
ここが原因でデータが共有されていないのかなあと思っているのですが、
データを分離した時テーブルのデータが共有されず別テーブルとして扱われる、ということを避ける方法は何かないでしょうか。
もし何か心当たりがおありでしたら、よろしくお願いします。。
分離モデルは、ご自身のスキルアップの次のステップで扱った方がいいかもしれませんね。
初心者の方は、データがどっちにあって、リレーションをどっちで貼っているかがごっちゃになりがちです。
(ケースによっては分離モデルはすごい幸せになるので、この限りではありません。頭の中がごちゃごちゃにならない自信がある場合は基本的に分離モデルでも構わないです。)
考え方はあっているのに表示されない理由は、「ポータルの設定が間違っている」「リレーションの設定が間違っている」ためだと推察致します。
[ ポータル設定 ] の [ レコードを表示 : ] のところが 申請者トラ_管理者用_ または 申請者トラ_申請者用_ になっていますでしょうか?
DB管理ダイアログの「グラフ内のテーブル名」というところに書いてあるTO達はデータを共有するということでしょうか。
このテーブルはグラフ内のこれらのTOたちで使われているよっていう意味です。このTOのフィールドたちをレイアウト上に配置すれば、リレーションが成立するデータが表示されるわけです。
データを分離した時テーブルのデータが共有されず別テーブルとして扱われる、ということを避ける方法は何かないでしょうか。
データ分離した時でもしない時でも基本同じです。TOのフィールドたちをレイアウト上に配置すれば、リレーションが成立するデータが表示されるわけです。(再表示やオブジェクトの更新する必要がある場合もありますが。) 今回の場合は、ポータルの設定が間違っているのが濃厚な気がします。
データが共有されない、別テーブルとして扱われる
というのはどういう状況でしょうか?
同じデータが表示されてしまうのか。
データが全く表示されないのか。
全く違うデータが表示されるのか。
1の場合は、ポータルの設定が間違っている。2、3の場合は、リレーションが成立していない(リレーション先が間違っている)可能性が考えられます。
Last edited by 通りすがりさん (2019-05-09 08:10:26)
通りすがりさんです。
Offline
通りすがりさん
丁寧に返答いただきありがとうございます。
尋ねていただいていたことに答えられていなかったですね、すみません。
ポータルの設定を見直したところ、「申請者トラ_管理者用_」のデータを表示しているポータルに対して、
「申請者トラ_申請者用_」の承認ステータスでフィルタをかけていました。
その点を修正したところ、正しく表示されるようになりました。ありがとうございます!!
以下、今回の質問からはちょっとそれそうなのですが、
データが共有されない、別テーブルとして扱われる
と考えているのは、例えばスクリプトにて「申請者トラ_管理者用_」の承認ステータスを変更した際、「申請者トラ_申請者用_」の承認ステータスは変更にならないというケースがあったためそう考えていました。今はスクリプトを書くときは二つのTOのフィールドに対して同じ値を設定するよう書き、エラーを回避しています。
今回ソリューションを作ってみて、あまりに予想と違う挙動が多いので、公式のmasterbookをちゃんとやらないとなと思わされました。もう少し基礎を勉強してから開発して行きたいと思います。。
> 二つのTOのフィールドに対して同じ値を設定する
これはおかしいです。
TO が異っても、おなじデータソースでしたら、同じ値をとりますので、1回設定すればいいです。
ただし、レコードが確定するまでは、その値は別の TO のレイアウトからは参照できません。それでそのような動きを作てしまっているのだと思います。
フィールドに値を設定した後で、レコードを確定 をしておくべきでしょう。
Offline
正しく表示されるようになってよかったです!
「二つのTOに同じ値」については、Shin さんのおっしゃる通り、普通はしないことです。
おそらく、「変更にならなかったケース」ではスクリプトで「別のレコード」に書き込んでしまっているのかもしれませんね。(恐ろしいことです。)
(ポータルにフィルターかけたり、リレーションを色々模索している時にそうなってしまったのかな?推察ですが)
TO、TOG、様々なリレーションの種類、レコード確定のタイミング、Anchor Buoy model などがわかるようになってきたら、色々な応用が効くと思いますので頑張ってくださいね。
公式 MasterBook も大変良い教材だと思いますが、一人だと辛いのでワークショップや Web セミナーに参加して「声」をきけると良いかもしれません。
ニュアンスや大切にしているところがチョクチョクきけると思います。
通りすがりさんです。
Offline
Shinさん、通りすがりさん
ありがとうございます。
「レコードの確定」をしていない、についてはまさにそうでした。
私のソリューションはこの質問以外にもいくつか問題点を抱えていたんですが、レコードを確定させたおかげでいくつかが解決したように思えます...。
また、別のレコードに書き込んでいたというバグもありました。
ポータルに配置したボタンから「関連レコードへ移動」でレイアウトを切り替えているのですが、
ポータルで選択したレコードとは別のレコードが開かれており、結果、別レコードへの編集になっていたようです。
こちらもちょっと試行錯誤してみます。
勉強法ほうについても教えていただきありがとうございます。Webセミナーというのがあるんですね。
FileMakerはWeb系言語とかと比べてオンラインに記事が載っていなかったりして勉強方法に苦労していたんですが、知れて良かったです。ありがとうございます。
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 550.84 KiB (Peak: 571.75 KiB) ]