ACCESSの解析でDBが壊れた?

このQ&Aのポイント
  • ACCESSの初心者がデータの不整合を解析しようとした際、何かの影響でDBが壊れた可能性がある。
  • 昨日、ACCESSでデータの解析を行っている最中に問題が発生し、終業時間のために強制終了せざるを得なかった。
  • 再度ACCESSを立ち上げた際には、以前存在していたテーブルが不明な理由で消えてしまっていた。
回答を見る
  • ベストアンサー

ACCESSの解析(?)でDBが壊れた?

ACCESSの初心者です 昨日、ACCESSでデータの不整合があってそれを解析しようとしていた時に 確か(昨日のことでうろ覚えです)ツールバーの中に「解析」か何かがあり 一度試してみようとそれを実行しました。 ところがなかなか終了せず砂時計が出っ放しになり、終業時間だったのでやむを得ず強制終了させました。 その後で再度立ち上げて見たら「テーブル1・2」といった表示があり、自分で作った覚えは無かったので作業中のWORKファイルかなと思い削除しました。 今日ACCESSを立ち上げてみると、クエリなどをクリックすると「テーブル1が無い」等のメッセージが出ます。 そんな指定をした覚えは全く無いのですが、これは何か昨日やったことの影響なのでしょうか?

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

Accessの.mdbファイルは、何かというとぶっ壊れるとっても危ない ファイルです。 ですので、何かの作業をするときは「やった結果がどうなるか」100% 把握の上、必ずバックアップを取ってから作業するのが常識ですし、 強制終了などもってのほか、ほぼ確実に二度と起動しなくなります。 ですので、問題は「強制終了をかけたこと」で、それ以外の問題は ささいなことです。「無警告でデータが失われている」可能性すら あるので、即座にバックアップを使って上書きですね。 バックアップがない場合、中身のデータは全然保証できませんので、 過去の出力から手作業で全件照合するしか方法は無いです。

sirouto012
質問者

お礼

FEX2053さん ありがとうございます。 ACCESSというのはそんなに危ないシステムなのですか。 もともとWindowsですから危ないのは当たり前のようなものではありますが 「強制終了などもってのほか、ほぼ確実に二度と起動しなくなります。」 というのは驚きです。 EXCELのようなメモリーベースで動くものではない。 しかも一応はスプレッドシートより業務寄りであると思われる 「データベースのシステム」なのだから、もし何かあっても 元のDiskの内容が失われることは無いはず と考えていたのですが違うんですね。甘かったです。 そのときのデータ内容ばかりか、元のデータベースのデザインすらも こんなに簡単にぶっ壊れるなんてACCESSの設計思想自体が 根本的におかしいような気がします。 正常に処理ができるまで元のファイルを残しておくという基本的かつ 単純な原則を無視しているということですね。 いったい何を考えて作ったんですかね? しかしいい勉強になりました。 これから思い出し出しハンドで修復を試見ることにします。 それにしてもACCESSがこんなに脆弱で当てにならないソフトだなんて どの本にも書いてなかったです。 入門書の一番最初に大きな文字で「警告!」とか書いていてほしかったです。 トホホ・・・・ 済みませんがついでにひとつだけ教えてください。 ACCESSというのはそんなに壊れやすいクセをしてその仕組みの全てを ,mdbという1つのファイルにまとめてしまいますよね? 壊れやすいのに全部一蓮托生。 そんな馬鹿な・・・ということになりますが、 古いデータを残しても結局は一蓮托生のデータベースの中に作ることになって バックアップの役は果たさないということでしょうか? データベース自体を別名で残していくとか言うことになるんでしょうか? 何かスマートな方法は無いものでしょうか?

その他の回答 (2)

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.3

>「別名で保存」ですがこれもACCESSからVBAかなにかでやる 普通は、「起動時の処理」の中にVBAで記述するんですけどね。VBAを 使わないなら、「起動する前にエクスプローラを使い、別のフォルダに ドラッグ&ドロップ」で済みます。 ちなみに、同じフォルダだとコピー時に名前重複でエラーしますから。 また、どうせなら別ドライブに保存(例えば外付HDDとか)する方が、 ハードウエア故障の時も影響が及ばすに安心です。 処理終了時の別名保存も、VBAでコードを記述しないなら、「処理を 終了してからドラッグ&ドロップ、そのうえで"ファイル名"を変更」 で済みます。別にAccesssを使わないでも「エクスプローラ」の機能で こんな風にバックアップは簡単にできるんですよ。 毎回同じ作業が面倒だ、と思うなら、頑張ってVBAを勉強して下さい。 この処理はかなり「簡単」な部類に属するので、初級の勉強で十分 対応が可能だと思います。

