みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
顧客テーブル(マスター)の顧客主キーと、サービスBテーブル(イベント)の顧客外部キーをリレーションしています。
サービスBで顧客年齢を計算しようと、サービスBの年から顧客生年を引き算したいのですが、顧客テーブルが非関連テーブルとなっています。
サービスBのレイアウトでは、顧客情報は関連テーブルから表示できています。
計算の場合は、リレーション方法にコツがあるのですか?
Offline
顧客テーブルのオカレンス(リレーショングラフ上での複製)が沢山あって、計算式のダイアログで選択するときに間違えてるのでは。
アドバイスありがとうございます。
実体テーブル同士(テーブル作成時に自動的にできるTO)でリレーションすると、顧客テーブルが関連テーブルになって、計算できました。
コピーしたTOでも、同じ働きをするはずなのに、よくわかりません。
Offline
同じ働きではなく、グラフ上での結合状態によって働きは変わります。
計算フィールドなら、設定画面上部の「次のコンテキスト~」と計算式内のテーブル::フィールドの指定が大事です。
サービスAテーブル(イベント)で、同様の計算フィールドを作ったら、うまくいっています。何が良かったのかいけなかったのかよくわかりません。
またいろいろ試行錯誤して返信いたします。
Offline
例えば、テーブルAとテーブルBがあったとして、それぞれにTOが2個あり、次の様なリレーションがあると
テーブルA 0. テーブルB 0
フィールド0 - フィールド0
テーブルA 1. テーブルB 1
フィールド1 - フィールド1
計算フィールドでコンテキストを、テーブルA 0とするか、テーブルA 1にするか、でリレーション先のテーブルBの関連レコードが変わります。
Last edited by Shin (2024-01-08 11:42:49)
Offline
リレーションがいろいろあって、
サービスB2-- 顧客
のようなTOになっていると、
サービスBで顧客を参照することはできませんね。
Offline
皆様、ありがとうございます。計算フィールドは、実体テーブルにあるものだから、どのTOでリレーションがあっても、関連テーブルに載ると思っていました。
理解してうまく行ったのか、偶然できているのか、まだまだ奥が深いです。
Offline
実体でいうと、例えば
東西の窓がある部屋の中に居るとします。部屋がテーブル、窓の外の景色がTO だと考えてください。どちらの窓からも戸外という同じテーブルを見ていますが、東の窓(東というリレーション)から朝日は見えますが、西の窓からは朝日は見えません。
こんなイメージです。
Last edited by Shin (2024-01-09 13:38:24)
Offline
おせっかいな講釈を、、
レイアウトはテーブル定義のテーブルを表示するものではありません。
リレーションシップグラフのテーブルオカレンスを表示するものです。
もし、リレーションが
サービスB2-- 顧客
となっていて、顧客を参照するには、
サービスB2のレイアウトにしないとだめです。
もちろんここに配置するフィールドも
サービスB2::フィールド
としないとだめです。
これは面倒なことになるので、
リレーションを
サービスB -- 顧客2
と、このように参照する側をデフォルト、される側をコピーと徹底したほうがいいでしょう。
Offline
やっとわかってきたようです。
サービスBの計算フィールドのオプション設定の時、設定ウインドウの中央上部に、サービスBのTOのリストがあって、顧客とリレーションさせているTOを選ぶと、狙い通りの動作になりました。
サービスAでは、偶然、リレーションしているTOが1番目に載っていてうまく行っていたようです。
皆様、ありがとうございました。
Offline
Pages: 1
[ Generated in 0.184 seconds, 7 queries executed - Memory usage: 521.48 KiB (Peak: 526.02 KiB) ]