みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
ファイルメーカー初心者です。
3つのテーブル(A,B,C)に分かれたデーターをDテーブルでまとめたいのですが、どうすればできますか?
Dテーブルには、各テーブルで作成されたデーターをインポートなどせずにそのまま追加されるようにしたいです。
テーブルA 軽自動車名
キャリィ、
ekワゴン
スペーシア
テーブルB 普通自動車
クラウン
レクサス
アテンザ
テーブルC 外車
BMW
ベンツ
クライスラー
テーブルD 車
キャリィ、
ekワゴン
スペーシア
クラウン
レクサス
アテンザ
BMW
ベンツ
クライスラー
全く方法が思いつきません。ご教授よろしくお願いいたします。
用語がどうも理解できないなぁ。。。。
テーブルとフィールドを間違えているの?
それとも、
ABC3つのテーブルの各フィールドをDテーブルの一つのフィールドにまとめたいってこと?
もしそうなら、インポートすれば済む話ではないかと思うけど。
Offline
テーブルABCの上にあるフィールドをきーとして、テーブルDのフィールドへリレーションをはれば、何らかのデータを書き込めば自動的にレコードの作成ができるのでは。
Offline
フィールド1個だけじゃ目的がよくわかりませんけど、最初から1つのテーブルに入れるのが普通では。
Offline
回答ありがとうございます
各テーブルにあるフィールドのうちの一つのみをDのテーブルにそのままの状態で自動入力をしたいという意味です。ですから、Aのテーブルに書き込むと、Dのテーブルにあるフィールドにそのデーターがそのまま追記されるということです。ですから、Dに何らかのデーターを書き込んでそのレコードにリンクさせるわけではありません。ミラーリングのイメージに近いのかと思います。
何かよい方法がありましたらお教えください。よろしくお願いいたします。
キーフィールドだけのリレーションでいいのでは。
ただ、具体的に何がしたいのでしょう。
Offline
やりたいこととしましては、Dテーブルでそれぞれのテーブルの目次を作成しその項目を選択することによりそれぞれのテーブルにあるデーターの詳細を開いてみることがしたいのです。Dのキャリィをクリックするとその詳細が見れるということがしたいのです。それぞれのテーブルにあるフィールドの項目がことなりますが、クリックしたときに関連データーを引張って表示することはレイアウトでできると思います。
そのためにも、Aテーブルでスペーシアという追記した項目がDテーブルで目次となって表示したいのです。
何かよい方法がございましたらご教授お願いいたします。
トリガが使えるバージョンならA,B,Cで入力確定後、レイアウトをDに切り替えて
新規レコードを作って車名を貼り付けるとかでできますよね。
Offline
値の重複はないんでしょうけど、削除した場合のことを考えると、onRecordCommitで全レコードをインポート、ぐらいですか。
総数にもよるけど、逆に選択したい時に値一覧を生成、とかでもいいかも。FM12ならテーブルにしないでExecuteSQLでもできるし。
使用しているバージョンはFM12です。
トリガを使って貼り付けた場合、Aテーブルで削除したものはDでも消せますか?
データーの総数は約200件です。テーブルを作成しない方法につきましてもう少し詳しくお教えいただけますか?
よろしくお願いいたします。
現状のテーブル構成のままと考えて、、
Shinさんのリレーションがいいんじゃないかな。
各テーブルの車名はユニークでしょうから、
それでそれぞれリレーションして、その設定で
Dテーブルの
レコード作成に許可
関連レコードを削除
として、
A,B,CのレイアウトにDテーブル::車名フィールドを配置してそこへ入力でDテーブルで新規レコードが作成されます。
また、
A,B,Cでレコード削除すればDテーブルの関連レコードも削除されます。
> Dのキャリィをクリックするとその詳細が見れる
これは
関連レコードへ移動
でできますが、
A,B,Cどのリレーションかの判定が必要になりますね。
Offline
目次のようなテーブルにも区分が必要かも知れないということにして
同じくリレーションとトリガでのレコード作成サンプル
Offline
サンプルありがとうございました。このようなことがしたかったのです。
スクリプトでできるのですね。大変参考になりました。
動きそのものを見ていると、テーブルを分ける意味が無いのでは。
テーブルABCに配置するフィールドは、どのようなものでしょう。その相違のみを、それぞれのテーブルに配置しておけば十分なのでは。(予想では、同じフィールドが並びそうですが)
今のようにテーブルで種別を分けるのではなく、テーブルDで、種別ごとに抽出して見せれば十分でしょう。
Offline
Shinさん返信ありがとうございます。
実際にやりたいことは、親子関係をエクスプローラーのようにツリー構造で表示したいだけです。そのやり方としてそれぞれのテーブルにある欲しいフィールドデーターを抽出しリスト化を考えました。
いろいろなやり方があるとは思いますが、もしほかにいい方法があるようでしたらお教えいただけますか?
ツリー構造とは、テーブルDを親として、テーブルABCを子とする、という構造ですか。
でしたら、マルチテーブル構成にする意味が余り無いような。
テーブルABCのフィールド構成を教えてください。
Offline
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の間の数であります
よろしくお願いいたします
そういう構造だと、最初の例が悪かったですね。
A・B・C
は一つにできませんよ。
無理矢理まとめると使い勝手が悪くなりますよ。
DにA・B・C 三つのポータルを置いて、
ポータル行クリックでそちらへ移動。
でもいいかもしれません。
Offline
そうかな...他の情報が全くないのでなんともいえないけど...
CはAの孫というだけで、Bとの関係が無いようのが違和感ありますね。
テーブル1個なら、各レコードに親と子の情報を(自己リレーションで)入れておいて、
親・子・孫の順にソートすればいいだけでは。
例で言うと、こうなるので
親 子 孫
A1
A1 B1
A2
A2 B2
A2 B2 C21
A2 B2 C22
例が悪いですね。
>Aが親でBが子供、Cが孫になります。
キャリイとクラウンとBMWには何の親子関係もありませんし、ご希望の結果を想像できない・・
Offline
Dにポータルをおいてという方法では、
A1
A2
A3
A4
B41
B42
B43
B44
といった表示ができないと思い最初に諦めました。もし、スクリプトを組めばできるようでしたらお教えください。
リレー関係ですが、BをとばしてAとCのリレーもありますので、A3の例を挙げました。
リレーションにこだわって考えているとツリー構造ができないと思い最初の例としてリスト化を挙げました。
最初に挙げた例がわかりにくくて大変申し訳ございませんでした。
イメージ的には、通常のフォルダーとファイル管理に使われておりますエクスプローラです。
リレー関係にあるA、B、Cテーブルの、あるフィールドがエクスプローラー風にツリー構造で表示する方法がありましたら
ご教授よろしくお願いいたします。
なんか抽象的でよくわかりませんけど、親がBだったりAだったりするならBとAは1つのテーブルでないと困るのでは?
C41はB41の子じゃないんですかね。B44の子ならC441とかになりそうですけど。
A4の孫というだけで、特定のBの子ではないということなんですかね...それだとエクスプローラーとも違ってくるけど
Listerさんの言われる通り
C41はC441です。
大変申し訳ございませんでした。
例を挙げるのがうまくないので申し訳ないですが、
結論として、エクスプローラの表示はファイルメーカーでできますか?
もしくは、作成するにはどんな場合だとできますか?
ご教授よろしくお願いいたします。
表示だけで良いのでしたら、1テーブルにまとめて集計します。(ちょっと空行が出来ますが、スライドで対処できます)
https://dl.dropboxusercontent.com/u/926 … 09.fp7.zip
Offline
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 617.16 KiB (Peak: 634.07 KiB) ]