sirouto012
質問者

お礼

FEX2053さん ありがとうございました。 とりあえずはハンド処理で行くことにします。 VBAもぼつぼつ勉強したいと思います。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.2

Microsoftの設計思想はともかく、ちゃんとしたシステムを作る場合、 データベースはOracleなどの「定評のある」データベースシステムを 使い、それをAccessからダイナミックにコールする・・・というのが この手のシステムを作るプログラマのやり方ですね。 何せ、Accessは複雑な処理を簡単に作ることができ、なおかつ頑張れば 専用システムっぽくなるまで、かなり作り込むことができるという、 非常に有能なアプリなので、不安定でも「データ操作部分」はAccess で頑張りたいんです。おまけに「クエリを処理しているだけ」なら 経験上あまり異常は起きず、テーブルをいじるときに主に問題が起きる んで、テーブルを別アプリにすると、安定するんですよね。 ただ、「ちゃんとした」データベースソフトは高いので、私のような 「Accessでチャッチャと作る」プログラマは以下のどちらかにします。 1..mdbを開きに行ったら、まずいきなり「別名で保存」を掛け(この  別名は使いまわしで毎回更新される)処理終了後の保存時にも「ファ  イル名+日付」で保存を掛ける。このとき、「最適化」もやっておく (やらないとファイルがどんどん大きくなる) 2.データ処理用の.mdbと、データ保存用の.mdbを別々に作り、ダイナ  ミックにリンクさせる。データ保存用.mdbは起動時と終了時しか  アクセスしないので処理中のトラブルから保護される。また、終了時  に1.同様「ファイル名+日付」で保存を掛けるとバックアップできる。 マトモ系のプログラマなら2.を選びますけど、プログラミングが面倒 なので、イーカゲン系プログラマの私などは1.でやってます。実際、 納品後に「バックアップからのリカバリー」を何回も経験してますが 「前日の処理終了時点に戻る」ということで了解してもらってます。

sirouto012
質問者

お礼

FEX2053さん 何度もありがとうございます。 丁寧な説明ありがとうございました。 わたしもオラクルなど買えないのでACCESSで行きたいのですが すみません初心者なもので具体的にどうしたらいいのか分かりません。 「別名で保存」ですがこれもACCESSからVBAかなにかでやるのでしょうか? なにせVBAはまだ使いこなせていません。 ハンドで保存するということでしょうか?

