みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
ページ: 1
先日は、サービスAやサービスBのレコードから、該当顧客のレコードへ直達するスクリプトを教わり、便利になりました。
今回は、顧客のレコードからサービスAの該当レコードへ行けるよう、同じようなスクリプトを作成しましたが、うまく行きません。
顧客テーブルにサービスA外部キーを設定し、サービスA主キーとリレーションさせています。
顧客によっては、サービスAがない客(サービスBのみ)から、サービスAを数回している客までいます。
サービスAからの該当顧客は1人のみですが、顧客からサービスAは、0から数件となるので、中間テーブルが必要かもと考えています。
考え方やヒントなどよろしくお願いします。
オフライン
サービスと顧客のリレーションで、どっちのフィールドも索引があるでしょう(サービスのテーブルに顧客の外部キー)から、追加の設定は不要のはずです。
「サービスAやサービスB」というのが1つのテーブルなら、移動してからサービスAのみ検索(絞り込み)です。
ん?
>顧客テーブルにサービスA外部キーを設定し、サービスA主キーとリレーションさせています。
というのは、今回の質問のために追加した設定ということだと思ったけど、違うのかな。
いずれにしろ、Shinさんのおっしゃる通り、顧客(1)側にキーを持つのはサービスのレコード(多)を編集するたびにマスター側を変更しないといけないので面倒ですよね。
非保存計算フィールドでキーのリストを持つこともできるけど、普通はあえて持つ必要がないので...
「先日」というのが https://fm-aid.com/bbs2/viewtopic.php?id=14435 だとすると、サービステーブルは1つのようなので、関連レコードのうち特定のものだけという要望ですか。
関連レコードに移動してから絞り込みがいやなら、サービステーブル側に計算フィールドを追加してリレーションすることもできます。
Case(サービス="A";顧客外部キー)
みたいな感じで。
しかしどうせスクリプトでしかできないので、スクリプトに1ステップ追加する方が...
早速のご回答ありがとうございます。
顧客テーブル、サービスAテーブル、サービスBテーブル、あとメンバーテーブルを作っています。
顧客テーブルとメンバーテーブルはマスターで、サービスAテーブルとサービスBテーブルはイベントになると思います。
サービスAから顧客レコードへ直行と、顧客レコードからサービスAのレコードへ、と逆方向なので、逆方向のリレーション設定が必要になると思っていました。
サービスAは、終了時を記録するので、該当のレコード(開始時に作成)を早く探せるように改善を試みているところです。それぞれの顧客について、最新の物だけ必要となります。
元から作ってあるサービスAに顧客外部キーのリレーションで、考えてみます。
オフライン
https://fm-aid.com/bbs2/viewtopic.php?id=14435
このスレの回答を参考にしてみてください。
オフライン
う~ん、結局どういう状態なのかわかりませんね。
リレーション定義自体に「方向」はないので、どっちかのキーにグローバルフィールドとか非保存計算フィールドを使ってなければ、どっちからどっちへも「関連レコードへ移動」できるのですが...
「関連レコードへ移動」は、結局のところある条件で検索しているのと同じこと(レイアウトの切り替えや検索条件の設定など複数の作業が1ステップに記述可能なだけ)なので、検索でやっても別に構わないですが...
サービス、というものが、どのような概念でテーブルが作られているのかが具体的にわからないので、コメントがつかないのですよ。
1イベントごとに1テーブルを追加するのでしょうか。そうでしたら、正規化理論からの誤りです。
イベント毎、顧客毎のそれぞれの参加状況を見たいのですよね。
こんな構造にするのがいいと思いますが。(簡単な入力用の仕組みを組み込んであります。その部分は中級者向けです)
https://www.dropbox.com/scl/fi/hmpnhku3 … 2svu7&dl=0
編集者 Shin (2023-09-11 19:05:10)
オンライン
ページ: 1