[Accessデータベース開発TOP]
[Access顧客・会員情報管理] [Access業務管理カスタマイズ] [Accessデータベース構築指導サポート]

★AccessからSQLServerへ
 MIGSYSTEM Access活用サポートへ
 Accessは、他のシステム開発ツールと比較し、非常に簡単に、目的とする形に作り上げることができます。

 そのため、自社の担当者が市販の本で勉強しながら、経営者、管理者、使用者の意見、要望を直に聞きながら、統合システムとも言えるくらいのシステムを実現している会社もどんどん増えてきました。

 ところが、そういった中、システムの目的自体は達成しているとは言え、その活用度、使用する人の数、データ数が増えるにつれ、安定度、堅牢性、拡張性といった問題をかかえるようになります。

簡単に言えば
・すぐシステムが止まる。
・データが壊れる。
・いらないテーブル、クエリーなどのオブジェクトがやたら増え、自社でも何が何だかわからなくなってきた。
というような限界が出てくるようになります。

 活用度が増し、基幹システムとなってきたものが、突然、使えなくなってしまったらどうなるでしょうか?大変なことになります・・・

 そのために次のステップとして、Accessだけのデータエンジン(MDB)を、MSDEや、SQL−Serverに、アップグレードしようとします。

 データ自体をうまくSQL−Serverに移し変え、とりあえずは堅牢性を確保できるかもしれません。しかし、複数のユーザーがアクセスし、新規追加、修正、削除などの同時アクセスの可能性が少なく無い場合、データロックなどをうまく考えないと、結局、安定性は実現できません。逆にそれさえうまく作りこんでゆけば、規模にもよりますが、多くの中小企業におけるAccessシステムでは、Accessだけでのデータベースでも安定しているものです。テーブルの設計も大きく影響します。

 以下は、そのような問題を抱えたある企業のシステムを分析し、アドバイスをした事例です。

 弊社では該当のAccessシステムを、支障の無いデータ(必要あれば守秘義務契約も交わしております。)を入れてお預かりし、下記のようなアドバイスサービスも行っております。担当者がいる場合、そのアドバイスの内容に沿って、担当者への開発サポート支援もいたします。


■ある企業のAccessシステム分析事例

問題点

1. Database Object Library Vr.3.6使用時の注意点

 DAO3.6のレコードセットを使用しているようですが、CLOSE時に閉じる処理と開放処理がしていないようです。このことにより複数ユーザーが同じ処理を行った場合、データをつかみ損ねたり、つかんでいるのに切断される可能性があります。複数ユーザーが同時にスタート画面の「先頭」「前へ」「次へ」「最後」などのボタンを押したときに不具合が出ているのではないでしょうか?

2. フォームのレコードソースがアクティブにテーブルを参照

 レコードセット方式が「ダイナセット」を使用していることにより表示されているデータは常にアクティブなデータを表示します。

 その為、同じデータを違うユーザーが掴んだ場合、エラーが発生します。DoCmd.DoMenuItem等のコマンドを使用した場合、テーブルをアップデートする為上記のレコードセットと同じようなエラーが起こる事が考えられます。また、データの件数が多くなればなるほど不具合が発生しやすくなります。

3. オートナンバーの多用

 基本的にオートナンバーは複数のユーザーが同じデータを共有する場合(ネットワークで使用する場合)、あまり使われません。

 確かに主キーに設定した場合便利なのですが、同時にデータアクセスした場合など不具合が非常におこりやすい為です。又、テーブル同士を結び付ける親KEY、子KEYに使用した場合それが顕著に現れます。

 この部分がデータベースの設計で非常に重要な部分であり、データベースの正規化やSQLサーバーへの移行の際に問題になると思われます。

4. テーブル名やクエリ名の名前

 「半角かな」や機種依存文字が使われており、この点でもデータベースの正規化やSQLサーバーへの移行の際に問題になると思われます。

 本来、どちらを使ってもAccessやSQLserverは問題ないはずなのですが、実際に不具合が起こることが良くあります。

5. クエリのネスト階層が深い

 クエリを基にしたクエリはその階層が深い場合、データ更新などに使用した場合、不具合が起こりやすくなります。

 また、データを検証やドキュメント化の際に時間を食われてしまいます。もちろん使わざるを得ないときもあります。

6. 静的なクエリ

 売上等のレポートソースが静的なクエリのようです。変数を利用して動的なクエリを使用しないと手作業でクエリの更新が必要となります。

上記の「1」「5」「6」は修正を加えられますが、「2」「3」「4」は根本的なデータベースの見直しが必要です。

Accessシステムサポートご相談フローへ