整数に小数点以下を入力する方法
お世話になっております。
現在、小数点以下が0だったらN8CZで0じゃなかったらN8.2CZ
という書式にしているのですがこの式だと既に整数が入力してある場合、
付け足す形で小数点以下を入力しようとしても
N8CZという書式になっているので小数点以下の入力が出来ず、
一度クリアしてから打ち直す必要があります。
小数点以下が0の場合は0表示したくないという意図でこの式に至っているのですが、
小数点以下の付け足し入力が出来ないので何か別の方法はないでしょうか?
ご存じの方いらっしゃれば教えて頂きたいです。
-
私なら、そのエディットにバーキングした時、は書式 N8.2CZ
そこを離れて、
小数点以下が0かどうかで、式を切り替えます。
式を整理しますと
IF( パーキング中変数True or fix( 数値、0,2)<>0、’N8.2CZ'、'N8CZ' ) -
nkmtさん、コメントありがとうございます。
記述を教えて頂きありがとうございます。
この場合、パーキング中変数というのはLastParkで項目にパークがあったときフラグがTrueになるみたいな
つくりでしょうか?
-
コントロール前 単価
項目更新 V_単価パーク中 True
コントロール後 単価
項目更新 V_単価パーク中 False
みたいな事は時々やります。
もしかすると、効率が悪い・・・かもしれません。
パーキング把握変数を自ら用意しなくてもLastPark(0)=’○○’で自身にパーキング中か
判断できるかもしれませんが、試さないとほんとの所はわかりません。 -
nkmtさん、コメントありがとうございます。
なるほど、そういったパーク認識をされているのですね。
私の方でもLastParkで作成したのですが、どちらか一方の書式で確定されてしまい
上手く切替が出来ませんでした。私の作り方もあるかもしれませんが、、、。
一度nkmtさんの式を利用させて頂きます。
-
nkmtさん、出来ました!ありがとうございます。
今後も使わせて頂こうと思います。
LastParkは記述が難しかったので、もう少し技量が上がったらまた挑戦してみようと思います。
ありがとうございました。
-
yamamotoさん
こんにちは
私なら文字型にします。
書式を桁数分「#」にし、右寄せです。
で、
小数点を制御するには、コントロール後処理を使います。
1で割って余りが無いなら整数、0.1で割って余りが無いなら小数点1位とかですかね。
余談ですが、日付も文字型にしています。
変数は文字型と日付型の両方を用意し、
コントール後処理で、変換サブルーチンをコールして日付型にセットし、
その日付型から文字型へ変換します。
ユーザーが「3.6」と入力した場合、未来なのか過去なのかは判断する必要がありますが、2024/03/06と変換できます。なお、Rを入力したいので、書式は16のままです。
-
sudoさん、こんにちは。
スレ主ではありませんが・・・
私はFIXで小数点以下有無を判断してましたが
数値 MOD 1 での判断の方が記述も
少ないと思いますのでいいですね。
情報ありがとうございました。 -
sudoさん、コメントありがとうございます。
理解が及ばず申し訳ないのですが文字型だと計算が出来なくなるのではと思いました。
計算式はEvalStr関数で書くとか、AStrで数値型に変換したもので計算するとかそういった工夫が必要になるのでしょうか。
-
計算式は、C=コントロール・S=後のトリガーで記述します。
(EvalStr・Astr関数、記憶にございませんでした。)
使えそうですが、私が理解していないので、私が知る範囲で記述すると、
例として、数値型変数Cを用意し、VAL(変数A,'5.2')+VAL(変数B,'5.2')
画面表示項目にSTR(変数C,文字表示式)
文字表示式はIF(変数C mod 1 ,'5',IF(変数C mod 0.1 ,'5.1','5.2'))
項目がたくさんある場合は、再計算処理をサブルーチン化ですかね。
ちなみにサブルーチンは、
子タスクに処理内容を記述してコールさせる方法と、
ユーザイベント「再計算(トリガータイプ:無)」を定義し、
再計算イベントに処理内容を記述し、各項目のコントール後処理で再計算イベントを起動する方法があります。
サインインしてコメントを残してください。
コメント
10件のコメント