- ベストアンサー
VB初心者が四苦八苦!小数点以下の表示でつまづいています(涙
- VB初心者がMicrosoft Visual Studio / ActiveReportで帳票を作成しています。DBからの値が小数点以下ありの場合はそのまま表示し、小数点以下が0の場合は整数部分のみを表示したいという問題について解決策を教えてください。
- 質問の値は小数点第一位までで、#.0の場合は#と表示し、#.1~9の場合はそのまま表示したいです。稼働環境はWinXP、Win7です。イメージとしては『H_数量』という値部分です。
- 既に別の条件として、H_数量が0.00の場合にH_数量とH_単価をクリアするコードを書いていますが、このH_数量が問題の値部分です。H_数量の値が小数点以下ありの場合または0の場合で条件分岐したいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>H_数量.Text = Format(H_数量.Text, "#,##0") >は、全行 #,##0 と表示されてしまいました。 こちらは、.NETじゃないので確認はできませんが、 H_数量.Text = Format(Val(H_数量.Text), "#,##0") のようにValを付けてみてください。 Val関数は、文字列を数値に変換する関数です。 Format関数は、本来は数値を文字列に変換する関数です。 VBは数値が入っている文字列も数値と解釈されることがあるため、Valを使わなくても大丈夫でしたが、 .NETではそれがダメなようです。 ただ、他の言語にしてみればそれが普通なんですけどね。
その他の回答 (4)
- o_chi_chi
- ベストアンサー率45% (131/287)
>If H_数量.Text = Fix(H_数量.Text) Then >H_数量.Text = Format(H_数量, "0") >End If 判定は不要だと思いますが。。。 VB環境がないので確認できませんが msgbox Format(1.0#, "0") で確認してください。
お礼
またまたありがとうございます。 環境は、.netです。 そうすると話が変わってくるような気もするのですが。 情報少なくてすみませんでしたm(__)m
- nag0720
- ベストアンサー率58% (1093/1860)
H_数量.Text = Format(H_数量.Text, "0.0") If Right(H_数量.Text, 2) = ".0" Then H_数量.Text = Format(H_数量.Text, "0") End If ではどうですか。
お礼
ありがとうございます。 結果としては、ダメでした。 H_数量 の欄が全て『0』となってしまいます。 環境は.NET なのですが、この環境ではFormat関数をこのように使うことは出来ないのでしょうか・・ 単純に、 H_数量.Text = Format(H_数量.Text, "0") を試すと、全行 0 H_数量.Text = Format(H_数量.Text, "#,##0") は、全行 #,##0 と表示されてしまいました。 引き続きアドバイスお待ちしております。
- o_chi_chi
- ベストアンサー率45% (131/287)
下記ではダメでしょうか --- Format(H_数量,"0.#")
お礼
ありがとうございます。 整数部分のみ表示したいので、Format(H_数量,"0.#")ではなく、 ● If H_数量.Text = Fix(H_数量.Text) Then H_数量.Text = Format(H_数量, "0") End If ● If H_数量.Text = Fix(H_数量.Text) Then H_数量.Text = Format(H_数量, "#") End If としてみましたが、どちらもダメでした。 Fix(▲▲) 、 Format(◆◆) 関数の後にくる▲▲と◆◆がダメなのでしょうか? H_数量 は、帳票上のTextBox で Datafield = 数量 「数量」はDBのフィールド名です。 例にあげたコード If H_数量.Text = "0.00" Then H_数量.Text = "" H_単価.Text = "" End If 』 (H_数量が0.00の時、H_数量欄とH_単価欄は空欄にする) はちゃんと動いているのですが。。
- yhc3594
- ベストアンサー率27% (25/92)
元の値の小数部を切り捨てた値と元の値を比較して、同一の場合は小数部0と判定すれば 良いと思います。 例.If H_数量.Text = FIX(H_数量.Text ) THEN という感じです。
お礼
さっそくありがとうございます。 ただ、私の力ではコードが完成しません(><) If H_数量.Text = FIX(H_数量.Text ) THEN H_数量.Text = Fix(H_数量.Text) End If でしょうか? しかしこれでは帳票が表示できませんでした。 THEN のあと、 H_数量 の整数部分のみ表示 するコードはどう書けば良いでしょうか? 初心者過ぎてすみません!!
お礼
nag0720様! できました!!! ありがとうございます(≧▽≦)~~~!!! これで少数桁ありなし用で2枚用意していた帳票が1枚で済ませられます。 また、今回質問したことで色々勉強になりました。 本当にありがとうございました☆☆☆ それから、環境も書かずに質問して皆様にお手間を取らせてしまったこと、 この場をお借りしてお詫びいたします。 初心者ながら、そういう基本的なところは今後気をつけたいと思いますm(__)m