コンポーネントからのテーブル列に対しての小数部分の桁数指定・丸めモードの指定方法について

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 コンポーネントからのテーブル列に対しての小数部分の桁数指定・丸めモードの指定方法について

9 件の投稿を閲覧中 - 1 ~ 9 件(全 9 件)
  • 著者
    投稿
  • #5226
    1261s-tateyama
    一般参加者

    客先毎の売上をテーブルを作製していますが、
    単価は、小数点以下4桁 売上金額・消費税は小数点以下1桁に固定、
    丸めモードは、客先により四捨五入や小数点切り捨てなど切り替えが必要です
    コンポーネントよりの小数点以下の指定及び丸めモードの指定方法をご教授ください
    (売上金額と消費税はSQL内で計算させています)

    テーブル→右クリック→列→表示属性(実数)→表示形式→少数部分の最大桁数と少数部分の最小桁数は1回指定しても次にテーブルを表示させると前の指定した数値に書き換わってしまいます
    丸めモードも、同じで前回指定した数値に書き換わります

    MZバージョンは3.6です
    念のためにヘルプのバージョンの画像添付いたします

    #5228
    MZPlatformユーザー会
    サイト管理者

    テーブルの実数型の列に対して丸めモードと小数部分の最大または最小桁数を指定する場合は、下記のメソッドをお使いください。日本語化されていないので、全メソッド対象のチェックを入れると選択できます。

    setNumberColumnRoundingMode(int,int)
    setNumberColumnMaximumFractionDigits(int,int)
    setNumberColumnMinimumFractionDigits(int,int)

    すべて2つ目の引数が列位置の指定です。丸めモードと最大または最小桁数は1つ目の引数で指定します。丸めモードは1が切り捨て、4が四捨五入などとなっています。詳細は付属のJavadocをご覧ください。
    C:\MZPlatform\3.6\docs\javadoc\jp\go\aist\dmrc\platform\beans\gui\table\PFTable.html

    なお、毎回表示するテーブルの列構成が変わらない場合は、画面上のテーブルに対して毎回「テーブルデータを設定する(PFObjectTable)」を実行するのではなく、「全行を削除する()」のあとに「行を追加する(PFObjectTable)」を実行すると、画面上のテーブルの列の設定が保存されます。列構成が変わらない場合はこちらの方が簡単ですので、状況に応じてお試しください。

    #5230
    1261s-tateyama
    一般参加者

    お世話になります。
    小数部分の最大・最小桁数の指定についてはうまく変更できましたが
    丸めモードが思ったように変更できませんので再度質問させていただきます。

    教えて頂いたメソッドの
    setNumberColumnRoundingMode(int,int)
    setNumberColumnRoundingMode(4,5)  4:四捨五入 5:5列目
    と指定していますが表示は変化しません
    これ以外になにか指定しなくてはいけないのでしょうか?

    試しに
    テーブル→右クリック→列→表示属性(実数)→表示形式→丸めモード→
     切り上げ・切り捨て・四捨五入と設定を変更しても表示が変化しませんが
     テーブルの内容は書き換わっているが表示が変化していないだけでしょうか? 
    小数部分の最大・最小桁数は、マウスクリックすると表示が変化します

    以上 宜しくおねがいします

    #5231
    MZPlatformユーザー会
    サイト管理者

    丸めモードの指定はそのメソッドを実行するだけです。

    表示が変化しない点については、モードが変化しても表示が変化しない値になっていないでしょうか。こちらで試した限りでは、問題ないように思いますので、今一度ご確認ください。例えば、四捨五入して切り捨てになる値は切り捨てモードでも変わりません。また、初期状態では四捨五入する場合に小数点以下4桁目の値で3桁目を決めています。これより少ない桁数の数は表示が変化しません。

    もし何らかの不具合であれば、それを再現するデータ例をお知らせいただければこちらでも検証しますので、ご検討をお願いします。

    #5232
    1261s-tateyama
    一般参加者

    お世話になります。
    丸めモードは、小数点以下4桁目の値で3桁目が決まっているのですね。
    表示が変化しないことが理解できました。

    丸めモードで小数点以下1桁目の値で、1の位を決めることは可能でしょうか?
    100.05⇒101.00という具合にできますでしょうか?

    #5233
    MZPlatformユーザー会
    サイト管理者

    丸めモードでは、小数点以下の最大桁数の指定で対象となる桁が変わります。初期状態では最大が3となっており、結果として4桁目(以降)の値で3桁目が決まります。

    小数点以下1桁目(以降)の値で1の位を決める場合は、最大を0とします。ただし、その場合は小数点以下は表示されません。この機能は実数の表示方法を指定するための丸めであり、最大指定した桁数以上の桁は表示できません。

    setNumberColumnMaximumFractionDigits(0,列位置)
    100.05⇒101

    #5237
    1261s-tateyama
    一般参加者

    お世話になります。
    ご指導のように小数点以下の最大値の指定を行いましたら丸めモードもうまくいきました
    ありがとうございました。

    次に
    丸めモードを行った際の各行の合計についてですが、
    現状 テーブル
       メソッド    指定列の列データーをリスト形式で取得する(int)
       取得方法    固定値      
       メソッド/値  5(出荷数×単価の列)

       基本統計処理(数値)
       メソッド    集計対象データを設定する(PFObjectList)
     取得方法    メソッド処理結果
       メソッド/値  指定列の列データーをリスト形式で取得する

       数値入力フィールド
       メソッド    文字列を設定した後、その文字列で値を確定する(String)
     取得方法    メソッド戻り値
       コンポーネント 基本統計処理(数値)
       メソッド/値  和を取得する

    この処理を実行すると、丸め前の合計を算出して、合計を四捨五入した値が数値入力フィールドに設定されていますが、
    丸め処理(四捨五入・切り捨て)を実行すると処理は正しく行われており、テーブルの表示も変わっていますがテーブル列の合計は書き換わりません
    丸め処理後の合計を求めたいのですが、どの様に変更したら良いのでしょうか?

    #5238
    MZPlatformユーザー会
    サイト管理者

    テーブルの丸めモードとは、表示を変えるだけの機能ですので、データは元のままです。丸めた後の文字列を使用する場合は、メソッド「指定セルの表示文字列を取得する(int,int)」を使用します。合計を出すためにはリストにする必要があるので、リスト格納変数と繰り返し制御(FOR)を使用して、丸めた後の文字列でリストを作成することになります。

    なお、最終的に丸めた値で計算をしたいのであれば、MZ側で複雑な処理をせずにSQL文の実行で丸めてしまった方が良いと思います。

    #5239
    1261s-tateyama
    一般参加者

    ありがとうございました
    SQL文で丸める方法を試してみます。

9 件の投稿を閲覧中 - 1 ~ 9 件(全 9 件)
  • このトピックに返信するには、ログインしてください。