みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
OS:[MAC OS10.9 ]
FileMaker Ver:[14]
はじめまして。
ファイルメーカーを使い始めてまもなく、スクリプトと関数の基本を勉強している者です。
掲題のように、"ポータル内のフォールドの値を元に他のテーブルのフィールドに値を返す方法"を試行錯誤しておりますが、なかなか解決できません。
設定方法をご教授いただけますと幸いです。
用意しているテーブル及びフィールドは、以下のとおりです。
・Aテーブル
AA-1フィールド、AA-2フィールド、AA-3フィールド
・Bテーブル
・Cテーブル
CC-1フィールド、CC-2フィールド、CC-3フィールド
・Dテーブル
DD-1フィールド(検索用フィールド)、DD-2フィールド(検索用フィールド)、DD-3フィールド(検索用フィールド)
上記の構成で、以下のように作成しています。
・BテーブルにポータルでAテーブルの値を取得しています。
・DテーブルにポータルでCテーブルの値を取得しています。
今回、行いたいことは、以下のとおりです。
・Bテーブルのポータルに表示されているデータの横(ポータル内)に"詳細ページへ"というボタンを作成。
・ボタンを押した後、Dテーブルに移動。
このとき、Bテーブルポータル内の値(Aテーブルのデータ)をDテーブルのDD1フィールド~DD3フィールドに各データを反映させる。
・DD1フィールド~DD3フィールドに入った値をキーワードに、Dテーブルポータル内(Cテーブルのデータ)をフィルタリング。
※Dテーブル内のみでは、DD1フィールド~DD3フィールドの値を基に、Dテーブルポータル内(Cテーブルのデータ)をフィルタリングすることは実装できていますので、
Bテーブルポータル内の値(Aテーブルのデータ)をDテーブルのDD1フィールド~DD3フィールドに各データを反映させることで、自動的にフィルタリングされると思っていますが、いかがでしょうか。
どうぞ宜しくお願いいたします。
Offline
あまりに抽象的な書き方だし、最終的に何をしたいのか、全く理解できない。リレーション関係も一言も書いてないので、もう一度0から質問を書き直して欲しいですが。
とりあえず、Dテーブルは不要。
Bテーブルのポータルのクリックで、関連レコードへ移動、でAテーブルの該当レコードへ移動。そのデータを使って、Cテーブルのポータル表示をフィルターすればいいかと。
Offline
変数をList(A::AA-1;A::AA-2;A::AA-3)にして
DテーブルでGetValueで1行ずつフィールド設定で取り出す。
Offline
Shin 様
ご返信ありがとうございます。
説明不足で失礼いたしました。
最終的に行いたいことは、
Dテーブルのポータルを
Bテーブルのポータルの値(Aテーブルの値)で
フィルタリングしたい
ということです。
Dテーブルのポータルには、
Cテーブル(データベース)の値が入っています。
また、Dテーブルには、フィルタリング用のフィールドとして、DD-1フィールド(検索用フィールド)、DD-2フィールド(検索用フィールド)を作成しています。
例として、
_Aテーブル
AA-1フィールド:氏名
AA-2フィールド:性別
AA-3フィールド:本籍
AA-4フィールド:住所
・・・
_Bテーブル
ポータルで
::AA-1フィールド:氏名
::AA-2フィールド:性別
::AA-3フィールド:本籍
::AA-4フィールド:住所
・・・
_Cテーブル
CC-1フィールド:氏名
CC-2フィールド:性別
CC-3フィールド:生年月日
CC-4フィールド:連絡先
・・・
_Dテーブル
DD-1フィールド:氏名(検索用フィールド)
DD-2フィールド:性別(検索用フィールド)
ポータルで
::CC-1フィールド:氏名
::CC-2フィールド:性別
::CC-3フィールド:生年月日
::CC-4フィールド:連絡先
・・・
1.Bテーブルのポータルから"詳細ページへ"というボタンを押す。
2.Dテーブルに移動
3.DテーブルのDD-1フィールド:氏名、DD-2フィールド:性別がBテーブルの::AA-1フィールド:氏名 ::AA-2フィールド:性別と同じ値に変更済み。
4.Dテーブル内のポータルをフィルタリング済み。
Shi様がおっしゃるとおり、基本的には以下の方法になるかと思っていますが、詳細に設定方法をご教授いただけますと幸いです。
Bテーブルのポータルのクリックで、関連レコードへ移動、でAテーブルの該当レコードへ移動。そのデータを使って、Cテーブルのポータル表示をフィルターすればいいかと。
Offline
ポータルを出しているのだから、リレーションの設定を書いてください。
ざっと見た感じでは、ポータルフィルターの様なテクニックは使わないで良いのでは。
Offline
Shin 様
リレーションの設定は、
Aテーブル←→Bテーブル
Cテーブル←→Dテーブル
それぞれ、共通のフィールド設けてリレーションしています。
Offline
Shin 様
Dテーブル内でのポータルフィルタ設定は、できております。
その手前で、「Bテーブルの値をDテーブルのフィルタ用フィールドに値を返す」という動作の設定方法が分からなく困っています。
Offline
どうしてもその方法にこだわるのでしたら、旅人さんの回答で良いのでは。
私には、Dテーブルの存在意味が全く不明。
Offline
BとCの関係がわかりませんけど、ケースに依ってはCもいらないかも?
Offline
旅人 様
ありがとうございます。
現在、私が作成しているのは、多数の人が閲覧するページです。
AテーブルとCテーブルは、データベースとして使用しており、
BテーブルとDテーブルは、それぞれ閲覧用のページとして作成しています。
Bには、Aのデータを、Dには、Cのデータをポータルで反映させています。
AとCは、異なるデータが格納されていますが、同じ名前の項目も含まれています。
Aのデータの詳細がCに格納されています。
よって、Bから"詳細ページへ"というようなボタンを置き、そこからDのページに遷移するイメージです。
分かりづらくすみません。
Offline
Dが閲覧用,というのは最初から認識してますが,その内容のデータを編集不可能にしておけば,Aテーブルのデータをそのまま表示されば良いのでは。
今のDテーブルのデータを特定する為に,A-Cテーブルも見せているのですよね。
具体的に何をやりたいのかが,全く理解できないでいます。
Offline
AとCは、見せていません。
あくまでデータベースです。
Bにポータルで表示して"詳細ページへ"というボタンを作成しています。
Dには、Cの複数のレコードがポータルで表示されています。
Bでボタンを押下後、Dに遷移するのですが、その時に関連情報のみフィルタリングして表示したいのです。
Offline
> AとCは、見せていません。
> あくまでデータベースです。
これらの編集を恐れて見せていないのだと思いますが、
Shinさんが書かれている通り、編集不可にしたレイアウトとか、
アクセス権の設定で閲覧のみとして表示できますよ。
そうすれば、B、Dは不要になりますよね。
さらに、
> Aのデータの詳細がCに格納されています
これがよく分からないのですが、
どちらも氏名がユニークなら、これも一つにするべきですね。
Offline
私が最初に書いた方法は試したのでしょうか。
>Aのデータの詳細がCに格納されています。
入力も2テーブルでは大変でしょうからひとつにまとめた方が良さそう。
そうすると、まとめたCとDだけでいいのかも。
Offline
ごめんなさい。
そもそも、私の作り方が悪く、リレーションとポータルの使い方が間違っているのかもしれません。
先ず、データベースとしては、2つ必要だと思っています。
その理由は、別々のファイルをインポートするためです。
インポートファイルは、異なるデータが格納されていますが、同じ名称の項目も存在しています。
>インポートするファイル別にテーブルを分けたほうが良いと思っていますが間違っていますでしょうか。
Offline
データベース構築の基礎となる「データベースの正規化」の考え方を知るのが早道かも知れませんネ。
「データベースの正規化」をキーにググってみられては?
Offline
2ファイルをインポートしている、と言う情報は、最初に出してもらうべきでは。
インポート元のファイルが異なる物でしょうから、2テーブルはあった方がいいでしょう。ただ、その内容が被っていて、ユニークなキーで纏めて取り扱えるなら、照合インポートを行い1テーブルにできる(するべき)かもしれません。
それを判断するのは、データベースの正規化、という理論が必要で、今の時点ではファイルの詳細を知っている貴方にしか出来ません。判断を委ねたいのでしたら、その情報を具体的に書いてください、と何度も書いていますよね。
Offline
「CはAの詳細」というのは詳しくはどういう意味ですか。
インポートするファイルが別々でも、複雑な照合インポートなど
という事でもないなら、フィールドさえあればインポートできますし。
Offline
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 605.06 KiB (Peak: 621.6 KiB) ]