Accessファイルの拡張子である「mdb」と「accdb」の違いや「accdb」への変換方法、
変換した場合のメリット・デメリット(不具合)等について紹介します。
「mdb」から「accdb」へ変換した際のメリット・デメリット(不具合)については、
主に以下の公式情報に沿って記述しています。
・Microsoft サポート:使用が推奨される Access ファイル形式
mdbとaccdbとは
「mdb」と「accdb」はAccessファイルの拡張子で、
Access2007より前は「mdb」、Access2007以降は「accdb」となりました。
以下の表の通り同じ「mdb」の中でも、世代によって若干異なり、
Access 97 データベースにいたっては、
Access 2013以降で、開いたり新しいデータベースへ変換したりできなくなりました。
機能面について詳しくは「accdb」へ変換するメリット・デメリットで説明しますが、
「accdb」にはいくつか便利な機能が追加されていますが、
根本的な部分は「mdb」と大差ありません。
ただ、Access 97 データベースの例もあるため
今後はAccess 2000 データベース以降の「mdb」についても使用できなくなる可能性が高く、
できれば早急にaccdb変換した方がいいかと思います。
mdbからaccdbへの変換方法
「mdb」から「accdb」への変換は簡単です。
mdbファイルを開き、
「ファイル」→「保存して発行」→「データベースに名前を付けて保存」→「Accessデータベース(*.accdb)」→「名前を付けて保存」
で保存のダイアログが出るので、元と同じ名前で保存すれば「accdb」への変換完了です。
変換するメリット
複数値を持つフィールドが使用可能
コンボボックスに「複数の値を許可」が新設されました。
設定方法は以下です。
(フィールドを追加する際に、データ型でルックアップウィザードから設定する方法もあります)
1.コンボボックスで選択したい値を、「値集合ソース」にセット
2.「複数の値を許可」にチェックを入れる。
設定すると、このような形でフィールドに複数の値を入れることができるようになります。
また、以下のクエリで複数の値が入ったテーブルを抽出すると、複数レコードにわたって値が抽出されます。
↓
添付ファイル データ型が使用可能
添付ファイル(最大2GB)を格納できるデータ型が新設されました。
↓
今までもハイパーリンク型でファイルのリンクを貼ることはできましたが、
取り込むことができるようになったおかげで、
例えば以下のようにフォーム上に画像を簡単に表示できるようになりました。
SharePointとOutlookとの連携強化(セキュリティ要件のクリア)
今回セキュリティ面が見直され、SharePointとOutlookのセキュリティ要件がクリアされました。
Access2007からは、
「accdb」と「mdb」のどちらからでもSharePointとOutlookへの連携は可能ですが、
「mdb」の場合、安全でないコードをデータベースに含めることができるらしく、
SharePointとOutlookからブロックされてしまう、ということがありました。
暗号化の強化
以前のバージョンでは赤枠に「ユーザーと権限の管理」というボタンが設置してありましたが、
「パスワードを使用して暗号化」に変わりました。
今回の暗号化は、以前のバージョンのAccess(mdb)よりも強力な暗号化アルゴリズムが使用されているそうです。
長いテキスト (メモ型) フィールド履歴の管理
メモ型フィールドに変更履歴を追加できるようになりました。
設定は「追加のみ」を「はい」にするだけです。
↓
履歴は以下のように保存されます。
集計フィールドが使用可能(Access2010以降)
テーブルのデータ型に集計フィールドが追加されました。
集計フィールドを使うことで、クエリを使わずテーブルのみで計算できます。
データ型を選択すると、式ビルダーが表示されるので、
式のカテゴリ(テーブルの項目)を選択しながら設定します。
↓
変換するデメリット(不具合)
Access2007より古いバージョンで「accdb」を開けない
「accdb」はAccess2007より前のバージョンでは開くことができません。
なので、組織にAccess2002やAccess2003が未だ存在するのであれば、買い替えるまでは変換しない方がよいでしょう。
データベースのレプリケーションが使用不可
レプリケーションとはAccessファイルのレプリカを作成する手法(レプリケート)ですが、
「accdb」では機能がなくなりました。
Accessファイルのレプリカとは
Accessファイルを非共有で使用する場合のミラーリング(同期)手段です。
一般的に組織でAccessファイルを使う場合は、共有フォルダを利用し、同じAcceessファイルを使用します。
ただ、例えば外出する際に端末を持ち運び、Accessファイルについても外出先で更新する時等、
普通にAccessファイルをコピーしてしまうと持ち帰ったときにデータの同期が困難です。
その際に、元のAccessファイル(デザインマスタ)のレプリカを作成し、外出する際はレプリカを持ち運び、
外出先から持ち帰った際はレプリカをデザインマスタに同期することで、
レコードの更新等を反映させることができます。
Access2013以降からは一切使用できない
レプリケートされたデータベースは、Access2013以降からは以下のエラーで「mdb」であっても使用できません。
「現在のバージョンのMicrosoft Accessでは、レプリケートされたデータベースはサポートされていません。
このデータベースを使用するには、以前のバージョンのMicrosoft Accessで開いてください」
レプリケートされているmdbをaccdbに変換するには
Access2010以前のバージョンで、レプリケートされたmdbのデータを空のmdbにインポートして、
accdb変換します。
データベースのインポートについては以下で触れてますので参考にしてください。
ユーザー レベル セキュリティ(ユーザーと権限の管理)が使用不可
ユーザーレベルセキュリティとは、ユーザやグループ単位で各種操作への権限を付与する機能です。
一見便利そうな機能ですが、管理が煩雑になったり、
使用する端末に「SYSTEM.MDW」というファイルが必要となったりと少なからず問題があったようです。
リンクテーブル元であった場合、リンクを更新する必要あり
変換する「mdb」が、他のAccessファイルからリンクテーブル先となっている場合、
「accdb」への変換後、他のAccessファイルからリンクテーブルが見つからない旨のエラーメッセージが出ます。
その場合、以下のリンクテーブルマネージャーからエラーが出たAccessファイルにてリンクテーブルのパスの更新が必要です。
Recordsetオブジェクトを使用している場合、型の不一致エラーが発生
もし変換前の「mdb」でDAOライブラリを参照しRecordsetオブジェクトを使用している場合、型の不一致エラーが発生します。
「accdb」ではADOライブラリが初めから参照設定されていますが、
ADO・DAOの両方のライブラリにRecordsetオブジェクトが存在するため競合するからです。
そこで競合を解決するために以下のように明示します。
「Dim XXX As Recordset」であれば、
「Dim XXX As DAO.Recordset」でOK
以上、「mdb」はいずれ使えなくなる可能性があるため、
デメリットが許容できるのであれば、お早めに「accdb」変換されることをおすすめします!