みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:Windows 7、Ver:FileMaker Pro 12
軽減税率と標準税率の計算式について、私なりに考えて編集してみました。
フォームはパターンⅠとパターンⅡがあります。
パターンⅠはフィールドごとにそれぞれ作って配置したものです。
パターンⅡは繰り返しフィールドを使って配置したものです。
軽減税率フラグはテキストタイプで、「*」がついているのは軽減税率(8%)とします。
パターンⅠの計算式(タイプ:計算式、結果:数字)
★軽減税率(8%)
Int(If(軽減税率フラグ1>" * ";小計1;"")*.08)+
Int(If(軽減税率フラグ2>" * ";小計2;"")*.08)+
Int(If(軽減税率フラグ3>" * ";小計3;"")*.08)+
Int(If(軽減税率フラグ4>" * ";小計4;"")*.08)+
Int(If(軽減税率フラグ5>" * ";小計5;"")*.08)
★標準税率(10%)
Int(If(軽減税率フラグ1<" * ";小計1;"")*.1)+
Int(If(軽減税率フラグ2<" * ";小計2;"")*.1)+
Int(If(軽減税率フラグ3<" * ";小計3;"")*.1)+
Int(If(軽減税率フラグ4<" * ";小計4;"")*.1)+
Int(If(軽減税率フラグ5<" * ";小計5;"")*.1)
パターンⅡの計算式(タイプ:計算式、結果:数字)
★軽減税率(8%)
Int(If(軽減税率フラグ[1]>" * ";小計[1];"")*.08)+
Int(If(軽減税率フラグ[2]>" * ";小計[2];"")*.08)+
Int(If(軽減税率フラグ[3]>" * ";小計[3];"")*.08)+
Int(If(軽減税率フラグ[4]>" * ";小計[4];"")*.08)+
Int(If(軽減税率フラグ[5]>" * ";小計[5];"")*.08)
★標準税率(10%)
Int(If(軽減税率フラグ[1]<" * ";小計[1];"")*.1)+
Int(If(軽減税率フラグ[2]<" * ";小計[2];"")*.1)+
Int(If(軽減税率フラグ[3]<" * ";小計[3];"")*.1)+
Int(If(軽減税率フラグ[4]<" * ";小計[4];"")*.1)+
Int(If(軽減税率フラグ[5]<" * ";小計[5];"")*.1)
これで合っているのでしょうか。
もっとコンパクトな計算式があればご伝授いただきたくお願いいたします。
Last edited by aries106 (2019-09-01 09:59:11)
Offline
フラグは、テキストではなく、数値にしておくとシンプルになります。論理値として扱えますので、0かそれ以外、という判別式が成り立ちます。
ファイル構造そのものを変更すると、スッキリします。
これらは、伝票のテーブルにあるのだと思いますが、別に明細テーブルを作り、その中で1項目ごとに計算させて、それを最後に集計する、という構造の方がいいです。その場合、集計フィールドを作ってもいいですし、リレーションで合計してもいいでしょう。
今のままで構成したいのでしたら、繰り返しフィールドに持ち込むのでしたら(あまりオススメしませんが)、計算用の繰り返しフィールドを作り、そこで計算させ、それを合計する、という計算の方がいいです。計算式は1行ですみます。
Offline
フラグは、テキストではなく、数値にしておくとシンプルになります。論理値として扱えますので、0かそれ以外、という判別式が成り立ちます。
ファイル構造そのものを変更すると、スッキリします。
これらは、伝票のテーブルにあるのだと思いますが、別に明細テーブルを作り、その中で1項目ごとに計算させて、それを最後に集計する、という構造の方がいいです。その場合、集計フィールドを作ってもいいですし、リレーションで合計してもいいでしょう。今のままで構成したいのでしたら、繰り返しフィールドに持ち込むのでしたら(あまりオススメしませんが)、計算用の繰り返しフィールドを作り、そこで計算させ、それを合計する、という計算の方がいいです。計算式は1行ですみます。
Shinさま、ありがとうございます。
画像は見れなかったのでしょうか?
Offline
見えませんでしたが、見当はつきます。
明細は、別テーブルにしましょう。
Offline
フラグは、テキストではなく、数値にしておくとシンプルになります。論理値として扱えますので、0かそれ以外、という判別式が成り立ちます。
軽減税率フラグにテキストタイプを数字タイプに変更しました。
ファイル構造そのものを変更すると、スッキリします。
これらは、伝票のテーブルにあるのだと思いますが、別に明細テーブルを作り、その中で1項目ごとに計算させて、それを最後に集計する、という構造の方がいいです。その場合、集計フィールドを作ってもいいですし、リレーションで合計してもいいでしょう。
明細テーブルとは商品リストなどのマスタデータベースでしたらあります。
そのような構造なのか、集計フィールドを別に作るということでしょうか?
今のままで構成したいのでしたら、繰り返しフィールドに持ち込むのでしたら(あまりオススメしませんが)、計算用の繰り返しフィールドを作り、そこで計算させ、それを合計する、という計算の方がいいです。計算式は1行ですみます。
計算用の繰り返しフィールドとは「消費税額試算」という繰り返しフィールドにありますが、そうじゃないでしょうか?
計算式は1行ですみますと書いてありますが、どうもわからないのでご教示いただければと思います。
よろしくお願いいたします。
Offline
両方のパターンの明細1行を別テーブルの1レコードにする。
これがShinさんのお薦めです。
私も同意ですが、それがDBの正規化につながりますね。
フラグを数字に変更したということですが、
変更したら、その値も数値にしないと意味がありませんよ。
フラグの判定に不等号を使っていますが、
> 軽減税率フラグ1>" * "
> 軽減税率フラグ1<" * "
これではフラグに「*」が入っているとどちらも偽になりますよ。
前後にスペースが入っていますが、これは間違いですよね。。
Offline
回答がわりに、2通りの構成を入れたサンプルです。
https://www.dropbox.com/s/eo7n128ig2qma … 2.zip?dl=0
Last edited by Shin (2019-09-02 11:11:11)
Offline
Shin先生、チポ先生
ご教示ありがとうございます。
ご教示内容もしくはサンプルファイルを見ながら勉強することができました。
これで解決といたします。
こんごもどうぞよろしくお願いいたします。
Offline
Pages: 1
[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 526 KiB (Peak: 546.91 KiB) ]