みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
yTakeといいます。
チポさんから勧められこちらで投稿させて頂きます。
値の一覧表示であるテーブルからフィールド内容をリストさせています。これに関連テーブルで値表示に制限をかけたいと思っています。
元々、関連テーブルの制限をつけない状態では、問題なく参照先フィールド内容が全てリストされていますので、参照設定は正しいと思います。
これに、”次のテーブルから関連レコードの値のみを表示”で、関連テーブルから制限を掛けるフィールドとリレーションを張ってあるテーブルを指定しました。
結果、値の候補一覧は一切の値が表示されていません。
テーブル1 テーブル2
フィールド1 <---値の一覧--- フィールド1
フィールド2 <--リレーション--> フィールド3
この様な感じです。
なお、テーブル2のフィールド3は、計算結果ですが、特に問題はないはずと思っています。
陥りやすい間違いなどありましたら、ご指摘いただきたいと思っています。
よろしくお願いします。
環境は、
ファイルメーカーProVer11、Windows7
です。
テーブル2で使う値一覧なら、「次のテーブルから」はテーブル1で、「値を表示」は変更なし(フィールド1)ですけど
ゲストユーザーさん、ありがとうございます。
すみません。ご指摘の意味が良く分かりません。”「値の表示」は変更なし”とはどう言う事でしょうか?
こちらの具体的意図としては、例えば、
テーブル2のフィールド3に計算結果としてのフィールド値、進捗A、進捗B、進捗Cなどがレコード別に登録されています。
テーブル2のフィールド1にはシリアル番号がレコード別に登録しています。
ここで、テーブル1のフィールド1にフィールド2に登録されている進捗状態と同じシリアル番号を値一覧としてリストさせて、どれか一つを選択するものです。
これを実現する為に、前述のリレーションと値一覧設定を作ってみましたが、制限がうまく機能していません。
うまくいったフィールドもあるのですが、同じ事をしているつもりで、正しく理解していない為か、うまく行かない場合があります。
場当たり的な対処では限界があるので、ご教授願えればと思いました。
矢印の解釈が逆でした。
テーブル1で使用する値一覧ですから、「次のテーブルから」はテーブル2で、値は「フィールド1」ですね。
この方向の参照だと、フィールド3は索引が必要なので、計算だと不可能なこともあります。
うまくいかないというのは、その点では。(進捗を複数のレコードから自動計算させてる=非保存=索引がない、等)
なるほど、索引が必要なのですね。前にも、同様なご指摘を受けた様に思いますが、索引自体あまり意識した事がなく、どうしても意識の外になりがちです。
フィールド3の計算の定義で索引オプションを確認しましたが、”計算結果を保存せず必要時に再計算する(D)”はチェックされておらず、その次の索引設定は”すべて(A)”に設定されています。
これで、この計算フィールドに索引設定はなされていると思います。
この状態で、値リストには値が表示されません。つまり、値リスト自体はドロップダウンリストとして枠が出ますが、値自体が何もありません。
リレーションの定義の仕方に問題があるのでしょうか?
試しに、”計算結果を保存せず必要時に再計算する(D)”にチェックしてみたところ、値リストのドロップダウン枠自体が出現しませんでした。
遅ればせながら、スミマセン。先に、御礼を”ゲストユーザーさん”としていましたが、勘違いでした。
改めまして、Listerさん、ありがとうございました。
さて、確認させて頂きたいのですが、リレーションの方向についてですが、値の参照などは参照の方向に意味があり重要ですが、リレーションに関しましては、特に一致するデータを検索する場合には、方向はあまり関係が無い様に思います。
また、リレーションの参照方向の定義と言うのが見当たりません。思うに、リレーション・マップで、関連付けられたテーブルが相互に左右どちらに配置されるかで決まると考えて良いのでしょうか?
例えば、リレーションマップ上で、相互のテーブル配置が、
テーブル1 テーブル2
フィールドA <-> フィールドA
と、
テーブル2 テーブル1
フィールドA <-> フィールドA
とでは、参照の方向が逆になる、と解釈できます。
これは正しいのでしょうか?
リレーションの定義は常に双方向です。
参照方向は、リレーションを使用する(計算式等の定義)時に決まります。(コンテキスト)
リストが空になるのは、フィールド2とフィールド3が一つも一致してない状態でしょう。
参照フィールドの配置でリレーションの確認が出来ます。
例えば、
テーブル1のレイアウトに
テーブル2::フィールド3
を置いてみるとか。
Offline
Listerさん、チポさん
ありがとうございます。
デバッグしてみました参照先フィールを(本例ではテーブル2のフィールド3)を表示させてみました。確かに、何も表示されていません。
しかし、フィールド3には計算結果ではありますが、値は存在しています。
テーブル2のレイアウトで表形式にしてみると、全てのレコードでフィールド3に値が確認できます。
この時、全てのレコードのフィールド3の値の中からいくつかは、テーブル1のフィールド2に入力された値に一致しています。
これでなぜ、一致しているレコードのみが値一覧としてリストされないのでしょうか?
良くみると、デバッグに追加したテーブル2のフィールド3はそのフィールド自体にカーソルが入れません。レコードが存在していないかの様です。
繰り返しになりますが、
テーブル1のレイアウト上で、テーブル1のフィールド1に、テーブル1のフィールド2と同じ値のフィールド3を持つテーブル2の値リスト(レコードの区別のため2番目のフィールドの値も表示を指定)から、選択されたレコードのフィールド1の値をコピーしたいのですが、何か参照が足りないと言う事でしょうか?
普通の動的値一覧ですから
フィールドタイプが違うとか?
Listerさん、ありがとうございます。
ご指摘の通りでした。
リレーションの張り方などで正しさの確証が持てなかったので、他の用件の確認が甘かった様です。
フィールドタイプの一致とは基本的な事ですね。
以後、いっそう気をつけたいとおもいます。
ここでは、特に、”解決”フラッグを立てる所はないのですね。
とりあえず解決とさせて頂きます。
ありがとうございました。
解決テスト
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 541.53 KiB (Peak: 562.07 KiB) ]