8 返信 最新の回答 日時: Mar 9, 2014 6:36 AM ユーザー:coyayac

    千円単位での表記方法

    coyayac

      タイトル

      千円単位での表記方法

      フォーラムに投稿

           数値項目を千円単位で表記する方法はありませんでしょうか?

           計算フィールドを作成して、「元フィールド値÷1000」などとすれば良いとは思うのですが、小計や合計の集計をしておりその集計結果も「1円単位で集計してその結果を1000円にまるめる」としたいので、明細単位で1000円単位にまるめてしまうと集計結果に誤差が生じてしまいます。

           そのような場合の良い方法はありませんでしょうか。

        • 1. Re: 千円単位での表記方法
          coyayac

               すみません、計算フィールドで単純に1000で割っで、印刷時の書式で"小数点無し"にすればなんとななりそうです。

               お騒がせいたしました、、

                

          • 2. Re: 千円単位での表記方法
            sago350@未来Switch

                 こういう計算式を書けばなんとかなるかと

            Int( 数字 / 1000 )
                 だと
                 39800→39(切り捨て)

            Ceiling ( 数字 / 1000 )
                 だと
                 39800→40(切り上げ)

            Round ( 数字 / 1000 ; 0 )
                 だと
                 39800→40(四捨五入)
                 39200→39(四捨五入)

                  

            • 3. Re: 千円単位での表記方法
              coyayac

                   sago35さん

                   いつもアドバイス助かります。

                   頂いた関数は今後も参考にさせていただきます。

                   今回は、フィールド値を1000で割って、上捨て四捨五入などはせずに小数点まで持ち、表示で少数は表示しないとしました。

                   売上小計 999,999  <− 集計フィールド

                   ...

                   売上合計 999,999  <− 集計フィールド  

                   の明細を印刷するのですが、レコード単位で丸めた結果で集計すると誤差が大きくなりなりそうでしたので、集計は1円単位で行い表示上のみ1000円単位となれればと思いました。

                   本当は全てで四捨五入表記にしたかったのですが、今回は上記理由から切捨て表記で妥協しようかとおもいます。

                   ほんとうは書式設定で、1000単位 が設定できれば良いのですが、、

                    

              • 4. Re: 千円単位での表記方法
                Shin

                     Round ( 数字 ; -3 ) とすると、3桁目で四捨五入になります。

                     Truncate ( 数字 ; -3 ) にすると、3桁目で切り捨てになります。

                     このいずれかでいいのでは。 

                • 5. Re: 千円単位での表記方法
                  sago350@未来Switch

                       内部的な計算は今のままで、表示だけ計算フィールドで四捨五入出来ればいいんだけど、集計フィールドに対してRound ( 数字 / 1000 ; 0 )とすると計算結果がおかしいので、困っているんでしょうか?

                       だとすると、下記のように書くことで解決出来ます。
                  Round( GetSummary ( 数字 合計 ; 区切り ) / 1000 ; 0 )

                  • 6. Re: 千円単位での表記方法
                    coyayac

                         sago35さん

                         こまっている内容は、頂いた内容と重複しますが、添付の「H列」のように表示したいのですが、明細で丸めてしまうと「I列」のように

                         なってしまい実際とズレてしまう(赤文字の部分)という内容になっています。

                    Round( GetSummary ( 数字 合計 ; 区切り ) / 1000 ; 0 )

                         マニュアルより:データベースファイルが< 区分けフィールド>を基準にソートされている場合、現在のレコード範囲で指定した集< 集計フィールド>を返します。

                         こんな関数があるのですね。

                         組み入れてみたのですが、値がうまく表示されませんでした。(私の入れ方が悪いのですが、、)

                         区切りを指定するということは、計の階層(小計、中計、大計、総計などがあります)毎に作るような感じになるのでしょうか。もう少し試してみようとおもいます。

                         ただ少し内容は違ってくるのですが、今は以前に教えて頂いたように「明細のテーブルに集計フィールドを付与して」各種集計表を作っているのですが、集計フィールドで構成した帳票の結果を「excelファイルとして保存」した時に、「総計」の内容のみがexcelに複数行書かれるのみで全く使い物にならないのですが、 GetSummary ( 数字 合計 ; 区切り ) で、集計結果を別テーブルに書き出してから印刷するようにすればexcelにも結果が落とせそうですね!

                    • 7. Re: 千円単位での表記方法
                      sago350@未来Switch

                           区切りが複数あったのですね。
                           なので、そのフィールドも複数作ると上手くいくかと。

                      サンプルファイル

                      • 8. Re: 千円単位での表記方法
                        coyayac

                             sago35さん

                             サンプルまでご用意くださってありがとうございます。よく分かりました。

                             私のFM(ver13)にも、もう一度組み込んでみたのですが、やはり何も表示されませんでした(0すら表示されない)。これはこちらのFMの環境のせいかとおもいます。

                             本稼働後にプログラム修正などのでの入替を安易にできるように「データ用」と「プログラム用」でFMのファイルを分けていて、プログラム用の方にはテーブルはなくリレーションシップのみ、といった環境になっています。なのでデータ用のファイルの方に頂いた内容に必要なリレーションとgetsummaryの計算フィールドを組み入れてみたのですが、そのせいでデータ用の方ではgetsummaryで値を取得するタイミングが取れないのでは?と想像します。

                             色々勉強になりました。ありがとうございます。