みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
製品テーブルと入出庫明細テーブルを製品コードでリレーションしています。
検索条件として、
1.製品コード
2.開始日付
3.終了日付
を入力して、明細表示画面で遷移しポータルで明細を表示するようにしています。
ポータルのフィルタリング機能を使用して、指定日付範囲のデータをポータルに表示しようとしていますが、うまく範囲指定ができません。
試しに、フィルタリング機能で、
・数量が等しいもの
・データ区分は等しいもの
等を行った場合はうまくいっています。
日付の場合は、指定方法が異なるのでしょうか?
現在は、条件画面で入力した日付を変数(グローバル)へ格納し、その変数と比較しています。
対応方法をご教示ください。
日付部分もリレーションすれば実現できると思うのですが、表
Case ( 開始日付 ; 開始日付 ; Date ( 1;1;1 ) )
等の計算フィールドを使ってリレーションすればいいのでは。
変数でできて日付フィールドでできない理由は思いつかない。
a<b<cみたいに書いてるわけでもなさそうだし。
フィールドをグローバルにしてない?
日付も、大小比較はできます。
おそらく、条件式の書き方が間違っているか、日付フォーマットになっていないかではないでしょうか。
Offline
日付も、大小比較はできます。
おそらく、条件式の書き方が間違っているか、日付フォーマットになっていないかではないでしょうか。
比較を
HABA_ZAIKO_入出庫明細::日付 ≥ "2013/12/01" and HABA_ZAIKO_入出庫明細::日付 ≤ "2014/1/31"
ように記述するとうまくいきます。
HABA_ZAIKO_入出庫明細::日付 ≥ $$start_date and HABA_ZAIKO_入出庫明細::日付 ≤ $$end_date
ように記述するうまくいきません。
変数はダメなのでしょうか?
変数を設定するときに、GetAsDate ( "2013/12/01" ) としてみたらうまく行くはず。
Offline
変数を設定するときに、GetAsDate ( "2013/12/01" ) としてみたらうまく行くはず。
変数を設定時、 変数設定($$start_date;値:GetAsDate ( HABA_ZAIKO_入出庫明細 3::g開始日付) として、
比較は変数で実施しましたが、うまくいきませんでした。
(フィルタリングでの設定は下記)
HABA_ZAIKO_入出庫明細::日付 = $$start_date
私の認識が違うのでしょうか?
HABA_ZAIKO_入出庫明細::日付 ≥ "2013/12/01" が動いていたのは、運が良かったからかも。テキストとして比較されていた可能性があります。右を GetAsDate() にすると、日付としての比較になりますので、正確に動くはずです。
次に、変数での条件設定ですが、USの FM forum にも何度か話題になっていました。(昔の記事ですので忘れていました)
ポータルフィルターの条件式が評価されるタイミングが非常に微妙で、内部の値そのものが変更された時、条件式そのものが変更された時などの様です。内部の値は、そのレコード内のフィールド値の変更ならば直ちにフィルター式の評価が行われるようですが、グローバルフィールドやグローバル変数については変更されてもフィルター式の再評価を引き起こさないようです。
これに対処するためには、グローバルフィールドを使わずにフィールドの値を使う、グローバルフィールドを使うときはキャッシュを保存して再評価させる、グローバル変数を使わざるを得ない場合は、評価の式そのものをテキストで書いて変数に格納し、Evaluate() で評価する、という方法で逃げられるようですが、かなり扱いが面倒になりますので、別の方法を取られたほうがいいかもしれません。
Last edited by Shin (2013-12-18 20:03:39)
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 555.38 KiB (Peak: 578.89 KiB) ]