カンパ〜イ!←最初の1杯目、なに頼む?

上記内容で四苦八苦しているVB初心者です。

Microsoft Visual Studio / ActiveReportで帳票を作成しています。
DBからの値が、小数点以下ありの場合(例:1.7)の時はそのまま表示し、小数点以下が0の場合(例:1.0)の時、整数部分のみを表示させたいのです。

質問の『値』ですが、今回の値は小数点第一位までです。
#.0 の時 → # と表示。
#.1~9 の時 → そのまま表示。
としたいのです。

稼働環境はWinXP、Win7です。

ちなみにイメージしていただくために・・・
既に別の条件で、
『If H_数量.Text = "0.00" Then
H_数量.Text = ""
H_単価.Text = ""
End If 』
というコードを書いているのですが、この、『H_数量』が問題の値部分です。
H_数量 の値が小数点以下ありの時、0の時、
での条件式となります。

よろしくお願いします。

A 回答 (5件)

>H_数量.Text = Format(H_数量.Text, "#,##0")


>は、全行 #,##0 と表示されてしまいました。

こちらは、.NETじゃないので確認はできませんが、
H_数量.Text = Format(Val(H_数量.Text), "#,##0")
のようにValを付けてみてください。
Val関数は、文字列を数値に変換する関数です。

Format関数は、本来は数値を文字列に変換する関数です。
VBは数値が入っている文字列も数値と解釈されることがあるため、Valを使わなくても大丈夫でしたが、
.NETではそれがダメなようです。
ただ、他の言語にしてみればそれが普通なんですけどね。
    • good
    • 3
この回答へのお礼

nag0720様!
できました!!!
ありがとうございます(≧▽≦)~~~!!!

これで少数桁ありなし用で2枚用意していた帳票が1枚で済ませられます。
また、今回質問したことで色々勉強になりました。
本当にありがとうございました☆☆☆


それから、環境も書かずに質問して皆様にお手間を取らせてしまったこと、
この場をお借りしてお詫びいたします。
初心者ながら、そういう基本的なところは今後気をつけたいと思いますm(__)m

お礼日時:2011/12/07 10:33

>If H_数量.Text = Fix(H_数量.Text) Then


>H_数量.Text = Format(H_数量, "0")
>End If

判定は不要だと思いますが。。。

VB環境がないので確認できませんが

msgbox Format(1.0#, "0")

で確認してください。
    • good
    • 0
この回答へのお礼

またまたありがとうございます。

環境は、.netです。

そうすると話が変わってくるような気もするのですが。
情報少なくてすみませんでしたm(__)m

お礼日時:2011/12/06 09:57

H_数量.Text = Format(H_数量.Text, "0.0")


If Right(H_数量.Text, 2) = ".0" Then
H_数量.Text = Format(H_数量.Text, "0")
End If

ではどうですか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

結果としては、ダメでした。
H_数量 の欄が全て『0』となってしまいます。

環境は.NET なのですが、この環境ではFormat関数をこのように使うことは出来ないのでしょうか・・

単純に、
H_数量.Text = Format(H_数量.Text, "0")
を試すと、全行 0
H_数量.Text = Format(H_数量.Text, "#,##0")
は、全行 #,##0 と表示されてしまいました。


引き続きアドバイスお待ちしております。

お礼日時:2011/12/06 11:42

下記ではダメでしょうか



---
Format(H_数量,"0.#")
    • good
    • 1
この回答へのお礼

ありがとうございます。

整数部分のみ表示したいので、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_単価欄は空欄にする)
はちゃんと動いているのですが。。

お礼日時:2011/12/05 14:18

元の値の小数部を切り捨てた値と元の値を比較して、同一の場合は小数部0と判定すれば


良いと思います。

例.If H_数量.Text = FIX(H_数量.Text ) THEN

という感じです。
    • good
    • 0
この回答へのお礼

さっそくありがとうございます。
ただ、私の力ではコードが完成しません(><)

If H_数量.Text = FIX(H_数量.Text ) THEN
H_数量.Text = Fix(H_数量.Text)
End If

でしょうか?
しかしこれでは帳票が表示できませんでした。

THEN のあと、 H_数量 の整数部分のみ表示 するコードはどう書けば良いでしょうか?

初心者過ぎてすみません!!

お礼日時:2011/12/05 13:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A