みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
テーブルに
入金 出金
AAA 150
AAA 100
BBB 200
BBB 100
とあるとき
AAA 50
BBB 100
と表示させるには、計算フィールドをつくり
自己リレーションさせて、AAAやBBBのなかでIDがもっとも大きいレコードにだけ
SUM(入金) - SUM(出金) という計算をさせて
検索条件をその計算フィールドに何か入力されていたら、などの条件で絞り込んだ
レイアウトを作成すればよいのですか?
書き間違えていたようでテーブルが多くなってしまっていました
伝票テーブル
伝票ID
日付
金額(販売テーブルの同伝票IDのSUM)
販売テーブル
販売ID
伝票ID
商品ID
販売(金額です)
担当者
担当者歩合
作業テーブル
作業ID
作業内容ID
担当者
担当者歩合
です
作業というのは何からの作業業務を行った担当者へ支払う金額のテーブルです
伝票テーブルは入力用にあるだけ、といった感じですか?
合計金額や集計するときには、伝票テーブルは使わずに
明細テーブルだけでやる、ということですよね?
ちょっと勘違いしていました
そもそも伝票テーブルが不要ということなんでしょうか?
販売テーブルに直接すべて入力するような感じですか?
伝票ID 商品ID 販売 担当者 担当者歩合
001 1 100 A 10
001 1 100 B 10
002 A 200
の
002 A 200
の多レコードは別テーブルということですか?
伝票テーブル = 販売テーブル
= 担当者歩合テーブル
ですか?
1伝票に対して多販売レコードがあり、そのレコードにそれぞれ担当者がつくことがあります
伝票テーブルでみると
伝票ID 販売 担当者歩合
001 200 20
となります
1伝票に対して同じ担当者で、多レコードがある入力もありそれは
伝票ID 002
作業ID 担当者 担当者歩合
1 A 100
2 A 100
このような感じです。担当者が変わるときには伝票を変えます
伝票テーブルでみると
伝票ID 販売 担当者歩合 担当者
001 200 20
002 200 A
となってしまうので、伝票テーブルを元に集計するときに、
担当者ごとの歩合の合計などが求められないということです
伝票テーブルの存在価値がなくなりそうですが
すべての販売テーブルから行えばよいのでしょうか?
一日に数百は増えていくのでレコード数が多くなる販売テーブルで直接、他テーブルを参照した計算や
フラグ処理などをやっていたら、レコードが増えたときに、いちいち全レコード再計算されるので
動作が心配です
販売テーブルに伝票テーブルから入力をするのですが
伝票ID 001
商品ID 販売
1 100
1 100
すると、販売買取伝票テーブルには
伝票ID 販売
001 200
というレコードを作成することができます
ここからが少し特殊かもしれないのですが、
伝票ID 001
商品ID 販売 担当者 担当者歩合
1 100 A 10
1 100 B 10
※担当者歩合とは歩合で担当者に払う金額で10%です
としたときに、
伝票ID 販売 担当者歩合
001 200 20
となります
さらに、別途、
伝票ID 002(これは担当者はレコード中1人です)
作業ID 担当者 担当者歩合
1 A 100
2 A 100
というレコードも入力するので、伝票テーブルには
伝票ID 販売 担当者歩合 担当者
001 200 20
002 200 A
といった性質のレコードも作成します
これとの整合性がとれません
伝票001では担当者ごとに別れていないのに、伝票002では別れているということです
担当者ごとの集計や商品IDごとの利潤を計算するには
伝票テーブルをなくして、直接販売買取テーブルに入力したほうがいいのでしょうか?
もしかして、こういったときに使うのが、繰り返しフィールドということになるのでしょうか?
伝票001の担当者に関しては繰り返しをつかって、値を取得してA,Bとするような
ポータル内のクリックしたレコードの関連レコードをポップオーバーで表示させたいんですが
どうやったらいいのですか?
ポータルにレコードが並んでいて、クリックで別レイアウトの関連レコードへ移動させているのですが
できるならすっきりさせるために同じ画面で表示させたいので
ポップオーバーに関連レコードを表示させたいです
ポップオーバー内にポータルを配置しようとしましたができませんでした
どのようにしてら解決できるでしょうか?
過去スレをみましたがレイアウト的にはレコードをクリックしたときだけ表示されれば良いので
希望どおりにできません
WIN10 FMP 16です
みなさんは、レイアウト毎にテーブルオカレンスを分けて作成されていますか?
使いまわせるオカレンスはそのまま複数のレイアウトでつかいまわしますか?
たとえば、売上入力、請求書作成、請求履歴閲覧のレイアウトをつくるときなど
リレーションを増やせばどちらのレイアウトにも対応できるような場合があると思います
そのときにレイアウトごとに分けたほうがよいのでしょうか?
それともひとつのオカレンスを利用していくつものレイアウトを作成したほうがいいのでしょうか?
なるほど
スクリプトでフィールド移動をしてそのフィールドの次のTAB順にいくのではなく
スクリプトトリガされたフィールドの次にいく
ということなんですね
Shinさん、
スクリプトで、一度金額合計フィールドに移動しているので、次のタブ順はポータルの1行目になるのではないですか?
マウスで金額合計フィールドをクリックした後にTABキーを押すとポータルの1行目になります
しかし、スクリプトで
フィールドへ移動[金額日計]
をやると、ポータルの次のフィールドに移動するのがなぜかわかりません
Evaluate ( "Sum(詳細T::金額)" ; 詳細T::個数 )
とすれば、個数が訂正されたときに更新されるからたしかにトリガいりませんね
どちらを使ったほうがよいか、ということなら
計算式でやったほうがいいのでしょうか?
むしろスクリプトは
フィールドへ移動[金額日計]
だけでも動作(数値変更時に更新される)するようです
>tabキーをそのフィールドで押した場合、
>そのキーでトリガされ、スクリプトを実行、
>その後、キーの動きをします。
とのことですが、この場合だと、
動きとしては
個数フィールド→トリガ→金額合計フィールド に移動(クリックしたのと同じですよね?)→TABキーの動作→ポータル1行目
となるはずじゃないんですかね?
なぜ次のフィールドに移動できるんでしょうか?
みなさんサンプルなどアップされますので、良いのかと思っていましたが
だめだったんですね
>最後にtab順次のフィールドへ移動して終わっているはずです。
トリガではそのようになりますが、
手動でやると、ポータルの1行目に移動してしまいます
なぜトリガではポータルの、トリガ発動フィールドの次のレコードのフィールドになり
手動では1行目に移動するのですか?
動作的には次フィールドに移動することで問題ないのですが
原理がわかりません
チポさんにご指摘頂きましたが
なぜか先述の方法で問題なく動作しているようです
検証していただきたく、サンプルをアップしましたのでよろしかったら
お願い致します。
http://fast-uploader.com/file/7054623289955/
(アップローダーで検索してはじめにでたところにアップしました)
金額合計を伝票テーブルに作成すると、新規作成時には更新されましたが
既存レコードの変更時には更新されませんでした
>日付フィールドに入力後TABキーを押すと
>ポータルの次の行の個数フィールドがアクティブになるのはなぜでしょうか?
これについてはなぜでしょうか?
チポさんのトリガでやる、というのをなんとか
やってみましたがこれであってますか?
フィールドへ移動[金額日計]
レコード/検索条件確定
を個数フィールドのトリガEXITにしたら一応やりたいことはできてるように見えます
ひとつ疑問なんですが
金額日計フィールドへ移動を実行しているのに
日付フィールドに入力後TABキーを押すと
ポータルの次の行の個数フィールドがアクティブになるのはなぜでしょうか?
動作的にはこちらのほうがよいので問題ないのですが、本来なら金額日計かその次のTAB順のフィールドが
選択されるのではないですか?
手動で金額日計フィールドを選択してTABキーを押すとポータルの1行目に移動するようです
Shinさん、
単価表は明細テーブルと単価IDでリレーションしています
ちなみに画像の場合の単価は
IF ( 個数 > 0 ; ( 個数 * 50 ) + ( 250 ) ; 0 )
としています
これが単価?という指摘を受けて気がついたのですが、単価といういいかたは間違っているかもしれませんね
計算種別とでもいいましょうか。
これは、取引先やその業務によってバラバラ(今後増えたりする)なので計算式などで分岐させるのではなく単価表からひっぱってくる形にしています
例えば、個数ではなく、重量*5円 や歩合制 などというものもあったり、複雑なのでそうしています
日付で自己リレーションしているのは間違いでした売上IDでやるように修正しました
伝票側で金額合計を出すにはどうやったらいいのですか?
一応、画像をアップしました
間違っているところがあったらよろしくお願いします
アドバイスいただきましたがうまくできません
うまく伝えきれていないかもしれないので、もう一度質問させてください
【伝票テーブル】
【明細テーブル】
があり、【明細テーブル】の【金額フィールド】はEvaluate ( 単価表::単価 )としています
【明細テーブル】の【日付フィールド】で自己リレーションして、
上記【金額フィールド】の合計を計算する【合計金額フィールド】があります
【伝票テーブル】に【明細テーブル】のポータルと、上記の【合計金額フィールド】を配置します
ポータルに入力したとき、修整したとき、削除したときに、その【合計金額フィールド】が更新されません
一度【合計金額フィールド】をクリックすると更新されます
即時に【合計金額フィールド】が更新されるようにしたいです
ちなみに、ポータルではなく【明細テーブル】のレコードを直接編集すると、
即時【合計金額フィールド】は更新されています
Evaluate ( 単価表::単価 )
とある場合どうやればいいのですか?
Evaluate ( 単価表::単価 ; 個数 ; 金額 )
とすると、個数と金額フィールドが変更されたときに
自己リレーションの合計も再計算されるということなのでしょうか?
やってみましたが、動作はかわりませんでした
新規レコード作成時はポータルを出る
レコード修整時には合計フィールドに入る
ということをしないと更新反映されません
そうです。単価というには語弊があるかもしれません
請求金額の算出方法です
式は例として書いたので実際のものとは違いますが
下請けなもので元請けの金額に対して、いくら、というものを計算する必要がありますので
このように変なものになっています
要するに、取引先または取引先ごとの業務内容によって
計算種別が複数あるので、それをマスタに登録しておき、呼び出して計算させるために
Evaluate関数をつかっています
もっと良い方法があったら教えてください
一般的にはどうやるものでしょうか?
取引先によっては単価が100円で単純にかけけるだけ、というものもあります
そもそもEvaluate関数だとポータル入力後に即時確定されないのでしょうか?
いまいちまだ理解できておりません
チポさん的にはリレーションでやったほうがよいということですか?
ところで
集計を別テーブルで管理とはどのようなことでしょうか?
リレーションしている単価表に格納する単価が
( 個数 × 100 ) + ( 金額 × 0.7 )
金額 × 0.9
とかそういったものばかりなので、Evaluate関数が必要だと思ったのですが
他の方法ありますか?
ポータルのフィールドに入力するたびにレコード確定のスクリプトをうごかす
ということですか?
ポータルを配置してその上に自己リレーション(キーは日付)で金額合計を表示させています
単価を計算式で定義しているので、各レコードの金額フィールドの計算式には
Evaluate ( 単価表::単価 ) をいれています
ポータルにレコードを追加してポータル以外をクリックすると、上記の金額合計が更新されます
ポータルでレコードを修正すると、その金額合計フィールドをクリックするまで更新されません
いずれもポータルに入力したら即時再計算させるにはどうしたらよいですか?
連続入力時つまり「直前」だけでしたので、今回は大丈夫だったようです
みなさまありがとうございました
[ Generated in 0.010 seconds, 7 queries executed - Memory usage: 717.15 KiB (Peak: 755.05 KiB) ]