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

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

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

You are not logged in.

Announcement

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


#1 2014-04-11 11:24:08

takopoko
Guest

MAX関数について(インポート直後)

Fm13使用しています。

インポートした入出庫明細データの中にある数量の最大値を求めたいと思い

インポート直後にをシステムダイアログの中で
Max ( HABA_ZAIKO_入出庫明細::数量 )

を使用してみましたが、 値=0 となってしまします。

Max関数前に キャッシュ書き込み 実施しましたが、現象変わらずです。

上記は、一つのスクリプトの中で実施しています。


インポート処理後、別スクリプトにて確認してみると、正しい値が表示されてきます。

インポート直後、MAX関数で値取得するためにはどうするのでしょうか?

#2 2014-04-11 11:37:11

Moz
Member

Re: MAX関数について(インポート直後)

Max関数について勘違いされているのではないでしょうか?

FileMaker Pro 13 ヘルプ
http://www.filemaker.com/13help/ja/html … tml#973806

インポート直後に最大値を取得するのが目的なら、
最大値を設定した集計フィールドを作っておいて取得、
数量で降順ソートした最初のレコードの値を取得などでは如何でしょう?

Offline

#3 2014-04-11 12:45:51

Traveller
Guest

Re: MAX関数について(インポート直後)

集計フィールドは対象レコードの集計で全レコード同じ値なので
最大値を「見るだけ」ならヘッダに集計フィールドを置くだけでいいのでは。

#4 2014-04-11 13:02:02

takopok
Guest

Re: MAX関数について(インポート直後)

集計フィールドを作成し取得する方法は理解できました。試してみます。

が、なぜインポート直後ダメなのか(私の勘違い、理解不足?)の内容がわかりません。
内容をもう少し教えてくれつと助かります。

Moz wrote:

Max関数について勘違いされているのではないでしょうか?

FileMaker Pro 13 ヘルプ
http://www.filemaker.com/13help/ja/html … tml#973806

インポート直後に最大値を取得するのが目的なら、
最大値を設定した集計フィールドを作っておいて取得、
数量で降順ソートした最初のレコードの値を取得などでは如何でしょう?

#5 2014-04-11 13:13:52

Moz
Member

Re: MAX関数について(インポート直後)

Max関数は指定したフィールド(群)の最大値を返す関数です。
対象レコードすべての指定したフィールドから最大値を求めるものではありません。
その場合は集計フィールドで最大値を指定すれば可能です。

数量フィールドがただの数字フィールドと仮定して、

> Max ( HABA_ZAIKO_入出庫明細::数量 )

「HABA_ZAIKO_入出庫明細」 が 現在のテーブルを指しているならば、
数量フィールドの最大値 = 現在のレコードの値 が返ります。

「HABA_ZAIKO_入出庫明細」 が リレーション先のテーブルで
複数の関連レコードが含まれているなら関連レコードの数量フィールドの最大値
関連レコードが3レコードでそれぞれ(4,2,3)ならば 4 が返ります。

ご質問のケースは前者の使い方ではないでしょうか。

Last edited by Moz (2014-04-11 13:14:46)

Offline

#6 2014-04-11 14:26:59

takopok
Guest

Re: MAX関数について(インポート直後)

集計フィール作成で対応できました。
ありがとうございました。

「Max関数は指定したフィールド(群)」の意味が理解できないのですが。
頭の悪い私にもう少しおつきあいください。

Moz wrote:

Max関数は指定したフィールド(群)の最大値を返す関数です。
対象レコードすべての指定したフィールドから最大値を求めるものではありません。
その場合は集計フィールドで最大値を指定すれば可能です。

数量フィールドがただの数字フィールドと仮定して、

> Max ( HABA_ZAIKO_入出庫明細::数量 )

「HABA_ZAIKO_入出庫明細」 が 現在のテーブルを指しているならば、
数量フィールドの最大値 = 現在のレコードの値 が返ります。

「HABA_ZAIKO_入出庫明細」 が リレーション先のテーブルで
複数の関連レコードが含まれているなら関連レコードの数量フィールドの最大値
関連レコードが3レコードでそれぞれ(4,2,3)ならば 4 が返ります。

ご質問のケースは前者の使い方ではないでしょうか。

#7 2014-04-11 15:09:03

tim
Guest

Re: MAX関数について(インポート直後)

インポート直後は「HABA_ZAIKO_入出庫明細」 が 現在のテーブルですから、
他のテーブルの集計したいレイアウトに切り替えてから計算すればいいのでは。

#8 2014-04-11 17:48:55

Moz
Member

Re: MAX関数について(インポート直後)

takopok wrote:

「Max関数は指定したフィールド(群)」の意味が理解できないのですが。

例)複数のフィールドを指定する場合

数量1 = 1 , 数量2 = 2 , 数量3 = 0

Max ( 数量1 ; 数量2 ; 数量3 )
この場合、数量1,数量2,数量3フィールドの中で最も大きな数字は 2 なので 2 が返ってきます。

例)繰り返しフィールドを指定する場合

数量繰り返し 1,0,5,2,3

Max ( 数量繰り返し )
この場合、数量繰り返しフィールドの値の中で最も大きな数字は 5 なので 5 が返ってきます。

例)関連フィールドを指定する場合

テーブル1: ID = 1
テーブル2:  ( ID = 1 , 数量 = 2 ) , ( ID = 1 , 数量 = 3 ) , ( ID = 1 , 数量 = 0 ) , ( ID = 2 , 数量 = 10 )
テーブル1とテーブル2はIDフィールドの = リレーションが設定されている

Max ( テーブル2::数量 )
この場合、テーブル1のレイアウトで ID = 1 のレコードが現在のレコードの場合、
関連するテーブル2のレコードは 3つあり、その数量フィールドの値の中で最も大きな数字は 3 なので 3 が返ってきます。

例)現在のテーブルのフィールドを指定する場合

数量 = 5

Max ( 数量 )
現在のレコードの数量フィールドの値はひとつしかないので 5 が返ってきます。

Max関数は指定したフィールドのうち現在のレコードの値もしくは関連するレコードの値を取得します。
そのためインポート直後に100レコードがあったとしても
その100レコードが現在のレコードと関連がない場合は現在レコードの値のみが返ってきます。

集計フィールドで解決したのは、
集計フィールドは対象レコードの指定フィールドの値すべてから最も大きな数字を取ってくるからです。


説明が下手で申し訳ないです。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 564.41 KiB (Peak: 579.16 KiB) ]