みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
はじめまして。Windows7 FM13proを使用しています。
テーブルA;科目、項目ID、項目、価格
テーブルB;科目、項目ID、項目、価格
テーブルBはテーブルAと科目で自己リレーションを組んでいます。
テーブルAを元にしてレイアウトを作り、ドロップダウンリストでテーブルAの科目を
選択するとポータルに項目ID、項目、価格が表示されるようになっています。
ドロップダウンリストやポータル内をクリックした場合は問題無いのですが
それ以外のフィールドやフィールド外をクリックした時に項目ID、項目、価格が更新されてしまいます。
これを防ぐ方法は無いでしょうか?
Offline
FileMaker Pro では以下の場合にレコードが確定されます。(リンク先参照)
確定によって入力値の自動化や計算フィールドの計算などが行われている(更新)と考えられます。
レコード内のデータの確定
http://www.filemaker.com/help/13/fmp/ja … .4.24.html
レコードの確定を避けるためには
・レイアウトオプションで[レコードの変更を自動的に保存する]をオフ
・OnRecordCommit トリガで確定をキャンセルし、レコードの確定を明示的に行う手段を追加する
などがありますが、
項目ID、項目、価格が更新されることで起こっている不都合は何でしょうか?
その内容によっては他の手段で解決できるかも知れません。
例えば「必須情報が未入力なのに計算されると困る」など......
Last edited by Moz (2017-09-14 09:38:28)
Offline
質問がよく理解出来ていませんが、
ポータルを表示している照合側のレコードが確定しないでも、
そのリレーションの照合フィールドが確定すれば、リレーションは成立します。
ですから、
ドロップダウンリストを選択した時点で照合されますから、
ポータルの内容はその選択に準じたものになるはずです。
って書いても質問の症状とご希望が分かりません。
Offline
ご返答ありがとうございます。症状を書きます。
ドロップダウンリストの科目を選択した場合、ポータル内の項目ID、項目、価格(テーブルB)が正しく更新されます。
しかし、その後フィールド外やその他のフィールドをクリックした場合、ポータル内の一つ目のレコードのみが置き換わってしまいます。
調べてみると科目を選択した時、テーブルBの項目ID、項目、価格は正しく更新されますが
テーブルAの項目ID、項目、価格が更新されていません。
そしてフィールド外やその他のフィールドをクリックした場合にポータル内の一つ目のレコードがテーブルAのレコードに置き換わってしまってます。
これを防ぐ方法はないかと思い、質問いたしました。わかりにくくてすみません。
Offline
どこかの設定が間違っている様に思えます。
チェックすべきこと
リレーションの設定
ポータルを配置しているレイアウトのテーブル
ポータルのテーブル
ポータルに配置しているフィールドのテーブル
そもそも、
テーブルAとテーブルBはどのような?
Offline
チポ様、ありがとうございます。
テーブルAとテーブルBは
テーブルA;科目、項目ID、項目、価格
テーブルB;科目、項目ID、項目、価格
テーブルBはテーブルAと科目で自己リレーションを組んでいます。
ドロップダウンリストは科目でポータル内容は項目ID、項目、価格です。
ポータルを配置しているレイアウトはテーブルA
ポータルのテーブルはテーブルB
ポータルに配置しているフィールドはテーブルBです。
Offline
書かれた説明通りなら
> ポータル内の一つ目のレコードがテーブルAのレコードに置き換わってしまってます
これはあり得ません。
もう一度全ての設定を見直すべきでしょう。
Offline
チポさん書かれている通りですが書かれた構造では確定に関係なくポータルに表示されるレコードが変わりますね。
#6 を 2パターン 想像で再現してみましたがどちらが近いですか?
パターン1:テーブルAとテーブルBは同じ構造の別々のテーブルに基づくテーブルオカレンス
https://yahoo.jp/box/XiFhCu
パターン2:テーブルAとテーブルBは同じテーブルに基づくテーブルオカレンス
https://yahoo.jp/box/qvQ0TF
> ポータル内の一つ目のレコードがテーブルAのレコードに置き換わってしまってます
それでもこれは起こり得ないですが......同じ科目のレコードが全て表示されると思いますよ。
> ポータル内の一つ目のレコードがテーブルAのレコードに置き換わってしまってます
ここから推測するとBのパターンになります。(別々のテーブルでは自己リレーションにならないので)
Last edited by Moz (2017-09-14 17:06:01)
Offline
Mozさんのサンプルは見ていないので、
重複・トンチンカンはお許しください。
> テーブルBはテーブルAと科目で自己リレーションを組んでいます
ここを見ていませんでした。
テーブルBはテーブルAのテーブルオカレンス?
ならば、
テーブルAで照合フィールド入力で照合成立しポータル表示されます。
次に、他をクリックでレコード確定し、この時点で自身が関連レコードとなっているのでは?
これを防ぐには、ユニークな値のフィールドを用意し、
現在の照合に
テーブルA::ユニーク ≠ テーブルB::ユニーク
をandで加えればいいでしょう。
Mozさんのサンプルの通りかな ;;;;;
Offline
Moz様、チポ様
ありがとうございます。まさにMoz様のサンプルのパターン2の状態です。
チポ様の言われるように修正してみます。
Offline
Moz様、チポ様
いろいろやってみたのですが修正の仕方がわかりません。
Moz様のパターン2の場合でしたら、どのように修正すれば良いでしょうか?
Offline
Moz様、チポ様
解決しました。親切にありがとうございました。助かりました。
Offline
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 573.2 KiB (Peak: 590.11 KiB) ]