[vba]チョコバットとODBCエラーの関係

昭和レトロな「オフコン」から平成風クライアントサーバ システムに切替えて3か月。

サーバ・作業PC間のデータ連携が変わった!
「サーバテーブルがODBC経由でAccessのローカルテーブルと同じ様に扱え、とても便利!」
と言いたいとこですが・・・・・

が~ん、ODBCエラーで僕のAccessが動かないよ!

ODBCエラー
「少数を丸めるために、データを切り捨てらえました。」

ローカルテーブルへの追加クエリーを実行すると、このエラー!
20180206ODBCエラーで動かない!

データシートビューで表示させるだけでもエラー!


「SQL Access ODBC エラー 少数を丸めるために」でGoogle検索してみると・・・

[「少数を丸めたために、データが切り捨てられました」回避する方法—-MSコミュニティ]

MS-Accessでは、
小数点以下7桁以上のレコードを扱えない

データシートビューで表示させると「#エラー」行がまばらに存在する!
20180206ODBCエラーで動かない!

あれ!?
よく見るとエラー行は全て、2018年1月下旬に完成したばかりの僕の新プログラムで自動生成させたレコードばかり!

ぼくの新プログラムは
「通販店 (=徳島オンラインショップ) の売上を基幹業務システムに一括売上登録する」為の固定長ファイル生成システム

エラー原因(=小数点以下7桁以上)の数値を探してみると・・・

あぁ、見つけた!
犯人は「チョコバット」だ!
チョコバット好評販売中


チョコバット60本入: 1,559円 ÷ 60本 =
1個単価:25.398333333333333・・・・

システム屋さんに2つのことをお願い
1)新規登録データの納価は小数第3位以下は四捨五入。
2)保存済み納価も小数第3位以下で四捨五入

で、作ってもらったのがこのupdate文

update 売上明細 set 納価 = round(納価, 3)

これを実行し、無事エラーが無くなりました!

やれやれ、ホッとしました。

独学MS-Accessプログラマーにとって、やっぱ本物「SQLサーバ」は難しい・・・・

問題解決後、頭が冷静になったら別の解決案も浮かんだ!

納価の桁数を固定したVIEWを作ってもよかったのね!

MSコミュニティを読み直すとそう書いてました。
パニクると目の前に答えがあっても気付けないんですね!

4 thoughts

  1. SQLServerは大きなことが出来る分結構シビアで、DB構築時人間がちゃんと考えて
    作ってやらないと後で結構大変なことになります。

    そもそも、販売管理系のシステムでマスターの数字項目で小数点以下を固定にしていない
    設計にすること自体おかしな話であります。
    それでなくてもソフト側で入力規制するか登録時に判断してチェックをかけるのが
    あたりまえだと思います。

    運用時の色々なイレギュラーなことを考えて作るのはソフト会社の「経験」です。
    使う側は思ってもみない使い方もするので...

    1. C様

      まぁ、いろいろありますが大金払って完成したばかりのシステム。
      数年使う予定なので、システムの癖を見ながら慣れていきます。

      なかなか見学に行くチャンスが無くて残念です。

  2. えらそうにコメントしてしまって申し訳ありませんでした。

    お恥ずかしい限りです。

    1. C 様

      いい勉強になります。

      これからも色々書き込んでください。
      お願いします。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA