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

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

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

You are not logged in.

Announcement

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


#1 2014-02-03 17:59:28

peace
Member

計算フィールドの値に他の計算フィールドを使用すると重たくなるのでしょうか?

お世話になります
windows7 FM12です。

レイアウトをリスト形式にして横にフィールドを並べています。
スクロール速度、計算速度が遅く困っております

<リレーション>
テーブル1--------自己---テーブル(1)
id----------------=-----id
グローバル指示日-=-----年月(計算フィールド)
指示日----------->-----指示日

<フィールド>
指示数(計算)fromテーブル1=IF(IsEmpty(納入数);指示数;納入数)
納入数(計算)fromテーブル1=Case(状態="分納";分納数;状態="完納";指示数)
指示引当(計算)fromテーブル1=Sum(テーブル(1))::指示数)
納入引当(計算)fromテーブル1=Sum(テーブル(1))::納入数)
発注残数(計算)fromテーブル1=指示引当-納入引当
{指示数、納入数はすべて計算フィールドです}

この様になっています。

計算フィールドの値に他の計算フィールドを使用すると、計算は遅くなるものでしょうか?
この様な計算フィールドの使用方法は間違っているでしょうか?

情報不足でありますが、何らかのアドバイスを頂きたいです
よろしくお願いします

Offline

#2 2014-02-03 18:35:23

Shin
Member

Re: 計算フィールドの値に他の計算フィールドを使用すると重たくなるのでしょうか?

指示引当、納入引当が、ほぼ全レコードを対象になる計算になっていますね。これは、非常に負荷が大きいです。
過去のデータの修正がほとんど無いのでしたら、それらのフィールドを数値フィールドにして、自動入力でその計算式を設定しておくと、かなり早くなるはずです。
もし、修正された場合には、それ以降の日付の各レコードを、その計算式で全置換してやると、修正可能です。

Offline

#3 2014-02-03 18:54:20

yaya
Member

Re: 計算フィールドの値に他の計算フィールドを使用すると重たくなるのでしょうか?

「指示数」が自己参照してる。
「納入数」と「指示数」が相互参照してる。

ということで、フィールド定義ができないと思いますが。

それはさておき、
id というと、普通、ユニークな値だと思いますが、Sum()の対象にするということは、ユニークではないのかな。
同じidを持つレコードは同じSum()計算をしますが、それが何度も行われるのも遅くなる原因かと。
自己リレーションではない方法を考えてみるのも手かな。

Offline

#4 2014-02-04 09:29:49

counter
Guest

Re: 計算フィールドの値に他の計算フィールドを使用すると重たくなるのでしょうか?

>「指示数」が自己参照してる。
テーブル名とフィールド名を実際のと変える時に間違えてるんでしょう。
>Sum(テーブル(1))::納入数)
もカッコがおかしいし、テーブル名にカッコは通常使えません。
よく見直してください。

指示数以外はidでの範囲内のリレーションだから、「ほぼ全レコードを対象」というほどでもなさそうですが
発注残の計算に「グローバル指示日」を使ってるのが変な感じ。
このフィールドはどういう意味?棚卸ですか?

#5 2014-02-04 18:38:29

peaceです
Guest

Re: 計算フィールドの値に他の計算フィールドを使用すると重たくなるのでしょうか?

回答ありがとうございます。お返事遅れました

「指示数」が自己参照してる。
「納入数」と「指示数」が相互参照してる
すみません、この指示数だけ数字フィールドの間違いでした

同じidを持つレコードは同じSum()計算をしますが、それが何度も行われるのも遅くなる原因かと
これについて現在施行錯誤しております。

idは部品マスタのidであります。リレーションの説明が不足でした
部品別をSumしています
Sum(テーブル(1))::納入数)
これについては、この投稿の際に()を記入してしまいました
単にテーブル1の自己リレーションです
発注残の計算に「グローバル指示日」を使ってるのが変な感じ
これについては、その月分だけでSum()したい為、2014/01=年月で
リレーションしています。

それらのフィールドを数値フィールドにして、自動入力でその計算式を設定しておくと
これを知らなかったので試したところ、変化はありませんでしたが
他にも、計算フィールドがいくつかあり、まだ全部変更できていない状況です

<リレーション>
<部品マスタ>-------------テーブル1--------自己---テーブル(1)
id-------------------------=id----------------=-----id
                                     グローバル指示日-=-----年月(計算フィールド)
                                     指示日----------->-----指示日

同じidを持つレコードは同じSum()計算をしますが、それが何度も行われるのも遅くなる原因かと
これについて、現在試行錯誤しております。

また何かアドバイスありましたら
よろしくお願いします

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 10 queries executed - Memory usage: 512.91 KiB (Peak: 517.45 KiB) ]