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

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

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

You are not logged in.

Announcement

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


#1 2013-09-24 18:11:11

たなか
Guest

3つのテーブルにあるフィールドを一つにまとめる

ファイルメーカー初心者です。

3つのテーブル(A,B,C)に分かれたデーターをDテーブルでまとめたいのですが、どうすればできますか?

Dテーブルには、各テーブルで作成されたデーターをインポートなどせずにそのまま追加されるようにしたいです。


テーブルA 軽自動車名
キャリィ、
ekワゴン
スペーシア

テーブルB 普通自動車
クラウン
レクサス
アテンザ

テーブルC 外車
BMW
ベンツ
クライスラー

テーブルD 車
キャリィ、
ekワゴン
スペーシア
クラウン
レクサス
アテンザ
BMW
ベンツ
クライスラー

全く方法が思いつきません。ご教授よろしくお願いいたします。

#2 2013-09-24 19:03:31

シャチ
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

用語がどうも理解できないなぁ。。。。
テーブルとフィールドを間違えているの?

それとも、
ABC3つのテーブルの各フィールドをDテーブルの一つのフィールドにまとめたいってこと?
もしそうなら、インポートすれば済む話ではないかと思うけど。

Offline

#3 2013-09-24 19:07:56

Shin
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

テーブルABCの上にあるフィールドをきーとして、テーブルDのフィールドへリレーションをはれば、何らかのデータを書き込めば自動的にレコードの作成ができるのでは。

Offline

#4 2013-09-24 20:02:15

wader
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

フィールド1個だけじゃ目的がよくわかりませんけど、最初から1つのテーブルに入れるのが普通では。

Offline

#5 2013-09-24 21:35:14

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

回答ありがとうございます
各テーブルにあるフィールドのうちの一つのみをDのテーブルにそのままの状態で自動入力をしたいという意味です。ですから、Aのテーブルに書き込むと、Dのテーブルにあるフィールドにそのデーターがそのまま追記されるということです。ですから、Dに何らかのデーターを書き込んでそのレコードにリンクさせるわけではありません。ミラーリングのイメージに近いのかと思います。
何かよい方法がありましたらお教えください。よろしくお願いいたします。

#6 2013-09-25 00:26:44

Shin
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

キーフィールドだけのリレーションでいいのでは。
ただ、具体的に何がしたいのでしょう。

Offline

#7 2013-09-25 09:17:10

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

やりたいこととしましては、Dテーブルでそれぞれのテーブルの目次を作成しその項目を選択することによりそれぞれのテーブルにあるデーターの詳細を開いてみることがしたいのです。Dのキャリィをクリックするとその詳細が見れるということがしたいのです。それぞれのテーブルにあるフィールドの項目がことなりますが、クリックしたときに関連データーを引張って表示することはレイアウトでできると思います。
そのためにも、Aテーブルでスペーシアという追記した項目がDテーブルで目次となって表示したいのです。
何かよい方法がございましたらご教授お願いいたします。

#8 2013-09-25 09:57:20

旅人
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

トリガが使えるバージョンならA,B,Cで入力確定後、レイアウトをDに切り替えて
新規レコードを作って車名を貼り付けるとかでできますよね。

Offline

#9 2013-09-25 10:38:38

Layouter
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

値の重複はないんでしょうけど、削除した場合のことを考えると、onRecordCommitで全レコードをインポート、ぐらいですか。
総数にもよるけど、逆に選択したい時に値一覧を生成、とかでもいいかも。FM12ならテーブルにしないでExecuteSQLでもできるし。

#10 2013-09-25 13:07:03

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

使用しているバージョンはFM12です。
トリガを使って貼り付けた場合、Aテーブルで削除したものはDでも消せますか?

データーの総数は約200件です。テーブルを作成しない方法につきましてもう少し詳しくお教えいただけますか?

よろしくお願いいたします。

#11 2013-09-25 13:07:47

チポ
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

現状のテーブル構成のままと考えて、、

Shinさんのリレーションがいいんじゃないかな。

各テーブルの車名はユニークでしょうから、
それでそれぞれリレーションして、その設定で
Dテーブルの
レコード作成に許可
関連レコードを削除
として、
A,B,CのレイアウトにDテーブル::車名フィールドを配置してそこへ入力でDテーブルで新規レコードが作成されます。

また、
A,B,Cでレコード削除すればDテーブルの関連レコードも削除されます。


> Dのキャリィをクリックするとその詳細が見れる
これは
関連レコードへ移動
でできますが、
A,B,Cどのリレーションかの判定が必要になりますね。

Offline

#12 2013-09-25 13:35:54

旅人
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

目次のようなテーブルにも区分が必要かも知れないということにして
同じくリレーションとトリガでのレコード作成サンプル

http://pupld.net/21/130925/f8q9mxic7j/index.cgi
車.fmp12

Offline

#13 2013-09-25 13:53:50

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

サンプルありがとうございました。このようなことがしたかったのです。
スクリプトでできるのですね。大変参考になりました。

