ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3457678 VIEWから読むと桁落ちするんです
質問者:papope 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からでも正しく数値が吐き出されている場合もあります。

どのような原因が考えられるでしょうか?
お教えください。
困り度:
  • すぐに回答を!
質問投稿日時:
07/10/24 17:26
この質問に対する回答は締め切られました。

回答

ANo.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関数を使う意味はないのでは?
回答者:chukenkenkou
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/10/24 20:11
この回答へのお礼ご回答ありがとうございます。
decimalの有効桁数の省略値に関しては承知しています。
しかし何らかの影響があるのか?と思い、精度を指定してみましたが
変わりませんでした。

いろいろと試した結果、VBAでOLE DBで接続していたのですが、それが
原因だったようです。

通常のODBC接続にすると正しく計算されました。

お伝えする情報が少なかったのかもしれません。
しかし、原因を特定する足がかりにはなりました。

ありがとうございます。