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

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

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

You are not logged in.

Announcement

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


#1 2013-12-18 15:43:35

N-TAKO
Guest

ポータルで フィルタリング機能で日付範囲を行う方法

製品テーブルと入出庫明細テーブルを製品コードでリレーションしています。
検索条件として、
1.製品コード
2.開始日付
3.終了日付
を入力して、明細表示画面で遷移しポータルで明細を表示するようにしています。
ポータルのフィルタリング機能を使用して、指定日付範囲のデータをポータルに表示しようとしていますが、うまく範囲指定ができません。

試しに、フィルタリング機能で、
・数量が等しいもの
・データ区分は等しいもの
等を行った場合はうまくいっています。

日付の場合は、指定方法が異なるのでしょうか?

現在は、条件画面で入力した日付を変数(グローバル)へ格納し、その変数と比較しています。

対応方法をご教示ください。

日付部分もリレーションすれば実現できると思うのですが、表

#2 2013-12-18 15:55:03

dup
Guest

Re: ポータルで フィルタリング機能で日付範囲を行う方法

Case ( 開始日付 ; 開始日付 ; Date ( 1;1;1 ) )
等の計算フィールドを使ってリレーションすればいいのでは。

変数でできて日付フィールドでできない理由は思いつかない。
a<b<cみたいに書いてるわけでもなさそうだし。
フィールドをグローバルにしてない?

#3 2013-12-18 16:01:19

Shin
Member

Re: ポータルで フィルタリング機能で日付範囲を行う方法

日付も、大小比較はできます。
おそらく、条件式の書き方が間違っているか、日付フォーマットになっていないかではないでしょうか。

Offline

#4 2013-12-18 16:33:22

N-TAKO
Guest

Re: ポータルで フィルタリング機能で日付範囲を行う方法

Shin wrote:

日付も、大小比較はできます。
おそらく、条件式の書き方が間違っているか、日付フォーマットになっていないかではないでしょうか。

比較を
HABA_ZAIKO_入出庫明細::日付   ≥   "2013/12/01"  and  HABA_ZAIKO_入出庫明細::日付    ≤    "2014/1/31"
ように記述するとうまくいきます。

HABA_ZAIKO_入出庫明細::日付   ≥   $$start_date  and  HABA_ZAIKO_入出庫明細::日付    ≤    $$end_date
ように記述するうまくいきません。

変数はダメなのでしょうか?

#5 2013-12-18 16:54:44

Shin
Member

Re: ポータルで フィルタリング機能で日付範囲を行う方法

変数を設定するときに、GetAsDate ( "2013/12/01" ) としてみたらうまく行くはず。

Offline

#6 2013-12-18 18:10:34

N-TAKO
Guest

Re: ポータルで フィルタリング機能で日付範囲を行う方法

Shin wrote:

変数を設定するときに、GetAsDate ( "2013/12/01" ) としてみたらうまく行くはず。


変数を設定時、 変数設定($$start_date;値:GetAsDate ( HABA_ZAIKO_入出庫明細 3::g開始日付) として、

比較は変数で実施しましたが、うまくいきませんでした。
(フィルタリングでの設定は下記)
HABA_ZAIKO_入出庫明細::日付  =  $$start_date

私の認識が違うのでしょうか?

#7 2013-12-18 19:33:24

Shin
Member

Re: ポータルで フィルタリング機能で日付範囲を行う方法

HABA_ZAIKO_入出庫明細::日付   ≥   "2013/12/01" が動いていたのは、運が良かったからかも。テキストとして比較されていた可能性があります。右を GetAsDate() にすると、日付としての比較になりますので、正確に動くはずです。

次に、変数での条件設定ですが、USの FM forum にも何度か話題になっていました。(昔の記事ですので忘れていました)
ポータルフィルターの条件式が評価されるタイミングが非常に微妙で、内部の値そのものが変更された時、条件式そのものが変更された時などの様です。内部の値は、そのレコード内のフィールド値の変更ならば直ちにフィルター式の評価が行われるようですが、グローバルフィールドやグローバル変数については変更されてもフィルター式の再評価を引き起こさないようです。
これに対処するためには、グローバルフィールドを使わずにフィールドの値を使う、グローバルフィールドを使うときはキャッシュを保存して再評価させる、グローバル変数を使わざるを得ない場合は、評価の式そのものをテキストで書いて変数に格納し、Evaluate() で評価する、という方法で逃げられるようですが、かなり扱いが面倒になりますので、別の方法を取られたほうがいいかもしれません。

Last edited by Shin (2013-12-18 20:03:39)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 9 queries executed - Memory usage: 555.38 KiB (Peak: 578.89 KiB) ]