みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Aテーブルには
タイムスタンプのフィールド、
名前が入るフィールド、
金額が入るフィールド
があります。(他にもフィールドはあります。)
Bテーブルに月間の売り上げを出すために、
計算式でAテーブルのレコードを
一か月間に範囲指定して
ポータル内に
Aテーブルの上記の3フィールドを表示させ、
表示させた金額フィールドを集計するフィールドを
Bテーブルに表示させています。
ですがポータル内に範囲指定されたレコードのすべてが表示されず、
範囲指定の計算が間違っているのかとも思ったのですが
集計フィールドの数字は範囲指定している
レコードの集計と合っています。
集計自体は金額フィールドの集計としているので
そこだけ正確で、
ポータル内には表示されていないレコードがある状態で
どこをどう直していいのかわかりません。
情報不足かもしれませんがよろしくお願いします。
たぶん、リレーションの問題かと
AテーブルとBテーブルのkey(照合フィールド)は照合先が計算フィールドとか
(照合元なら出来ますが)
照合フィールドが片方が数字フィールドで、もう片方がテキストとか日付とか
月間の範囲指定とありますが、1月とか2月とか固定されたものですか?
それとも、都度見たい変動する日付指定(範囲)なのでしょうか?
いちたすに様返信ありがとうございます。
難しいことがわからず、
計算がかなり自己流ですが
自分なりに考えてやったのが
B期間開始日付≦A日付≦B期間終了日付
(AとBはテーブルです)
でリレーションしていて、
B期間開始日付はテキストにしていてポップアップカレンダーで
日付を選択できるようにしています。
そしてBテーブルに期間開始日付コピー(GetAsText ( 期間開始日付 ))計算結果はテキストのフィールドを作り、
終了日日付(GetAsNumber ( 期間開始日付コピー )+100)計算結果はテキストのフィールド、
そして期間終了日付は(Date ( Middle ( 終了日付計算 ; 5 ; 2 ) ; Right ( 終了日付計算 ; 2 ) ; Left ( 終了日付計算 ; 4 ) ))
計算結果は日付にしています。
実際にレイアウトに表示しているのは期間開始日付だけです。
だいぶ回りくどいやり方だと思いますが、
難しいことがわからずこのやり方になっています。
たぶんこの回りくどいのが原因だと思いますが
どこが問題なのかがわかりません、、
月単位で集計するのでしたら、
Aテーブルには、Year ( タイムスタンプのフィールド ) * 12 + Month ( タイムスタンプのフィールド ) という計算フィールドを作ります。
Bテーブルには、Year ( 集計年 ) * 12 + Month ( 集計月 ) という計算フィールドを作ります。
この2フィールドでリレーションするのが一番簡単でしょう。(* 12 は意味が有りますが、目で見やすくしたければ、* 100 でも構いません)
Offline
さんぷる作っちゃいましたので(手抜きしてますが)
http://pupld.net/28/140227/58whoz2c28/index.cgi
やっぱり範囲指定ならテキストじゃなくて日付けのKeyで照合したほうがいいとおもいます。
レコードの範囲を返すリレーションシップについて
http://www.filemaker.co.jp/help/html/re … .11.9.html
>計算式でAテーブルのレコードを一か月間に範囲指定して
ここはどんな計算式でどんなリレーションにしているのですか。
それともポータルフィルタを使っているのですか。
回答ではありませんが、気になったので、、
たぶん、リレーションの問題かと
AテーブルとBテーブルのkey(照合フィールド)は照合先が計算フィールドとか
(照合元なら出来ますが)
照合先のキーが計算フィールドではダメ
と言っておられるのならそれは間違いですよ。
その計算式に非保存のフィールドを使っているとダメですが、
索引保存できるのならキーになり得ます。
Offline
それに、非保存のフィールドを使っていでダメな場合は、リレーション自体が成立しないので一部のレコードだけ見えたりもしません。
カレンダーで指定というのは、1日からじゃない場合もあるてことなのかな。常に1日から月末ならShinさんのようにすれば=でリレーションできてぐ~
日付範囲でやるなら全部日付でやるべき。テキストにして+100が1カ月なんてのは、わかりにくすぎ。
チポさんありがとー
とぴとは外れますが
たとえば
今日のデータが明日になったら変わってほしい計算(動的に変動する計算)は非保存、
売上のように「あのときの売上た日」のような変えたくない計算なら、データとして保存していいので索引保存という認識でいいのですよね!?
けっこうあぶないっぽ
取得関数の多くは(全てか?)
それを使った計算フィールドを非保存としないと、
その値が更新されません。
また、
グローバルフィールド、リレーション先の参照フィールドを使うと非保存となります。
ですから、
これらを使った計算フィールドは照合先のリレーションキーにはなり得ませんね。
Offline
すどうさん、回答から外れてすみません
チポさん、
やはり、そうなんですね;;
照合先が非保存に該当するフィールドは、リレーションで照合せずに、
検索で参照すればよいのですね。いぜん、動的なデータを照合しようと思い
非保存同士をkeyにして、そうとうな時間、戦って敗れたのでこりちゃいました。
商品別で時期(期間指定)や状態によって変わる賞味期限(計算)日数と、販売
してから賞味期限残り何日という計算に苦情対応猶予日を足した日数とを必死に
リレーションで照合しようとした事がありました。
なんだか後ろ向きなものだったし、出来なくなって検索参照にしましたが・・・
でも、たまに非保存の動的なkeyで組めたらいいなと思うこともあります。
予測値とか、相関とか若干曖昧な数値だけど、日々動いている中で、動的数
値同士を参照させたいなって・・・
できないから仕方ないけど
環境説明が無いけど、
ポータルフィルターが使えれば、照合条件を計算式に置換できるので、
条件キーフィールドの索引の有無に関わらずどうにでもなります。
Offline
Hiroさん、ありがとーございます。
環境はfm11 win7です。
生まれてはじめて知りました。
ずーっと気にもせずに使ってました。
書きこんでよかったです!
いつの間にかこんなに!(笑)
実は一アルバイトなので前回の書き込みから
初出勤なのでやっと見ることができました。
みなさまさまざまな回答ありがとうございます。
高度すぎて??が浮かぶものもありましたが、
一度shin様のやり方でやってみたいと思います。
また結果報告させていただきます!
月単位で集計するのでしたら、
Aテーブルには、Year ( タイムスタンプのフィールド ) * 12 + Month ( タイムスタンプのフィールド ) という計算フィールドを作ります。
Bテーブルには、Year ( 集計年 ) * 12 + Month ( 集計月 ) という計算フィールドを作ります。
この2フィールドでリレーションするのが一番簡単でしょう。(* 12 は意味が有りますが、目で見やすくしたければ、* 100 でも構いません)
shinさま
何個か質問させていただきます。
集計年と集計月は既存のフィールドを使うのか
新しく作るのかどうしたらいいのでしょうか?
両方の計算フィールドなんですが、
計算結果は日付のほうがいいのでしょうか?
リレーションは
=でその二つだけを結び付ければいいでしょうか?
質問を書いていて自分でも恥ずかしくなるぐらい
知識なくて落胆しています、、、
すみませんがよろしくお願いします。
そして、いちたすにさま
わざわざ作っていただいてありがとうございました!
見て説明なども書きこまれていて感動しました。
このファイルからも学びたいと思います。
おこがましいですが、
もう少し質問させていただきます。
この月間売り上げを別テーブルでグラフ(折れ線か棒グラフ)にしたいのですが
区切りは年間でしたいと思っています。
一か月分を一レコードにするしか方法はないのでしょうか?
そうするとレコードとして保存を忘れたり、
重複して保存をしてしまうことになるのではないかと
いろいろ考えています。
これをクリアできたら年間売り上げもできるのではないかと
思っていますのでぜひご教授いただきたいと思います。
上の式は、数字で返りますので、そのままで使うといいでしょう。
年間で集計するのでしたら、Year ( タイムスタンプのフィールド ) だけで集計していくと良いでしょう。
Offline
shinさま
私なりに理解してやってみたのですが
うまいこといかずとりあえず合計はあっているので
既存の方法をとることにしました。
一応本も買って勉強してたのですが一か月の付け刃ではだめですね、、
もっと勉強してこちらに書いてある文章が理解できるようになりたいと思いました。
またお世話になるとおもいますがよろしくお願いします。
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 601.58 KiB (Peak: 618.48 KiB) ]