dポイントプレゼントキャンペーン実施中!

DBにはpostgresを使用していて、numeric(8,2)の様に定義した項目から
VB.netのプログラムでOleDbDataReaderを使用して値を読み取るのですが
.GetValueでは123.45 -> 123 という風に整数部分しか読み取れません。

試しに
.GetValue(x).Tostringで出力してみたのですが、やはり小数部分が見あたりません。
直接コマンドで見る限り、テーブルには正しく小数以下も格納されています。

現在は、クエリで 100倍して.GetValueで読み込んだ後に100で割っていますが
直接読み込むメソッドがありましたらご教授願います。

A 回答 (2件)

.NETについては分かりませんが、SQL中で演算する必要がないなら、SQL中で文字に型変換してしまって、文字で受け取るといった方法もあります。



select c1,c2 from t1 [where ・・・]

といったselect文で、例えばc2列がnumeric(8,2)であるなら、

select c1,to_char(c2,'S999999.99') as c2 from t1 [where ・・・]

参考URL:http://www.postgresql.jp/document/8.3/html/funct …
    • good
    • 0
この回答へのお礼

文字→数値変換の手間やクエリの煩雑化を避けたかったのですが
こちらの方法は動作を確認できましたのでベストアンサーとさせていただきます。

有り難うございました。
それからお礼が大変遅くなりましたことお詫びします。

お礼日時:2011/05/07 22:19

OleDbDataReader.GetDecimal メソッドを使ったらどうなりますか。



http://msdn.microsoft.com/ja-jp/library/system.d …
    • good
    • 0
この回答へのお礼

折角、ご回答頂いたのにお返事が遅れてすみません。
ご意見を参考に色々と試してみました。

わかったことは、numericとdecimalは同じ扱いらしいのですが、numericで宣言した物を
decimalで読み込もうとするとエラーになりました。
改めて、decimalで定義を行って、型エラーというメッセージはでなくなったのですが、結局は整数として小数部分がうまくとれませんでした。

(私が何か根本的な勘違いをしているだけなのかも知れませんが)
アドバイスに感謝します。

お礼日時:2011/05/07 22:37

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

関連するカテゴリからQ&Aを探す