質問 |
||
| 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接続にすると正しく計算されました。 お伝えする情報が少なかったのかもしれません。 しかし、原因を特定する足がかりにはなりました。 ありがとうございます。 |