初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-04-15 11:03:45

弁当屋
Guest

片方のテーブルに含まれるデータのみ表示する方法

いつも勉強させていただいています。
以前から、弁当の受発注システムで相談させていただいています。
おそらく基本的なことだとは思うのですが今回もわからないことが
ありまして投稿させていただきました。
環境は、
   OS:Win7
   FM:FM11Pro
です。
今回の相談は、片方のテーブルに含まれるデータのみ表示するにはどうしたら
いいかということです。
状況としましては、
  ファイルA(弁当予約テーブル)
    社員CD
    社員名
    注文日付
      ~etc
  ファイルB(従業員マスタ)
    社員CD
    社員名
      ~etc
ファイルAとファイルBは別々のファイルメーカーファイルで作成されています。
リレーションは、社員CDで行っています。
この状況で、ファイルBの内容を表示させるレイアウトを作成するんですが
この時に、表示させたいデータをファイルAに含まれているデータのみに
したいと思うのですがそうすればいいのでしょうか。
今回、この弁当のシステムを全社的に展開するに当たりファイルAは各工場用に
作成して配布するのでファイルA1、ファイルA2となります。
それぞれ、働いている従業員が違いますのでファイルA1、ファイルA2の内容は
各工場で異なります。
ファイルBは従業員マスタになるので全従業員が入力された状態です。
この状態で、例えば
   ファイルBの内容
     社員CD  社員名
      111   AAAA
      222   BBBB
      333   CCCC
      444   DDDD
だった時に、
   ファイルA1の内容
      社員CD   社員名
      111     AAAA
      333     CCCC
となった時、ファイルA1の中に『関連付けられているテーブル』にファイルBを指定して
ファイルBの内容を表示させるレイアウトを作った時にファイルA1の中に
含まれているデータをファイルBから
     社員CD    社員名
     111      AAAA
     333      CCCC
のみを表示させたいのですが、どうしたらいいのでしょうか?
リレーションを『=』にして作ってみてもファイルBの内容が全て表示されてしまって
うまくいきません。
どなたか、ご教授ください。よろしくお願いします。

#2 2016-04-15 12:04:39

チポ
Member

Re: 片方のテーブルに含まれるデータのみ表示する方法

どのような表示をご希望しているのでしょう。

値一覧なら、
ファイルA1だけでできますよね。

ポータルで表示なら、ファイルA1でCDのリストを得て、
それとファイルBとでリレーションすればいいですね。

どちらにせよ、
ファイルA1にレコードの無いCD、
移動してきたばかりの人などはリストされませんよ。


ファイルBに現在の勤務工場のデータは無いのですか。

Offline

#3 2016-04-15 13:26:44

弁当屋
Guest

Re: 片方のテーブルに含まれるデータのみ表示する方法

チポ様、返信ありがとうございます。

チポ wrote:

どのような表示をご希望しているのでしょう。

希望としましては、先の投稿にも書いたように
ファイルA1とファイルBの社員CDを『=』でリレーションして
出来たリレーションシップのファイルBを使ってレイアウトを作成。
リスト形式でファイルA1に入力されている社員CDに該当するデータ
だけを表示。というのが理想です。
レイアウトとしては、
    社員CD        社員名
   ファイルB::社員CD   ファイルB::社員名 ~etc
で、表示データはファイルA1に入力されている社員だけ。
という感じです。

チポ wrote:

ファイルBに現在の勤務工場のデータは無いのですか。

一応、『所属』というのは持っているんですが
人によっては、ファイルA1・ファイルA2両方に入力する場合があります。
例えば、いつもはA1工場に勤務だけど今日はA2工場で会議があるので
お弁当はそっちで食べる。
みたいな場合ですね。
なので『所属』を使って表示データを切り分けることができないので
ファイルA1に入力されているデータで表示するデータを切り分ければいいかなと
思ったわけです。

#4 2016-04-15 15:49:31

弁当屋
Guest

Re: 片方のテーブルに含まれるデータのみ表示する方法

