• 締切済み

VIEWから読むと桁落ちするんです

VBAでPostgreSQLを読む処理を作成しています。 【例】 create table aaaaa ( sisya varchar(002), busyo varchar(002), suuchi decimal, constraint aaaa_key primary key ( sisya, busyo)) というテーブルを作成し craete view vaaaa as select sisya as v_sisya, busyo as v_busyo, sum(suuchi) as v_suuchi from aaaa group by sisya,busyo というビューを作成して参照しています。 ACCESSのODBCで参照すると、正しく数値が入っているのですが、 viewをVBAから参照すると桁が落ちます。 60000が6になるなど。(不定期に。下4桁のゼロが消えているようです。) vbaからでも正しく数値が吐き出されている場合もあります。 どのような原因が考えられるでしょうか? お教えください。

みんなの回答

回答No.1

>ACCESSのODBCで参照すると、正しく数値が入っているのですが、 >viewをVBAから参照すると桁が落ちます。 >60000が6になるなど。(不定期に。下4桁のゼロが消えているようです。) ACCESSのODBC経由だと正しくて、VBAだと正しく表示できないなら、VBAの受け 取り変数の宣言や代入、出力方法に問題があるのではないでしょうか? >vbaからでも正しく数値が吐き出されている場合もあります。 どういうケースで正しかったり、正しくなかったりという切り分けはできないのでしょうか? 今回の事象とは直接関係しないでしょうが、 >suuchi decimal 一般的には、decimal(m,n)と桁数を明示指定します。nは小数点以下の桁数、mは整数部桁数+nです。 省略した場合、桁数が何桁か、把握した上でこの指定をしていますか? >sum(suuchi) as v_suuchi >from aaaa >group by sisya,busyo この表定義は、(sisya,busyo)でプライマリキーにしています。「group by sisya,busyo」で「sum(suuchi)」としていますが、各グループの件数は1件なので、sum関数を使う意味はないのでは?

papope
質問者

お礼

ご回答ありがとうございます。 decimalの有効桁数の省略値に関しては承知しています。 しかし何らかの影響があるのか?と思い、精度を指定してみましたが 変わりませんでした。 いろいろと試した結果、VBAでOLE DBで接続していたのですが、それが 原因だったようです。 通常のODBC接続にすると正しく計算されました。 お伝えする情報が少なかったのかもしれません。 しかし、原因を特定する足がかりにはなりました。 ありがとうございます。

関連するQ&A