2014/07/03

7/03/2014
 今日はAccess2013について書いてみます。
 Access2013は2000、2002〜2003、2007、2010、2013の形式が使えます。
 Access2000〜2003まではmdbファイル形式ですが、2007からはaccdbとなっています。
 mdb形式はOS機能として提供されているJetEngineで扱える形式ですが、accdbはAccessの機能として提供されるデータベースですので少々違いがあるようです。
 当方は互換性を高めるなら、データベースエンジンが同じなmdbをおすすめしたいと思います。

accdbでも2G制限あります

 最新機能や最新性能を重視される方はaccdbを採用されてても良いかもしれませんが、mdbで一番問題になると思われる2GBの容量制限はaccdbでも存在しており、あまりメリットは無いように思いました。

オブジェクト名称の扱いが変わっています。

 Access2013ではaccess2010と同じく、オブジェクトの扱いが変わっており、以前(Access2003まで)は問題にならなかった全角の数字から始まる名称は使えなくなっています。(名前を変える必要があります。)
 テーブル内に全角数字から始める項目が定義されている場合、SQLのSELECT文などでその項目を使う際には[10値]のように[]で囲む必要があります。
 クエリなどで定義されたSQLなどもすべて対応する必要があるので、全角数字から始まる項目名が定義されている場合、それなりに覚悟して修正が必要となります。

ソース管理機能がなくなっています。

 また、access2013にて廃止された機能があり、なんとソース管理用のVSSプラグインやTeam Foundationの機能が使えません。
 ソース管理はできなくて良いと考えてのことでしょうか?
 複数人のチームによる開発では非常に問題になると思います。

リモートMDBは壊れる可能性あります。

 Access2010と同じく、 「Windows7(Vista,Server2008,2012)を利用したファイル共有に気をつけてください。ファイルが壊れる可能性があるそうです」には注意したほうが良いようです。
 筆者はMSの限定パッチをクライアント側に導入することで対応しました。
 筆者はこの件でファイル破壊を引き起こすケースについて経験はありませんが、ロック制御不良と思われるリンクテーブル参照障害の経験があります。  現象としては、複数人で使用しているMDBをWin7以降のOSからアクセスすると、不定期に「実行時エラー'3045': xxx.mdbはすでに使用されています」とのエラーが発生して使えなくなります。  前述のリンクの記事にて対処出来ましたので、同様の現象でお困りの方はご利用ください。

プログラムやクエリはテキスト化して変更しましょう。

 最後に、それなりに規模感のあるmdbファイルの場合、プログラムやクエリなどを総合して全文検索することができないなど、mdbファイルのままでは対応が困難なものがあります。
 筆者は、MDB内のプログラムやクエリ、フォームなどをすべてテキストファイルにエクスポートする機能を作成し、対応しました。
 もちろん、逆のテキストファイルをmdbにインポートする機能も準備し、テキストファイルレベルで改修したものを読み込む構造としました。
 このようにすれば、単なるテキストファイルですので、VSSにて履歴管理し、テストモジュールやリリースモジュールを作る際には、インポート機能にてコンパイルのように対応すれば、mdbでも特段取り回しに困ることもないということで、無事に対応できました。
 mdbテキスト化ツールについては今後公開していきたいと思います。有償にするかもしれませんが、安価に抑えたいと思いますので、興味のある方は購入してみてください。
 なお、コンバートを依頼されたい方がおられましたら、twitter kazuihitoshiで対応できますので、ご依頼ください。

0 コメント:

コメントを投稿