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

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

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

You are not logged in.

Announcement

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


#1 2019-10-30 15:34:29

naonao2005
Member

顧客IDから表示

いつもお世話になっています。
FM18を使用しています。
かなりの初歩的な質問かもしれませんが、ご教示お願いします。

テーブル 会社マスター フィールド 会社ID 会社名 郵便番号 住所 電話と
テーブル 会社詳細   フィールド 会社ID 事業詳細 支店名 郵便番号 住所 電話
リレーションで会社ID

会社詳細の登録画面で、会社IDの数字を入力すると会社マスターの会社名 郵便番号 住所 電話が表示されて、事業詳細 支店名等
入力できるようにしたいです。

会社マスター一覧表からボタンで会社詳細レイアウトでできるとは思いますが
会社詳細レイアウトの顧客IDに直接数字入力で表示する方法がよくわかりませんでした。

手段をご教授頂けますでしょうか?
どうぞ宜しくお願いします

Offline

#2 2019-10-30 15:39:25

koeda
Member

Re: 顧客IDから表示

書かれた通りのリレーションが張れているなら、
1)会社詳細の登録画面に会社詳細::会社IDのフィールドを配置し(会社マスター::会社IDではなく)
2)コントロールスタイルを編集ボックスにする
だけでは?

Last edited by koeda (2019-10-30 15:45:20)

Offline

#3 2019-10-30 15:53:53

チポ
Member

Re: 顧客IDから表示

リレーションはできている様ですが、
ルックアップをご理解していますか?

また、状況によっては参照フィールドの配置
でもいいのですが、ご理解できますか?

失礼な質問でしたらご容赦を。。

Offline

#4 2019-10-30 15:59:22

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

会社ID 1を入力すると会社名 郵便番号 住所 電話表示され、会社詳細が登録できるのですが、
2を入れると2の会社名 郵便番号 住所 電話表示され、1の会社詳細がそのまま表示されてしまいます。

よろしくお願いします。

Offline

#5 2019-10-30 16:06:16

koeda
Member

Re: 顧客IDから表示

会社詳細のレイアウトに配置しているフィールドの参照先が会社マスタになっているのでは?

Offline

#6 2019-10-30 16:16:18

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

やりたいことは、A部署で会社マスターの会社IDをふって 会社名 郵便番号 住所 電話を登録
B部署でA部署でふられた、会社IDから会社マスター内容を表示の上、会社詳細を登録

現在は
会社詳細レイアウト
会社ID   会社詳細::会社ID
会社名  会社マスター::会社名
事業詳細 会社詳細::事業詳細

よろしくお願いします

Offline

#7 2019-10-30 16:28:21

koeda
Member

Re: 顧客IDから表示

そもそも会社マスタと会社詳細とを分ける必要ありますか?

A部署で基本情報、B部署で詳細情報を入力するのであれば、
テーブルは1つにまとめておき、
A部署用に基本情報入力用のレイアウト、B部署用に詳細情報入力用のレイアウトをそれぞれ用意すれば?
(詳細情報入力用レイアウトでは、基本情報を編集できないようにしておく)

Last edited by koeda (2019-10-30 16:29:43)

Offline

#8 2019-10-30 16:30:07

Shin
Member

Re: 顧客IDから表示

A部署とB部署で、会社詳細の内容が異なる、という事ですか。
⑶テーブルの構成にしないとダメかな。

会社ID - 会社マスター::会社ID
              会社マスター::会社名

会社ID - 会社詳細::会社ID
部署ID - 会社詳細::部署ID
              会社会社詳細::事業詳細

Offline

#9 2019-10-30 16:41:15

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

会社マスタと会社詳細をわけずに作成したのですが、支店電話番号を空欄不可に設定して、会社マスタレイアウトに設定しない場合
エラーが出てしまいました。
よって、会社マスタと会社詳細を分けましたが、会社ID欄でデータを呼び出すには会社IDとレコード作成がなぜが上手くいきません。

よろしくお願いします。

Offline

#10 2019-10-30 17:00:51

koeda
Member

Re: 顧客IDから表示

会社マスタと会社詳細を1対1で作成してももちろん構いませんが、分ける必然性はなさそうですね

マスタ登録時に支店電話番号が未入力の状態を許容したいのであれば、仮の文字列(「入力必須」など)を自動入力するようにしたらいかがですか?
そしてレイアウトを閉じる時に検証し(Fileter関数を使うなどして)、未入力と判定されれば警告を出すようにすれば良いのでは?

