牛、豚、鶏、どれか一つ食べられなくなるとしたら?

AccessVBAの処理落ちで困っています。

開発環境は
Office 2003 Access
OSはWindowsServer2003 Standard Edition(VM Ware上で稼働)、データベースは別に用意したAccess2003MDBファイルです。

処理概要は
データベース上の業務データが登録されているテーブル(以後テーブル1と呼ぶ)のデータ(主キー)を元にデータベース上の商品単価が登録されているマスタテーブル(以後マスタ1と呼ぶ)のデータを抽出し、テーブル1に金額をセットするものです。
業務データは月毎に約4000件存在します。

金額のセット処理はレコードセットを用い、テーブル1の該当する月のデータ件数分繰り返し行います。

テーブル1の金額フィールドにテーブル1のデータを主キーとして用い、マスタ1の該当する金額を抽出し、セットしなければならないのですが、金額が正しく登録されている物と全く違う金額が登録されている状態が発生しています。

テストデータは
例:2009年4月分のデータのみ(テーブル1、マスタ1共に)
という状態でテストしています。

作成したソースコードをチェックしてみましたがロジック上は
何処にも異常は見当たりません。

ループの中でソースコードの命令外の処理が行われているようにしか思えません。

説明が分かり辛ければ申し訳ありません、ご指摘頂ければ補足します。
どなたかこの現象についてご存じの方はご教授願えませんでしょうか?
どうか宜しくお願い致します。

A 回答 (2件)

Access のバグという可能性は・・・クエリ文なども含めて、



msdn.microsoft.com

で調べるというのもありかとおもいます。

1.まずは手元で再現させて、再現する場合としない場合を見つける

これに尽きます。
そこから、あやしそうなところをデバッグすればよいです。
コードだけみていてもダメです。

複数ユーザでアクセスしたときに再現するとか、、
ある特定のクライアントマシンで再現するとか、、
    • good
    • 0
この回答へのお礼

有難うございます、調べてみます。

お礼日時:2009/05/22 22:11

Accessで落ちることはよくあることですが、原因はほとんどがプログラムミスです。


ソースコードのチェックでロジック上異常がないとのことですが、1ステップづつ実行して変数やテーブルのフィールドの値を確認しながらチェックしたにもかかわらず突然金額フィールドの値が変わったのでしょうか。

もしそうなら、申し訳ありませんが分かりかねますので以下は無視してください。


そうでなければ、デバッグの仕方を工夫してみてはどうでしょうか。

まずは現象をはっきりさせることが必要です。

・すべてのデータの金額フィールドが変わるのか、特定のデータだけ変わるのか、それとも実行するごとに変わるデータが変化するのか。


金額フィールドが変わるデータが判明したら、ソースコードのどのステップで変わるかを調べます。

・ソースコードの特定のステップで金額フィールドが変わるのか、それとも不定(処理ごとに違うステップで変わる)なのか。


データ量が多い場合は、極端に減らしてからデバッグしてみてください。

特定のステップで金額フィールドが変わる場合は、プログラムミスかAccessのバグかは分かりませんが、その箇所のコードが原因ですので別のロジックに変えれば直るかもしれません。


そうでなければお手上げです、申し訳ありません。


あと、ご存知とは思いますが、Accessはイベント駆動型のプログラム言語です。
ですので、思ってもいないところで予想外の処理が実行されることが多々あります。
たとえば、ある処理のあるステップを実行した直後、その次のステップを実行する前に別の処理が実行されることがあります。
特にデータベースを操作している場合や画面の操作をしている場合に多いです。
デバッグする際は、いま現在どの処理が実行されているのかを常に監視しておく必要があります。
    • good
    • 0
この回答へのお礼

有難うございます、試してみます。

お礼日時:2009/05/22 22:10

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