続けて投稿です。
どうやら私、根本的に作り方が間違っていますかね。
当初、私はファイルBの内容を表示させたいので
仮に『ファイルB内容表示』というレイアウトを作る際に『関連付けられているテーブル』に
ファイルBを指定して、そこからファイルA1内に該当するデータを引っ張ってこうよと考えてました。
そうしたことで、ファイルBの内容が全て表示されてしまって頭を悩ませていましたが
根本的に考え方を変えて『ファイルB内容表示』の『関連付けられているテーブル』にファイルA1を
指定してレイアウトを作成すればいいのではなかったのでしょうか。
実際やってみたところ、ファイルA1に入力されているデータに該当するデータがファイルBから引っ張ってこれて
いました。
ただ、この方法だと現在当方ではファイルA1には2か月分のデータが入っているので同じものが2つずつ表示されてしまいます。
これを、1つずつにしたいという新たな悩みが出てきてしまうのですが。

#5 2016-04-15 16:12:26

チポ
Member

Re: 片方のテーブルに含まれるデータのみ表示する方法

> 仮に『ファイルB内容表示』というレイアウトを作る際に『関連付けられているテーブル』に
> ファイルBを指定して、そこからファイルA1内に該当するデータを引っ張ってこうよと考えてました

このご希望は、

両テーブルをCDでリレーションして、
ファイルA1から
  関連レコードへ移動
のオプションで
  関連レコードだけを表示;対象レコードの照合
とすると、ファイルBのレコードが絞り込まれます。

Offline

#6 2016-04-15 17:17:56

弁当屋
Guest

Re: 片方のテーブルに含まれるデータのみ表示する方法

チポ様、返信ありがとうございます。

チポ wrote:

> 仮に『ファイルB内容表示』というレイアウトを作る際に『関連付けられているテーブル』に
> ファイルBを指定して、そこからファイルA1内に該当するデータを引っ張ってこうよと考えてました

このご希望は、

両テーブルをCDでリレーションして、
ファイルA1から
  関連レコードへ移動
のオプションで
  関連レコードだけを表示;対象レコードの照合
とすると、ファイルBのレコードが絞り込まれます。

早速、教えていただいた方法を試しましたができませんでした。
やったことは、まず、リレーションをCDでつなげて
ファイルBを『レイアウト設定』の『レコードを表示』に設定した
レイアウトを作成。次にスクリプトで
『関連レコードへ移動[関連レコードだけを表示;対象レコードの照合;テーブル:「ファイルA1」;使用するレイアウト:”ファイルB内容表示”]』
として作成しましたが、スクリプトを実行すると
『このレイアウトでは結果を表示できないため、この処理は完了できません。』
と表示され、表示内容もファイルBの全レコードが表示されてしまいました。
スクリプトを作成するときも、『レコードの表示に使用するレイアウト』に『ファイルB内容表示』が表示されなかったので
『計算によるレイアウト名』に『ファイルB内容表示』を入力してスクリプトを作成しました。
何がいけないのでしょうか?

#7 2016-04-15 17:49:22

チポ
Member

Re: 片方のテーブルに含まれるデータのみ表示する方法

レイアウトに表示するテーブルは、
テーブル定義のテーブル名ではなく、
リレーションシップグラフのテーブル名です。

ここでは、
ファイルA1とリレーションしたファイルBのテーブル名を指定します。
そこに配置するフィールドもそのテーブル名のフィールドでなければダメです。

と言うことではないかな。。

Offline

#8 2016-04-18 09:00:30

弁当屋
Guest

Re: 片方のテーブルに含まれるデータのみ表示する方法

チポ様、返信ありがとうございます。土日で返信が遅くなってしまいました。

チポ wrote:

レイアウトに表示するテーブルは、
テーブル定義のテーブル名ではなく、
リレーションシップグラフのテーブル名です。

ここでは、
ファイルA1とリレーションしたファイルBのテーブル名を指定します。
そこに配置するフィールドもそのテーブル名のフィールドでなければダメです。

と言うことではないかな。。

早速、ご指摘の箇所を見直したところやはりスクリプトの
『関連レコードへ移動[関連レコードだけを表示;対象レコードの照合;テーブル:「ファイルA1」;使用するレイアウト:”ファイルB内容表示”]』
で『関連レコードの取得元』が『ファイルA1』でした。
これをリレーションシップグラフのテーブル名である『ファイルB』に変更して実行したところ
ファイルA1に入っているレコードだけをファイルBから引っ張ってこれました。
今回も、大変勉強になりました。ありがとうございました。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 547.25 KiB (Peak: 567.79 KiB) ]