もし会社マスタと会社詳細を1対1で構成するなら、会社マスタ5レコードに対して会社詳細も5レコード作られるはずです。
リレーションでレコードの作成を許可するのを忘れているとか、そういうミスはありませんか?
また、この構成の場合、会社マスタのレコードが必ず先に作られます。
したがって、詳細入力用のレイアウトも会社マスタのオカレンスを対象とし、子テーブルとして会社詳細を参照・入力させる、
という考え方のほうが分かりやすいと思います。
詳細側のレコードを新規作成してから既存のマスタとつなぐ、というのは不自然というか分かりづらい(^^ゞ。

Last edited by koeda (2019-10-30 17:10:59)

Offline

#11 2019-10-30 17:03:38

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

会社マスタもそうですが、会社ID欄でデータを呼び出そうとする場合、会社IDは、ユニークな値のみと定義されています。重複した値でもよろしいですかと聞いてきます。
これは新規レコードを追加する会社IDで、登録した会社IDではないとわかっているのですが
直接会社IDで登録した内容を表示する方法がわかりません。

よろしくお願いします。

Offline

#12 2019-10-30 17:47:48

Shin
Member

Re: 顧客IDから表示

ちょっと勘違いしていました。
会社テーブルは、会社としての情報、会社詳細は支店情報、という1対多の構造の様ですね。
会社テーブルのレイアウトに、会社詳細をポータルで表示して、詳細情報、支店名、住所を入力させればいいのです。

Last edited by Shin (2019-10-30 17:48:23)

Offline

#13 2019-10-30 17:53:47

koeda
Member

Re: 顧客IDから表示

Shin wrote:

会社テーブルは、会社としての情報、会社詳細は支店情報、という1対多の構造の様ですね。

うーん
#9の投稿から、エラー回避のための苦肉の策としてテーブルを分割しているように見えるんですよね。
違うのかなー?

Offline

#14 2019-10-30 18:26:37

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

確かに、エラー回避のため会社マスタと会社詳細を分けました。

もし会社マスタと会社詳細を1対1で構成するなら、会社マスタ5レコードに対して会社詳細も5レコード作られるはずです。
リレーションでレコードの作成を許可するのを忘れているとか、そういうミスはありませんか?
→確認します。

また、この構成の場合、会社マスタのレコードが必ず先に作られます。
したがって、詳細入力用のレイアウトも会社マスタのオカレンスを対象とし、子テーブルとして会社詳細を参照・入力させる、
という考え方のほうが分かりやすいと思います。
→おっしゃる通り会社マスタのレコードが必ず先に登録されます。

直接会社IDで登録した内容を表示する方法がわかりません。

よろしくお願いします。

Offline

#15 2019-10-31 07:05:23

koeda
Member

Re: 顧客IDから表示

今回のケースについては、会社マスタと会社詳細に分割することはお勧めしません。
シンプルさを損ねる一方で、それに見合うメリットがないと思います。

あえてリレーションシップを使ってテーブルを分割する場合でも、1対1だろうと1対Nだろうと、基本的な考え方は変わりません。
リレーションシップは丁寧に学ぶべき部分であり、サンプル等をマネして簡単に済ませる訳にはいかないポイントですので、
ぜひテキストにあたるなどして丁寧に学んでください。

Offline

#16 2019-10-31 09:30:47

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

エラー回避のため会社マスタと会社詳細を分けましたが、最終的に分けて作成するか一緒にするか2パターン作成して取扱い部署に確認をとることになりました。

リレーションは大まかにわかっているだけなので再度学習したいと思います。

リレーション以外にルックアップや参照フィールド等色々あるのでどこが問題点か、本やネットで学習していますが、なかなかこれだというのが見つかりません。

Offline

#17 2019-10-31 10:04:33

Shin
Member

Re: 顧客IDから表示

会社ID - 会社マスター::会社ID - 会社詳細::会社ID
              会社マスター::会社名
                                            会社詳細::事業詳細
という形でもいいのかも。
書き換え防止でしたら、1テーブルにしてレイアウト上のフィールドへのアクセス禁止と、アクセス権での制限でできるでしょう。

Offline

#18 2019-10-31 10:57:00

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

会社ID欄に数字を直接入力すると、ユニークな値のみと定義されています。重複した値でもよろしいですかと聞いてきます。
これは新規レコードを追加する会社ID欄で、登録した会社IDを呼び出していないので、もとのフィールド設定が間違っているのか足りないのでしょうか。

一度登録したものを一覧表にし、そこから会社を見つけて会社IDをボタンにして、登録内容をレイアウト表示できる方法はできています。
一覧表から探すよりも、直接会社ID欄に数字を入れて表示できればと思いました。

よろしくお願いします。

よろしくお願いします。

Offline

#19 2019-10-31 13:02:12

koeda
Member

Re: 顧客IDから表示

重複した値の警告が出るということは、会社マスタに既存の値を再び登録しようとしていることなのですから、
おそらくそのフィールドは会社マスタ::会社IDを表示している、ということでしょう。
しかし、詳細情報の入力レイアウトでは、会社マスタと関連づけるための会社IDを入力したいのですから
詳細テーブル::会社IDを表示・編集しなければなりません。

一覧表示はできている、とのことなので、あとはその選択したIDを詳細テーブル::会社IDにセットできるようフィールドを見直すだけでしょう。
あと一息と思います。

Last edited by koeda (2019-10-31 13:05:02)

Offline

#20 2019-10-31 17:17:58

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

じっくり、フィールドを見直してみます。
あと一息が上手くいかないので、へこみます。

今晩じっくり考えて、頑張ります。٩( ‘ω’ )و

Offline

#21 2019-11-01 11:17:21

naonao2005
Member

Re: 顧客IDから表示

いつもありがとうございます。

皆様のご意見を参考にして、#7のkoeda様のテーブルに1つにまとめて、
A部署用に基本情報入力用のレイアウト、B部署用に詳細情報入力用のレイアウトをそれぞれ用意する方法にします。

テーブル 会社マスター フィールド 会社ID 会社名 郵便番号 住所 電話 事業詳細 支店名 郵便番号 住所 電話
A部署用の基本情報入力用のレイアウトに会社ID 会社名 郵便番号 住所 電話
B部署用に詳細情報入力用のレイアウトに会社ID (会社名 郵便番号 住所 電話はフィールド入力のブラウザ入力のチェックをはずす方法)事業詳細 支店名 郵便番号 住所 電話

B部署用の詳細情報入力用レイアウトの会社IDは、重複した値の警告が出るので、
会社ID入力欄に何かスクリプトトリガを設定するのか、フィールドに会社参照IDのようなものを作成するのか、この部分がわかりませんでした。

よろしくお願いします。

Offline

#22 2019-11-01 12:10:59

Shin
Member

Re: 顧客IDから表示

B部署用のレイアウトで、新規レコードにして入力しているのでは。
B部署では新規レコードの作成は禁止し、会社一覧を表示するレイアウトを作り、そこで会社名を選択させてそのレコードへ移動し、入力させる動きを作った方がいいでしょうね。

Last edited by Shin (2019-11-01 12:31:11)

Offline

#23 2019-11-01 12:34:12

koeda
Member

Re: 顧客IDから表示

B部署用の詳細情報入力用レイアウトの会社IDは、重複した値の警告が出るので、
会社ID入力欄に何かスクリプトトリガを設定するのか、フィールドに会社参照IDのようなものを作成するのか、この部分がわかりませんでした。

会社IDをキーにして編集対象となる会社のレコードを現在の対象レコードとしたいけれど、それがうまく行かない、ってことですね。

方法1)
Shinさんの回答にあるように、会社一覧画面から編集画面へ飛ぶようにする。

