こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Microsoft Access:クエリのフィールドが消える

仕事でWindows XP Professional、Microsoft Access 2003を使用しています。
Accessの知識は低いです(本を見ながらVBAを組んだりする程度)。
データベースは、5年ほど前にAccess 2000で作ったもので、ネットワークドライブにあり、現在、改良等はAccess 2003で行っていますが、データベースを使用するクライアントは、Windows 2000(Access 2000)とWindows XP Pro(Access 2003)の複数環境です。

データベースは、1つのテーブルに、1つの抽出クエリ、レポートはそのクエリから呼び出して表示すると考えてください。
レポートを表示させるときに、クエリからデータを引っ張ってくるのですが、数ヶ月前から、突然必要のない「パラメータの入力」ウィンドウが複数回表示されるようになりました。

直接の原因は、クエリに存在しているはずのフィールドが、数個消滅していて、再度クエリにフィールドを追加すれば直ります。
直してしばらく使えるのですが、4~5日経つと、また壊れるという状況です。

また、データベースには、1年以上大きな変更を加えていません。
レポートのラベル(単なる文字)や位置を変更するのみのメンテナンスしか行っていません。

ちなみに、このデータベースファイルのテーブルへは、別のデータベースファイルからも「テーブルのリンク」としてリンクされていますが、クエリやレポートは単独です。

個人情報を扱うファイルのため、外部に持ち出せず、職場でOK Waveにアクセスしづらい状況で、知識も乏しいことから、あまり詳しく提示できないのですが、勝手にクエリ内のフィールドが消えてしまう原因は、どういうことが考えられますか?
参考程度でも結構ですので、アドバイスをお願いします。
(この程度のレベルの人が、重要なデータベースを管理していることに一番の問題があるのは分かっているのですが…)

投稿日時 - 2007-08-11 03:19:05

QNo.3245844

困ってます

質問者が選んだベストアンサー

初めまして。
誰でも始めはあるものです。皆んな手探りでやって、失敗しながらやってますよ。プロでもね。。。
状況的にはMDB内でオブジェクトの不整合が発生している事が考えられますので、データテーブルは別との事ですので
一度、アプリ用MDBを新規に作成して、そこに元のMDBから各オブジェクトをインポートして作り直してみてください。
それとアプリ用MDBは、定期的に最適化を行うようになっていますか?壊れる可能性もあるとの前提で、
運用システムは考えた方が良いですよ。
本番用MDBと保守用MDBを分けて、メンテナンスは必ず保守用MDBで行い、
テストが完了したら本番用MDBに移行するとかの手順を確立した方が良いですね。頑張ってください。。。

投稿日時 - 2007-08-11 04:32:22

補足

こちらに失礼します。
とりあえず、一旦締め切って、様子を見てみます。
kirara77さん、nicotinismさん、ありがとうございました。

投稿日時 - 2007-08-14 01:10:55

お礼

ありがとうございます。
どんどん使いやすいように改良したつもりで、結局メンテナンスしづらい構造になってしまい、
不甲斐なさに悩んでおりましたが、少し勇気付けられました。

元のMDBも、テーブルのリンクが設定してあるMDBも、終了時に最適化を行うようにしています。
バックアップは定期的に取るようにしていますが、バックアップソフトをインストールさせてもらえず、
別フォルダにコピー&貼り付けをしています…。

確かに、MDBファイルを直接いじって変更していますので、
一度保守用MDBを再構築して、様子を見たいと思います。

投稿日時 - 2007-08-11 11:08:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Access ファイルを共有している場合には
誰かが開いていると「閉じる時に最適化」が有効に働きませんので
私は全ての端末で無効にしています。
そして適宜、頃合を見て最適化を行っています。

また今回の件には無関係かもしれませんが
「名前の自動修正情報をトラックする」もチェックが入っていると
たまに不可解なエラーの元になる事が有りましたので外しています。

バックアップの件は下記リンクのような世代バックアップは必要ですね。
データベース自動バックアップ関数 (FSO)
http://www.moug.net/tech/acvba/0070012.htm

あとは・・
データが入っているMDBはファイルサーバに置き世代バックアップをとり、
アプリのMDB(クエリ・フォームなど)は各自の端末に配り
データMDB とはテーブルリンクで接続しておいた方がトラブルは少ないし
何かあってもダメージは軽いように思えます。

投稿日時 - 2007-08-11 12:05:38

補足

こちらに失礼します。
とりあえず、一旦締め切って、様子を見てみます。
kirara77さん、nicotinismさん、ありがとうございました。

投稿日時 - 2007-08-14 01:08:36

お礼

ありがとうございます。
ファイルは最後のユーザーが閉じるときに最適化されるはずなので、閉じるときに時間がかかっても、それは待つように教えています。
また、ファイルが5MB位あり、少し放置すると、勝手に12MBとかになっていたりするので、最適化は有効にしておりますが、やはりその方法も考えたほうが良いのですね。

また、テーブルのみのMDBをサーバーに置き、変更したMDBをネットワークにのせ、全ユーザーにダウンロードしてもらうというやり方も考えたのですが、これは変更がかかる度に10人ぐらいいるユーザーに連絡したり、そのDL作業をしてもらうのは、ユーザーの仕事のジャマになるらしく、今のような使い方をしなければなりませんでした。
(私的には全く難しい作業ではないのですが、ユーザーに初心者が多いため)

あと、世代バックアップの件は、こんな方法があるのか!と感動してしまいました。参考にさせていただきます。

投稿日時 - 2007-08-11 12:34:48

あなたにオススメの質問