本ブログは2009年4月21日で終了しました。
今後はアイビースターでブログを運営していますので
そちらをご覧ください。
Posted by Hibi at 07:00
Accessファイルが破損した!その原因は・・・


Microsoft社が提供しているOffice製品の一つにAccessというデータベースソフトがあります。私はWeb用プログラムのPHP以外にこのAccessの開発も得意としています。

Accessはデータベースソフトとしてはあまり優秀ではありませんが、ローカル環境でちょっとしたデータを管理することや他のデータベース(SQL ServerやPostgreSQLなど)の管理を行うユーザインターフェイスとして使用するには結構便利なソフトです。

しかし、このAccessは時々、壊れることがあるのです(T.T)

Web用のPHPなどはプログラムがテキストファイルなので破損等はほぼ起きることはないのですが、Accessの場合はExcelなどと同じくバイナリファイルであるため破損することがあり、尚かつ、修復することはきわめて困難です。その為、Accessで開発を行う時はこまめにバックアップを取る必要があります。

実は先日、Access 2007で作ったaccdbファイル(Access 2007で作ったファイルは通常この拡張子。Access 2007以前のバージョンはmdbファイル)が破損してしまいました(T.T)

破損する原因は色々あるのですが、今回、破損した原因は大体わかっています。まだ修復は出来ていませんが、下記にその原因を明記しておきます。

通常、Accessの開発は私のところで作ったファイルをお客さんのところへ持って行き、使用するパソコンへインストールを行って使用してもらいます。

今回も同様にお客さんのところへファイルを持って行き、そのファイルを確認してもらったところ、何カ所か変更するところがありました。その変更箇所はそれほど難しくないので、お客さんの使用するパソコンで修正して納品しました。特にこの辞典では問題もなく、お客さんは使用して頂いています。

そして、その修正したファイルを我が家のパソコンへ持って帰り、開いてみると

(フォーム名) を読み込み中にエラーが発生しました。プロジェクトの読み込みを続行しますか?
accdbファイルを開いた時のエラーメッセージ


の様なメッセージが表示されました。ここで、「はい」を選択すると、いろいろなエラーメッセージが吐き出されて、どうにもこうにもなりません。

完全に破損しています。
(T.T)


さて、なぜこの様なことが起きてしまったのかというと、おそらく、私の開発している環境とお客さんが使用している環境が異なった状態が原因と考えられます。その「環境」というのはAccess本体のバージョン違いでしょう。

バージョンといってもAccess 2007という環境は同じなのですが、その中でSP1などの細かいバージョン違いによる影響が大きいかと思われます。

私の環境はほぼ初期状態であるのに対し、お客さんは先日Accessを購入してインストールしています。Access 2007の最新版は確かAccess 2007 SP1なので私の環境をSP1にすればこの問題は解決できるでしょう。

しかし、SP1だけなのかそれ以外の細かいパッチによる環境違いなのかまでは確認が困難です。そこで、役に立つのが、前回、記事に書いた「データベースの構造と解析」です。

この機能を利用してお客さんのところで修正した箇所と、修正前の差分を取得して、その内容を改修前のaccdbファイルに反映すれば問題なく動作します。

ハッキリ言って面倒です(^_^;)

Accessの開発を行いたくない人はこのファイルの破損があるから嫌う人もいることでしょう。Accessがバイナリファイルではなくテキストファイルならいいのにな~と思いますが、おそらくMSさんはそんなことはしてくれないでしょうね。

ちなみにExcelやWordの場合はこちらの方法でテキストファイル化することもできますが、Accessの場合はNGの様です。





関連記事



同じカテゴリー(MS Office)の記事
 
Category is MS Office.
<%PingExcerpt%>
<%PingBlogName%> at <%PingDateTime%>
ExcelもAccessもバイナリだったのかぁぁぁぁぁぁ
知りませんでした。
とにかく、よくブチ壊れるため、イライラが・・・

Excelの場合には、.xlbだったかを削除して
修復を試みたものです。

もっとも、あちきはOffice2003ですけど。
それ以降のは、なんだか怖い。
Posted by COACHでし。 at 2009年02月28日 15:10
COACHさん

Excelはマクロを組んでまで使用することはあまりないのですが、やっぱり壊れることが多いようですね。
困ったものだ・・・。

> それ以降のは、なんだか怖い。

「怖い」というよりも使いづらくて・・・
未だにこの作りがいいのか疑問です。
Posted by HibiHibi at 2009年03月01日 06:24
2007、バージョン違いで壊れるんですか!?2003以前のものでは、私はあまり聞いたことがありませんが、Hibiさんはいかがですか?
2003以前は、よく「最適化」で壊れたなー、と・・・・。あの作業をする前にバックアップを取るのは必須でした。
壊れてても、他のDBからアクセスすると反応する場合もまれにありましたが、本当にまれでした(涙)
Posted by しばさん at 2009年03月01日 22:33
確かに、accessのデータベースはよく壊れますよねぇ。
それを防ぐために、フォーム類とデータベース本体でファイルを分けたりとかやっているケースも見かけますし。

でもインストールが簡単で、それなりのシェアがあって、以外と使いやすいデータベースってaccessしかないから仕方ないんですよねぇ。

ライセンスを回避するなら、oOo Baseなのかなぁ。
使ったことないからどこまでできるのか分からないけど。
Posted by katsu2000x at 2009年03月02日 10:13
しばさん

「本当にバージョンの違いなの?」と改めて聞かれると、なんか自信がなくなってしまうのですが、考えられる違いはそれしかないんですよね。ただ、バージョン違いで必ず壊れるかというとそうではありません。本当に希なんですが壊れる時があります。

最適化は確かに良く壊れますね。私はよっぽどでない限り最適化は行いません。壊れると本当に涙ものですもの(T.T)


katsu2000xさん

> フォーム類とデータベース本体でファイルを分けたりとかやっているケースも見かけますし

これは良くやりますよ。その方がフォーム類の改修や変更、バックアップが簡単(小さく)なりますので。

> 使いやすいデータベースってaccessしかないから仕方ないんですよねぇ。

やっぱりAccessしかないのでしょうかね?OOoはあるのは知っていますが、一度も触ったことがありません。どんな感じなんでしょうね?
Posted by HibiHibi at 2009年03月02日 17:22
>やっぱりAccessしかないのでしょうかね?OOoはあるのは
>知っていますが、一度も触ったことがありません。どんな感じ
>なんでしょうね?

ぜひレポートしてください!
っていつもながら他人任せでどうですか?(笑
Posted by katsu2000x at 2009年03月02日 18:20
katsu2000xさん

え~また~
けど、ちょっと興味があるからそのうちね(^_-)
Posted by HibiHibi at 2009年03月03日 05:41
削除
Accessファイルが破損した!その原因は・・・