方法2)
FM17以降であれば、一覧表示のためのポータルをレイアウト上にスクリプトなしで作成することができます。
「マスタ/詳細レイアウト」といいます。
https://fmhelp.filemaker.com/help/18/fm … etail.html
↓以下の記事の方が親切かな?
https://ywc.com/filemaker/?p=4986
https://www.genecom.co.jp/tech-info/new … il-layouts

方法3)
検索キー(会社ID)を格納するグローバルフィールドを設け、会社IDと照合・絞り込む方法
・編集対象の会社IDを格納するグローバルフィールドを追加する
・レイアウト上に上記フィールドOnObjectExitトリガなどで対象レコードへ移動するスクリプトを起動する

Last edited by koeda (2019-11-01 12:35:26)

Offline

#24 2019-11-01 13:15:13

koeda
Member

Re: 顧客IDから表示

上記の方法2)と方法3)を併用したサンプルを作ってみました。
https://www.dropbox.com/s/htc42dwskcjuc … fmp12?dl=0

レイアウト2枚で作ってみましたが、ちょっと前のスレッドで話題になったように、
タブやスライドパネルを使ってレイアウトを1つにまとめることもできますね。
https://fm-aid.com/bbs2/viewtopic.php?id=9741

あと本当は、セキュリティの設定を施して、部署や役職に応じてアクセス権を決めるべきです。
勝手にデータを追加・編集・削除されないように。

Last edited by koeda (2019-11-01 14:58:01)

Offline

#25 2019-11-01 18:15:23

naonao2005
Member

Re: 顧客IDから表示

koeda様

今までのAccessが一覧表から探す方法ではなく、直接会社ID欄に数字を入れて表示させていたので
前システムと同じにしてほしいとの要望がありました。

方法3)
検索キー(会社ID)を格納するグローバルフィールドを設け、会社IDと照合・絞り込む方法
・編集対象の会社IDを格納するグローバルフィールドを追加する
・レイアウト上に上記フィールドOnObjectExitトリガなどで対象レコードへ移動するスクリプトを起動する

OnObjectExitトリガ
検索モードに切替[一時停止:オフ]
フィールド設定[会社マスター::会社コード;会社マスター::g_検索会社コード]
エラー処理[オン]
検索実行[]

これでできたのですが、あってますか。


方法2)と方法3)を併用したサンプル、いつも丁寧にありがとうございます。

併用の方法も、他部署に確認して決めたいと思います。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 585.27 KiB (Peak: 622.17 KiB) ]