• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB初心者。小数点以下の表示でつまづいています(2)

VB初心者が小数点以下の表示でつまづいています

このQ&Aのポイント
  • VB初心者が、小数点以下の表示で問題が発生しています。質問内容を修正して再質問しました。
  • VB.NET環境のMicrosoft Visual Studio / ActiveReportで帳票を作成しています。DBからの値が小数点以下ありの場合はそのまま表示し、.00の場合は整数部分のみを表示させたいです。
  • 前回解決した際のコードでは、小数点左が9桁に対応できませんでした。どのようにコードを書けば良いでしょうか?アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kazne
  • ベストアンサー率66% (8/12)
回答No.3

はい、こんにちわ。 質問の意味が少しわかりづらいですが、 ようは、整数9桁、少数2桁で、ちゃんときれいに表示されればいいって事ですよね?たぶん・・・ Me.TextBox1.Text = Format(CDbl(TextBox1.Text), "###,###,##0.##") 以上です。

szsznow
質問者

お礼

お礼が遅くなりました。 結果をご報告しますと、一番やっかいなヤツでは実現できませんでした。 他の部分のコードまで理解していないと実現できないのかもしれません。 私は知識不十分な上に、編集のために部分的にソースをいじっているだけなので、 全体を把握できていませんので。 ここの部分はもう少し格闘します(><) しかしそれ以外の簡単な帳票ソースでは実現できました! シンプルなコードでキレイに収まり、イイ感じです☆ やっかいなヤツ以外、解決です!! 本当にありがとうございました。 またお世話になるかもしれませんが、どうぞよろしくお願い致しますm(__)m

その他の回答 (4)

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.5

>小数点左が9桁には対応できません。 具体的にどうなりますか? H_数量.Textに最大文字数の制限とかしていませんか? あるいはActiveReportの定義上で文字数の制限があるとか、 帳票出力する項目の定義上文字が出力範囲外になってしまって、見えていないだけとか。 画面ならmaxlengthというプロパティを確認するのですが、 ActiveReportは持っていないのでどういうプロパティかわかりませんが。 ?val("123456789012.34")が 123456789012.34 ?format(val("123456789012.34"),"0.00")が "123456789012.34" と表示するので、桁落ち問題ではなさそうですが。 ちなみに、 ?Format(cdbl("123.40"),"###,###,##0.##") "123.4" で、よい。 "123.40" と出さない。ということなら、ANo.3の方の回答の方がシンプルでいいと思いますけど。 VBAと違って、VB.net(2005で試してますけど)は ?Format(cdbl("123.0"),"###,###,##0.##") が "123." とならずに "123" となるようですから。

szsznow
質問者

お礼

お礼が遅くなりました。 結果をご報告しますと、一番やっかいなヤツでは実現できませんでした。 しかしそれ以外の簡単な帳票ソースでは実現できました! アドバイスどうもありがとうございました。 またお世話になるかもしれませんが、どうぞよろしくお願い致しますm(__)m

szsznow
質問者

補足

すみません、補足に失礼します。 質問者のszsznowです。 別件に手を焼いていたため、ご回答、まだ試していません。 まずはご報告と思いましてレスしました。 確認しましたらまたご報告いたします。 ありがとうございました。

  • kazne
  • ベストアンサー率66% (8/12)
回答No.4

あと、補足というより、アドバイスです。 このぐらいの事で、IF判定による分岐処理とかやめたほうがいいです。 文字列操作・Format関数 あたりでぐぐれば、沢山関連情報がでてきますので そちらを一読されることを強くお勧めします。 今回、分かりやすいだろうと思い、Formatを使いましたが、 .NETには文字列操作のやり方が複数存在しています。 http://park5.wakwak.com/~weblab/refStringClass.html http://park5.wakwak.com/~weblab/refFormat.html http://dobon.net/vb/dotnet/string/index.html http://dobon.net/vb/dotnet/string/inttostring.html http://adonetvb.com/Learning/StandardFormat.html

szsznow
質問者

お礼

お礼が遅れて申し訳ございません。 アドバイスのサイト、ぐぐってHITしたことがあります。 やはりちゃんと勉強していないのがいけないんですよね・・ これを機会に基本を学習したいと思います。 ともあれ、アドバイス、参考になりました。 実は他の部分が関係してまだ完全なる解決とはいっていませんが。 まずはお礼をと思いレスいたしました。 失礼します。

回答No.2

H_数量.Text = Format(Val(H_数量.Text), "#,##0.00") If Right(H_数量.Text, 3) = ".00" Then H_数量.Text = Format(Val(H_数量.Text), "#,##0") End If では?

szsznow
質問者

お礼

すみません、これもダメでした。 If Right(H_数量.Text, 3)  ← 質問文で 2 と表記してしまってすみません。 慌てて質問したので。 おそらくコードの他の部分で何か制御しているのですかね? なにぶん初心者で、全体的に理解できておらず、皆様への質問も中途半端でご迷惑おかけしております・・ 皆様の回答をヒントに、私の方でも色々試しますので、引き続きよろしくお願い致します。m(__)m

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

int(Val(H_数量.Text))=Val(H_数量.Text) then H_数量.Text=int(Val(H_数量.Text)) end if みたいな事でどうでしょう

szsznow
質問者

お礼

お礼が遅くなりました。 結果をご報告しますと、一番やっかいなヤツでは実現できませんでした。 今回は kazneさんの  Me.TextBox1.Text = Format(CDbl(TextBox1.Text.Text), "###,###,##0.##")  を使わせていただきました。 しかしShowMeHowさんのご回答は別の時に使わせていただくと思います。 私の参考コードリストに入れさせていただきました。 ありがとうございました。 gooではまたお世話になると思いますので、今後ともどうぞよろしくお願い致しますm(__)m

szsznow
質問者

補足

質問者szsznowです。 補足欄使わせてもらってすみません。 できたかも、、、しれません!! また先走ってお礼をして解決扱いにするとあとでまたご迷惑をおかけしますので、 またご報告させていただきます。 とりあえず、、ありがとうございました。