電子書籍の厳選無料作品が豊富!

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からでも正しく数値が吐き出されている場合もあります。

どのような原因が考えられるでしょうか?
お教えください。

A 回答 (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関数を使う意味はないのでは?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
decimalの有効桁数の省略値に関しては承知しています。
しかし何らかの影響があるのか?と思い、精度を指定してみましたが
変わりませんでした。

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

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

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

ありがとうございます。

お礼日時:2007/10/26 14:33

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

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