Accessファイルが破損した!その原因は・・・

Hibi

2009年02月28日 07:00



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の様です。





関連記事

関連記事