#14 2013-09-25 18:05:53

Shin
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

動きそのものを見ていると、テーブルを分ける意味が無いのでは。
テーブルABCに配置するフィールドは、どのようなものでしょう。その相違のみを、それぞれのテーブルに配置しておけば十分なのでは。(予想では、同じフィールドが並びそうですが)
今のようにテーブルで種別を分けるのではなく、テーブルDで、種別ごとに抽出して見せれば十分でしょう。

Offline

#15 2013-09-27 06:41:01

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

Shinさん返信ありがとうございます。
実際にやりたいことは、親子関係をエクスプローラーのようにツリー構造で表示したいだけです。そのやり方としてそれぞれのテーブルにある欲しいフィールドデーターを抽出しリスト化を考えました。

いろいろなやり方があるとは思いますが、もしほかにいい方法があるようでしたらお教えいただけますか?

#16 2013-09-27 09:23:36

Shin
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

ツリー構造とは、テーブルDを親として、テーブルABCを子とする、という構造ですか。
でしたら、マルチテーブル構成にする意味が余り無いような。
テーブルABCのフィールド構成を教えてください。

Offline

#17 2013-09-27 21:23:13

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

Aが親でBが子供、Cが孫になります。それをまとめてリスト化しようとしたのがDです。
ツリー構造にするうえではDは必要ありません。ABCのみで出来ればいいです。
A1の下にB1が来て
その次に
A2の下にB2が来てC2とC3がきて

A1
  B1
A2
  B2
    C21
    C22
A3
    C31
    C32
    C33
    C34
    C35
A4
  B41
  B42
  B43
  B44
     C41
     C42
のような構造にしたいです。A、B,Cともそれぞれの階層でランダムに1~50の間の数であります   

よろしくお願いいたします

#18 2013-09-28 09:53:51

チポ
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

そういう構造だと、最初の例が悪かったですね。

A・B・C
は一つにできませんよ。

無理矢理まとめると使い勝手が悪くなりますよ。



DにA・B・C 三つのポータルを置いて、
ポータル行クリックでそちらへ移動。
でもいいかもしれません。

Offline

#19 2013-09-28 10:25:03

狐猫
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

そうかな...他の情報が全くないのでなんともいえないけど...
CはAの孫というだけで、Bとの関係が無いようのが違和感ありますね。

#20 2013-09-28 10:52:35

sorter
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

テーブル1個なら、各レコードに親と子の情報を(自己リレーションで)入れておいて、
親・子・孫の順にソートすればいいだけでは。
例で言うと、こうなるので
親 子 孫
A1
A1  B1
A2
A2  B2
A2  B2   C21
A2  B2   C22

#21 2013-09-28 12:09:57

旅人
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

例が悪いですね。
>Aが親でBが子供、Cが孫になります。
キャリイとクラウンとBMWには何の親子関係もありませんし、ご希望の結果を想像できない・・

Offline

#22 2013-09-28 14:40:59

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

Dにポータルをおいてという方法では、
A1
A2
A3
A4
  B41
  B42
  B43
  B44
といった表示ができないと思い最初に諦めました。もし、スクリプトを組めばできるようでしたらお教えください。

リレー関係ですが、BをとばしてAとCのリレーもありますので、A3の例を挙げました。

リレーションにこだわって考えているとツリー構造ができないと思い最初の例としてリスト化を挙げました。

最初に挙げた例がわかりにくくて大変申し訳ございませんでした。

イメージ的には、通常のフォルダーとファイル管理に使われておりますエクスプローラです。
リレー関係にあるA、B、Cテーブルの、あるフィールドがエクスプローラー風にツリー構造で表示する方法がありましたら
ご教授よろしくお願いいたします。

#23 2013-09-28 15:16:41

Lister
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

なんか抽象的でよくわかりませんけど、親がBだったりAだったりするならBとAは1つのテーブルでないと困るのでは?

C41はB41の子じゃないんですかね。B44の子ならC441とかになりそうですけど。
A4の孫というだけで、特定のBの子ではないということなんですかね...それだとエクスプローラーとも違ってくるけど

#24 2013-09-28 18:00:37

たなか
Guest

Re: 3つのテーブルにあるフィールドを一つにまとめる

Listerさんの言われる通り
C41はC441です。

大変申し訳ございませんでした。

例を挙げるのがうまくないので申し訳ないですが、
結論として、エクスプローラの表示はファイルメーカーでできますか?
もしくは、作成するにはどんな場合だとできますか?

ご教授よろしくお願いいたします。

#25 2013-09-28 19:20:31

Shin
Member

Re: 3つのテーブルにあるフィールドを一つにまとめる

表示だけで良いのでしたら、1テーブルにまとめて集計します。(ちょっと空行が出来ますが、スライドで対処できます)
https://dl.dropboxusercontent.com/u/926 … 09.fp7.zip

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 614.27 KiB (Peak: 631.17 KiB) ]