みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ファイルメーカー11を使用しているのですが、現在、顧客の基本情報が入っている「テーブルA」とその顧客の詳細な情報が入っている「テーブルB」と顧客IDでリレーションを組んであります。
テーブルBのデータが表示されるレイアウトにテーブルAにある項目の氏名を参照フィールドとして表示させるようにしてあるのですが、ある一つのIDだけ氏名の参照フィールドが空白になってしまいます。
顧客IDは数字フィールドであり、他の顧客の名前はすべて出ているのでリレーションに間違いはないと思うのですが、なぜ出てこないのかわかりますでしょうか。
ちなみに、テーブルAの情報が表示されるレイアウトはフォーム、テーブルBのレイアウトは表形式です。
テーブルA・Bはともにレコードの追加を許可していて、テーブルBの空白の参照フィールドにその顧客の氏名を入力すると、自動的にフォームのレイアウトに新しいレコードが追加されてしまいます。
半角と全角の問題かとも思ったのですが、全部半角でした。
また、空白の氏名フィールドに検索でその顧客の氏名を入力すると参照フィールドは空白のままなのですが、ID表示はちゃんと出てきます。
書式の文字色も黒になっていました。
データ自体は入っているのになぜ出てこないのか、教えていただけると助かります。
説明が分かりにくいかもしれませんが、よろしくお願いします。
テーブルAの側に同じ顧客IDのレコードが存在し、かつその氏名が空白になっていませんか?
例えば氏名が表示されないのが「005 鈴木」さんだとしたら、テーブルAに
005 ""
005 鈴木
のレコードが存在するならば、テーブルBで氏名の検索はできるけど(005はヒットするので)、氏名は表示されません。
テーブルAのレイアウトで不具合の出ている顧客IDで検索してみたら複数レコードがヒットしませんか?
(追記)氏名が空白のレコードを検索してみても。
Last edited by koeda (2020-05-29 10:56:38)
Offline
テーブルAのIDがゴミなどが入って違っているのでは。
試しに、
テーブルBのIDをコピー
テーブルAにペースト、レコード確定
をしてみたらいかがでしょう。
Offline
テーブルA・Bはともにレコードの追加を許可していて、テーブルBの空白の参照フィールドにその顧客の氏名を入力すると、
自動的にフォームのレイアウトに新しいレコードが追加されてしまいます。
この双方向にレコードの作成を許可するという定義はどうなんでしょうか?
詳細情報は、既存の基本情報に紐付けて作成するものだと思いますが、これだとお気づきのとおり基本情報が常に「新規追加」になってしまいますよね?
テーブルAのレコード作成の許可は外して、テーブルBのレイアウトからの会員ID/氏名等の編集は不可とした方が良いのでは?
Last edited by koeda (2020-05-29 10:51:38)
Offline
「テーブルB」の顧客の詳細な情報が、例えば日ごとのデータなど同じデータが複数あるものでしたらその構成でいいのですが、複数存在しないデータでしたら、別テーブルに保存する意味がなくテーブルを統合するべきでしょう。
また、複数あるものでしたら、テーブルA のレイアウトの中で、ポータルで入力させるのが、運用を考えてもベストなのでは。
Offline
みなさんありがとうございます。
調べた結果、おっしゃるとおりテーブルAのほうに要らないデータがありました。削除したら名前が出るようになりました。
リレーションの設定も見直し、レコードの追加がされないようにします。
もうひとつ質問なのですが、テーブルAと違うファイルメーカーファイルのDBのテーブル(テーブルCとします)とを顧客IDでつなげているのですが、リレーションでつなげただけであり、レコードの追加もソートも設定していないのですが、テーブルCのレイアウトからテーブルAのレイアウトに飛ぶようにすると、なぜかテーブルBの参照フィールドにデータが出てこなくなってしまいました。
テーブルAにはいらないレコードはないように見えるのですが、なぜまたデータが見えないのかわかる方は教えていただきたいです。
その飛んだ先のレイアウトは、最初の質問に出てきたテーブルAのレイアウトのことを指していますか?
レイアウトの切り替えは具体的にどのようなスクリプトで行っていますか?
Offline
返信ありがとうございます。
テーブルCのレイアウトとテーブルAのレイアウト(どちらもフォーム形式)をボタン設定で「関連レコードへ移動」に設定しリレーションを組んでいる「顧客ID」の該当レコードに飛ぶようにしてあります。
スクリプトは組んでいません。
わかりにくくてすみませんが、よろしくお願いいたします。
テーブルBのその顧客IDのレコードをよく見てみたらいかがでしょう。
> 顧客の基本情報が入っている「テーブルA」とその顧客の詳細な情報が入っている「テーブルB」
テーブルAとテーブルBの内容がよく分かりませんが、
どちらも顧客がユニークなんでしょうか?
とすれば二つのテーブルの意味がなくなります。
Offline
データに原因があるのか?それともレイアウトやリレーションなどの構造に問題があるのか?
まずデータに問題がないことの確認ですね。
顧客によって詳細情報が出たり出なかったり、という現象ならばデータの問題です。
チポさんの回答のとおり、まず顧客IDがA/Bに正しく入っており、データも揃っていることが前提です(設計の是非はともかく)
構造に問題があるとすれば、レイアウトが参照しているオカレンスやフィールドが間違っている場合が大多数なので、そこを丁寧に見直すしかないと思います。
(テーブルAではなくテーブルA2を参照しており、テーブルBとリレーションがなかった、とか)
今回はテーブルA/Bがファイル1、テーブルCはファイル2というふうに分かれているようですが、
レイアウトCから遷移するレイアウトAは間違いなくファイル1の中のレイアウトですよね?(それが#7の確認です)
Last edited by koeda (2020-06-01 10:46:45)
Offline
5月になってから、Windows10, FM11以前での接続障害の話が散見するようになりました。WIndows10のバージョンアップが関係するのかもしれません。ちょっと頭の片隅に。
Offline
テーブルBのその顧客IDのレコードをよく見てみたらいかがでしょう。
> 顧客の基本情報が入っている「テーブルA」とその顧客の詳細な情報が入っている「テーブルB」
テーブルAとテーブルBの内容がよく分かりませんが、
どちらも顧客がユニークなんでしょうか?とすれば二つのテーブルの意味がなくなります。
回答ありがとうございます。テーブルAは顧客1人につき1レコードですがテーブルBは1人の顧客に複数レコードあるので2つのテーブルなのだと思います
データに原因があるのか?それともレイアウトやリレーションなどの構造に問題があるのか?
まずデータに問題がないことの確認ですね。
顧客によって詳細情報が出たり出なかったり、という現象ならばデータの問題です。
チポさんの回答のとおり、まず顧客IDがA/Bに正しく入っており、データも揃っていることが前提です(設計の是非はともかく)構造に問題があるとすれば、レイアウトが参照しているオカレンスやフィールドが間違っている場合が大多数なので、そこを丁寧に見直すしかないと思います。
(テーブルAではなくテーブルA2を参照しており、テーブルBとリレーションがなかった、とか)今回はテーブルA/Bがファイル1、テーブルCはファイル2というふうに分かれているようですが、
レイアウトCから遷移するレイアウトAは間違いなくファイル1の中のレイアウトですよね?(それが#7の確認です)
回答ありがとうございます。
今回の場合、一人の顧客にのみでてこないので、データの問題かも知れませんね。
テーブルをエクスポートしてみたのですが、IDの入り方がおかしいとかはありませんでしたが・・・。
レイアウトCから飛ぶレイアウトはファイル1のレイアウトで間違いないと思います。
5月になってから、Windows10, FM11以前での接続障害の話が散見するようになりました。WIndows10のバージョンアップが関係するのかもしれません。ちょっと頭の片隅に。
ありがとうございます。
前々からデータがおかしかったのか、最近データがおかしくなったのかわかりませんが、(この状態に気づいたのが最近であるため)留意しておきます。
Bテーブルに複数の関連レコードがあるのなら、
Aテーブルのレイアウトにポータルを配置では。
Offline
一度、ファイルを保存、最小化 を行ってみては。索引の問題かもしれません。
Offline
皆様、ありがとうございました。
データを入れなおしたら、直りました。
Pages: 1
[ Generated in 0.016 seconds, 10 queries executed - Memory usage: 558.16 KiB (Peak: 578.7 KiB) ]