あなたの習慣について教えてください!!

お世話様になります。
まだmdbファイルの時代のaccessのフォームを使って、期間の売り上げ集計をしています。

具体的には
開始日 **/**/**
終了日 **/**/**
という二つのテキストボックスを設けて**部分に年月日を入力し、その期間の売り上げをサブフォーム上に表示するというものです。

これまでは、まったく問題なく動作していたのですが、
終了日のテキストボックスに、13/04/18、つまり、2013年4月18日以降の日付を入れると、
「エラー番号 3420」のマクロエラーが発生し、集計用のマクロに設定した再クエリが停止してしまいます。

2013年4月17日以前の日付ならば、まったく問題なく動くため、原因が突き止められません。

ここまで来て、いよいよ会社実務にも支障が出始め、困り果てて、質問させていただきました。

実は、accessでDBを作っていたのは既に何年も前で、今はただの利用者になっており、質問の仕方さえよくわからなくなっておりますが、ヒントになるようなことがありましたら教えていただければありがたいです。

どうぞ、よろしくお願いいたします。

A 回答 (2件)

1の関連コードと言うと、マクロの内容を記載すればいいのでしょうか?



・サブフォームのレコードソース。
  -->サブフォームをデザイン表示しプロパティで確認。
・マクロ(VBA)のコード。
  -->どこかに XXXXXXX.Requey のコードがあるはず。

  レコードソースから不具合の引き金になっているテーブルが判明。
  それを手掛かりに、問題の日付以後の全データを削除。
  (もちろん、バックアップしておいて・・・)
  先ずは、このテーブルの破損個所の修復テストでどうなるのか?

  レコードソースのSQL文の変更と不具合との関係もテスト。

  SELECT 列名 FROM テーブル名 WHERE 列名 BETWEEN 値1 AND 値2;

  もしかしたら、 BETWEEN "#2013/09/09#" AND "#2013/0910#"
  という書き方だとエラーは発生しないかも知れません。

2の停止コードをコメントアウトと言うのがどのような作業なのか?

  XXXXXXX.Requey
   ↓
  ' XXXXXXX.Requey
  Stop

  実行コードをRem文に変更。
  同時に Stop文も挿入。
  この修正で、サブフォーム更新はストップします。
  Stop文を含むVBAも表示されます。
  ここで、{F9}を押して反応をみます。
  また、その他のエラー回避策も試します。

【最初にやるテスト】

テスト1、問題なく動作していたバックアップで問題日付を試す。

  これが一番確実で、しかも、真っ当なやり方です。
  「不具合が発生したらバックアップに戻れ!」です。

テスト2、HDDとMDBの修復が終わったらテーブルの修正・復元です。

  バックアップが利用できない場合は・・・。
  問題の日付以後の全データを削除=>最適化/修復。
  動くようだったら、必要なデータを少しづつ戻してテスト。

  動かなかったら、テーブルの全データを削除=>最適化/修復。
  動くようだったら、必要なデータを少しづつ戻してテスト。

PS、考え方。

(1)Accessのバージョンの旧さが原因。
(2)MDBの破損が原因。

現象からは(2)が有力そうですが(1)も視野に。

日付が"yyyy/mm/dd"形式でないこと、あるいは、関連テーブルの破損によりレコードソースの再取得でスタック領域を浪費。もって、エラーが発生。ということならば、(2)と(1)とを両睨み。などなどと考えています。

  
    • good
    • 0
この回答へのお礼

ご丁寧に。ご丁寧に。

本当にありがとうございます。

合間を見ながらの作業なので、どうしても時間が必要ですが、一つ一つ、ご指摘いただいたことで、まずは、自分でできるところをやってみて、改めてご指導を仰ぎたいと思います。

どうぞ、よろしくお願いいたします。
ありがとうございます。

お礼日時:2013/09/25 00:07

【情報不足1・・・関連コード】



>再クエリが停止してしまいます。

せめて、停止に関連しているコードを公開。
でないと、憶測だけの世界に。

【情報不足2・・・テスト状況】

停止コードをコメントアウトして{F9}を押して見るとどうなるのか?
再クエリレではなくコードソースを再セットするやり方では?

まあ、もう少し、このようなテスト情報も公開。
でないと、憶測だけの世界に。

【今できる対応】

1、チェックディスク(スキャン)を実行。
2、Accessの修復/最適化を行う。

チェックディスク・・・mdbがあるディスクのプロパティで指示。
修復/最適化・・・ツール(T)-データベースユーティリティ(D)で実行。
    • good
    • 0
この回答へのお礼

情報不足のご指摘。。その通りで、お恥ずかしい限りです。

1の関連コードと言うと、マクロの内容を記載すればいいのでしょうか?

2の停止コードをコメントアウトと言うのがどのような作業なのか、これまた恥ずかしですがよくわかりません。

まあ、情けない話です。

とりあえず、ご提示いただけた、今出来る対応をやってみます。
その結果は後ほど報告いたします。

こうして書きながら、自分の無知に苦笑いしてしまいます(泣;;

まずは、ありがとうございます。
とにかく、やってみます。

お礼日時:2013/09/21 01:03

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

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