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

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

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

You are not logged in.

Announcement

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


#1 2013-09-18 12:05:19

オイスター
Guest

計算フィールドが動いたり動かなかったり

Winxp FMPAdv 11

いつもお世話になります。

テーブル A B C

フィールド A、B、C 共通
ID 
日付(計算)

A::日付 非保存 =B::日付  コンテキスト~ テーブルA
C::日付 非保存 =B::日付  コンテキスト~ テーブルC

リレーション  A::ID  = B::ID
         A::ID  = C::ID


テーブルAのレイアウトに B::日付 を入力用に配置し入力すると
A::日付には表示されるのですが、C::日付には表示されません。

また、既存のレコードでも表示されるものと表示されない物もあります。
新規レコード作成したらまず出ませんでした。

B,Cのフィールドに表示するようにするにはどうしたらいいでしょうか。

※用途うんぬんは省かせてもらいたいです。

#2 2013-09-18 12:49:31

Layouter
Guest

Re: 計算フィールドが動いたり動かなかったり

用途というか、テーブルの意味がわからないから、どうするのが最善かは答えようがないですけど
AとBはリレーションしてますから「Aのレイアウトに B::日付 を入力用に配置」でBのレコードができてA::日付に表示されるでしょうけど、
CはBじゃありませんからBに入れてもCのレコードはできません。
Aと同じフィールドしかないから、Cは必要ないのでは。
他にフィールドがあるなら、「Aのレイアウトにそれを入力用に配置」すればいいでしょう。
AとBのレコードを確定するまではCからBを参照できないので、C::日付は表示されない気がします。

#3 2013-09-18 13:15:39

チポ
Member

Re: 計算フィールドが動いたり動かなかったり

BとCがリレーションされていませんから、
> C::日付 非保存 =B::日付  コンテキスト~ テーブルC
これは無効でしょう。

Offline

#4 2013-09-18 15:50:24

Layouter
Guest

Re: 計算フィールドが動いたり動かなかったり

BとCのリレーションは間にAが入ってますから、Aに同じIDのレコードがあれば有効です。

#5 2013-09-18 15:54:08

オイスター
Guest

Re: 計算フィールドが動いたり動かなかったり

Layouterさん チポさん返信ありがとうございます。

BとCをリレーションしても表示ができませんでした。

キーとなるフィールドを置く必要があるということでしょうか。

#6 2013-09-18 16:15:21

Layouter
Guest

Re: 計算フィールドが動いたり動かなかったり

idだからどのテーブルでもユニークなフィールドだとして、どのテーブルにも同じレコード数になってますか?
リレーションを設定しただけでは関連レコードは作成されないということですよ。

#7 2013-09-19 08:20:45

チポ
Member

Re: 計算フィールドが動いたり動かなかったり

んん、、

> BとCのリレーションは間にAが入ってますから、Aに同じIDのレコードがあれば有効です

確かに計算してくれますが、、
正しい使い方とは言えないでしょう。



Aから見て、Bに関連レコードが無い状態から、
リレーションを使ってBにレコードを作っているんですよね。

Layouterさんが書かれた通り、
そのとき、Cにも関連レコードがない場合、
自動で新規レコードが作られることは有りません。

ということなのかな?


また、条件として、
各テーブルのIDがユニークであることは必須ではないでしょう。

ただ、
Bに同じIDのレコードを作るとおかしなことにはなりますね。


> 用途うんぬんは省かせてもらいたいです
こう書かれていますが、
ファイル構造が正しいのか、
から考え直した方がいいかも。。

Offline

#8 2013-09-19 08:58:55

Layouter
Guest

Re: 計算フィールドが動いたり動かなかったり

直接接続されてないテーブルを間接的に参照するのは、単純に機能的には何も問題ないはずですが、用途がわからないと
>正しい使い方とは言えない
かどうかはわからない。希望の動作ができてないのだから、そういう意味では明らかに正しくないんでしょうけど。
Cから見てAやBの関連レコードが複数あるとしたら、リレーションのソート順が書いてないから間違った使い方でしょうね。
これもFM的には(最初に作ったレコード)で確定されるから、必ずしも間違いとは言い切れないか...

#9 2013-09-19 13:19:57

Layouter
Guest

Re: 計算フィールドが動いたり動かなかったり

オイスター wrote:

BとCをリレーションしても表示ができませんでした。

キーとなるフィールドを置く必要があるということでしょうか。

最初の状況のままで「BとCをリレーション」はできない(輪ができるので拒否される)ので、テーブルを複製するか、どこかのリレーションを削除したんでしょうけど
複製ならどっちを使うか厳密にしないといけないし、
A=Cを削除したなら今度はAレイアウトに置いてるCは何?ということになるし

リレーション照合のキーフィールドがレイアウト上にあるかどうかは関係ないです。
が、例題がシンプルすぎて、キー(id)以外は計算フィールド(入力不可)しか無い状態ですから
AのレイアウトでCの関連レコードを作成するには、idに入力するか、スクリプトで作成するか、しかできない。

#10 2013-09-20 12:16:45

オイスター
Guest

Re: 計算フィールドが動いたり動かなかったり

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

返事が遅くなり申し訳ありません。
あれから試行錯誤して、それぞれを切り離しコピーすることにしました。(使いにくいのは承知ですが)

いろいろとアドバイスをいただきありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.013 seconds, 7 queries executed - Memory usage: 523.83 KiB (Peak: 528.37 KiB) ]