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

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

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

You are not logged in.

Announcement

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


#1 2015-08-21 03:31:47

けんた
Guest

あるテーブルのあるフィールドの最大値を求めるには?

あるテーブルのあるフィールドの最大値を求めるのに最も効率的な方法はどのようなものでしょうか?

今回はあるテーブルのシリアル番号の最大値を取得したいと考えました。
レコード数は約12万件。

試してみたのは、以下の通りです。
テーブルAのテーブルオカレンスとして、テーブルAとテーブルA_テーブルAを作る。

それを次の様にリレーション。
テーブルA           テーブルA_テーブルA
シリアル番号------[X]------シリアル番号

それでテーブルAに、
最大シリアル番号 グローバル、from テーブルA、=Max( テーブルA_テーブルA::シリアル番号 )
というフィールドを定義して、レイアウトで表示したところ、空欄のままでした。
ところが、グローバル格納のチェックを外したら望んだ値が得られました。
ただ、本来なら値は一つ得られれば十分ですし、各レコード毎に値を保持するのもどうかと思いました。

グローバル変数にはこういう使い方はできないという制約があるのでしょうか?

#2 2015-08-21 09:46:22

barikan
Guest

Re: あるテーブルのあるフィールドの最大値を求めるには?

そのフィールドでソートして一番最初か一番最後を調べたら良いのでは。
集計フィールドでもいいですけど。

#3 2015-08-21 11:20:04

calcer
Guest

Re: あるテーブルのあるフィールドの最大値を求めるには?

グローバル計算フィールドは結果が保存されるので、その計算式だと定義した時の値のまま変らないのでは。
Evaluate("Max( テーブルA_テーブルA::シリアル番号 )" ; シリアル番号 )
にするとか?

レコード削除で変更されないか。。。

効率がいいのは集計フィールドか、値一覧を定義ですかね。ソートやSQLは遅かった気がする。

自動入力のフィールドオプションなら、
GetNextSerialValue ( ファイル名 ; フィールド名 )
で「次の値」がわかりますが。

#4 2015-08-21 11:33:32

けんた
Guest

Re: あるテーブルのあるフィールドの最大値を求めるには?

単純にフィールド定義を、
最大シリアル番号 集計 =シリアル番号最大値
とすることで、目的が達成できました。
ありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 7 queries executed - Memory usage: 507.37 KiB (Peak: 518.43 KiB) ]