関連するQ&A

  • Access2000 MDB解析

    MS-Access2000のMDBを解析できるソフトを探しております。 たとえば、テーブルAはどのクエリーやフォームで使用されているか・・・。このような解析ができるソフトをご存知ないでしょうか?

  • Accessを解析したい

    初心者です(WindowsXP Access2000) Accessで手間隙かけて作り上げたFORMがトラぶってしまいました。結局最終目的であるフォームから順にたどってトラブルの原因はつかめたのですが、今後のためにも、どのような手順で作ったかを記録しようと思っています。 そこで、どなたかAccessを解析するフリーのツールをご存知の方いらっしゃいませんか。ただし、SQLで出てきても困ります。例えばこのクエリはどのテーブルとどのクエリの組み合わせでどのような条件で作っているかなど、なにせ初心者ですので、、、 よろしくお願いします。

  • ACCESSの解析ソフト

    ACCESSの解析ソフトを探しています。 テーブル名、リンク先、 クエリの種類、繋がっているテーブル マクロの中身 等々…を、EXCELに出力できるような ソフトはありませんか? Vectorで探したのですが見つかりませんでした。

  • ACCESSのクエリに見ることの出来ないテーブル?があります。

    前任者の作成したPGで仕様書がありません。 中身を解析し様としたのですが、ACCESSのクエリのテーブルに、テーブルにもクエリにも存在しないテーブル?が接続されています。 何を接続しているのでしょうか? どこを見れば解析できるのでしょうか?

  • アクセス97のドキュメント作成ツールについて

    アクセス97で簡単に構造の解析のできるツールを探しています。 たとえば、フォームのフィールドはどこのテーブルやクエリーから引っ張ってきているのかや、クエリーがどこのテーブルをもってきて、どういう条件で作られているのかなど、簡単に解析したいのです。 参考になる方法やサイトがありましたら教えてください。

  • Access97 → Access2002

    最近会社でAccess97からAccess2002へ乗り換えた(パソコンもOSも変更)のですが、ファイルを変換(2000形式に)してから、不具合がおきています。 あるデータベースからデータを抽出する作業なのですが、 [A]・[B]二つのテーブルからテーブル[C]を作成する[テーブル作成クエリ]があり、これで作成した[C]をもとにクエリ[D]を実行し、Excelに[D]をエクスポートするという形になっています。 [テーブル作成クエリ]を手動で実行すると正常にテーブルが作成されるのですが、 マクロで実行するとうまくいきません。 マクロは メッセージの設定 ・・・いいえ クエリを開く   ・・・テーブル作成クエリを実行 ワークシート変換 ・・・[D]をExcelのワークシートにエクスポート メッセージボックス・・・"Excelへの書き出しを終了しました" となっています。 具体的には、テーブル作成クエリを実行するときには、 集計開始日と終了日をパラメータとして入力する必要があり、 作成されたテーブル[C]には入力した開始日と終了日が書き込まれます。 [D]のクエリを実行する際には[C]の開始日と終了日が抽出条件となります。 手動で[テーブル作成クエリ]を実行したときには [C]に開始日と終了日が書き込まれているのですが、 マクロで実行したときには、[C]にこの開始日と終了日が書き込まれないため、 結果的にフィールド名だけが入力されたデータの全くないExcelファイルが作成されます。 ちなみにマクロで実行する場合は、あらかじめ日付範囲を入力するフォームに開始日と終了日を入力してから実行します。 長々と書いてしまいましたが、これでおわかりいただけるでしょうか? わかりにくければまた補足いたしますので、 マクロで実行したときに正常に動作するようにするにはどうすればいいのか なにか解決策がありましたら教えてください。

  • Accessが強制終了されて困っています

    WinXP:(すみません) Access:2003 (もうそろそろ?) まだ、使える メインフォームの欄に文字を一字入力しようとすると、砂時計が出て強制終了されてしまいます。サブフォームがあるのですが、そこにカーソルをもっていって文字を入力しても強制終了はされません。 それと、テーブルに戻って、メインフォームと項目が同じ箇所に文字を入力して、それからフォームに戻って続けて文字を入力すると、強制終了は起こりません。 Accessは比較的初心者です。 Webであちこち探して、マイクロソフトの発行している「修正プログラム」をダウンロードしてインスツールしてみましたが、症状が改善されません。 どちら様か、ご存知の方がいらっしゃいましたら、お教えいただきたいと思います。 よろしくお願いします。  

  • ACCESS97mdbを分析したいのですがこんな事出来ますか?

    こんにちは。 ACCESS97(初心者に近い)なのですが、 1個の.mdbの各テーブル、クエリー、レポート、マクロにたくさんのオブジェクトがあります。 テーブル、クエリーは30個近くあります。 これをどのテーブルやクエリーがどこに関連しているのか、分析したいのですが方法がわかりません。 「ツール」-「解析」-「データベース解析」やってみましたが・・・ 初心者なもので、図と矢印などで表現してほしいんです。 そんなわがままなこと無理でしょうか? やはり地道に一つ一つ見ていかなければならないでしょうか・・ また、そういうフリーソフトなどあれば、教えてください。 よろしくおねがいします。m(__)m

  • アクセス 数値型にするとフォームの入力ができない

    お世話になります。色々調べたり、実験してみたのですが、分からない点があります。 簡単でいいので、可能性のある原因を教えてください。 アクセス2003です。 ■パターン1  フォームC の入力ができる テーブルA(主キーがオートナンバー型)、その他4つのテーブル(これら5つのテーブルは、参照整合性リレーションで結ぶ) →それらを元にクエリBを作る→クエリBを元にフォームC を作る ■パターン2  フォームC の入力ができない テーブルA(主キーが数値型)、その他4つのテーブル(これら5つのテーブルは、参照整合性リレーションで結ぶ) →それらを元にクエリBを作る→クエリBを元にフォームC を作る 簡単にいうと、テーブルのデータ型によって、入力可否が変わるのです。 なぜ、パターン2は、入力できないのか分かりません。 よろしくお願いします。

  • クエリが実行できません

    Access2000で選択クエリを作成し、それを1ケ月ほど利用していたのですが、昨日そのクエリを実行すると砂時計の状態のままで、エラーメッセージも表示されることもなく、実行することが出来ません。もとになるテーブルなども変更していないのですが・・・ もし、どなたか同じような状況に陥ったことのある人などで、原因や解決法など知っているかたがいましたら、よろしくお願いします。

専門家に質問してみよう