- 締切済み
Accessでファイル共有
質問させていただきます。 環境はクライアント3台(Xp Pro、すべて同じ機種)、サーバー1台(Win Server2000)、LAN100BASE-TXです。 Access2002で販売管理をつくり、プログラムMDBは各クライアント、データMDBはサーバに置き、それぞれのクライアントがリンクするようにしています。 そこで、2台以上で利用する場合、動作が遅くなります(たとえばフォームを開くのに10秒くらい)。 この環境では仕方ないのでしょうか?それとも改善できるのでしょうか?MSDEへ置き換えれば改善できるのはわかりますが、現状の環境で改善できればベストです。 以上、よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 9013yagi
- ベストアンサー率39% (15/38)
通常、リンクしている同一テーブルを複数人が開いた場合、データの量に関わらず、どうしても動作が遅くなるのは、ACCESSでは悩ましいところですよね。 私が以前作成したのは、クライアント8台、サーバー1台(サーバーといっても、元になる テーブルのみを保管したPCですが)の環境で動作させる商品受払管理システムでした。 そのときは、常にバッチ処理でマスターデータをクライアント側の仮テーブルに置き換えてから処理を行っていました。 リンクテーブル ⇒ 仮テーブルへすべて追加クエリ ⇒ 処理 ⇒ 仮テーブルの更新データ(または追加データ) リンクテーブルへ反映 同時にリンクを張っていると、書き込むタイミングが同時になった場合、片方がエラーで未処理扱いになったり、不具合が多いですからね。 数秒、数分おきに最新データが必要な場合は望む処理が出来ないかも知れませんが、データを追加していくだけ、 または、ある程度固定のマスターデータを参照するなら、 これで、速度はだいぶ確保できるとおもいますよ?
tihitです。 分割したテーブルは、拡張子が-be.mdbとなります。 ただし、最適化は手動のみになりファイルを閉じるときに最適化するという機能は使えませんので時々、最適化が必要になります。 アクセスをかけるのはテーブルを外した.mdbファイルや.mdeファイルからやります。 データはすべてテーブルに格納されますから楽になります。 .mdbファイルは誰でもさわって変更されては困りますから管理者を決めておき、他の方が扱えるのは.mdeだけです。 以上
データ(テーブルのみ)をツール→データベースユーテリティ→データベース分割ツールをチェックするとテーブルだけ分離できます。 後はクエリー、フォームなどから普通にアクセスできます。 テーブルをサーバーに置いたときは、アクセスをかける側からツール→データベースユーテリティ→リンクテーブルマネージャーでパスを通せばOKです。他のPCからアクセスできるので手の空いている作業者が扱えます。 誰でも使えるようフォームを作っています。 そんなに難しくないので挑戦してください。
お礼
早速回答ありがとうございます。 今日は時間がなく試せないのですが、休み明けに試してみます。 ありがとうございました。
補足
お世話になります。 試してみたのですが・・・速度アップは改善できませんでした。 何か別に原因があるのかもしれませんね。
- O_cyan
- ベストアンサー率59% (745/1260)
クライアント側のmdbをMDEファイルに変換してMDEファイルからサーバのmdbにアクセスしてみてはどうでしょうか。 少しでも軽くすればなんとかなるのでは。
お礼
早速の回答ありがとうございます。 参考にさせていただきます。
お礼
回答ありがとうございます。 悩んだ末に、とりあえず(この方法が一般的かどうかはわかりませんが・・・)、テーブルのMDBだけをMSDEへアップサイズし、クエリー、フォーム等のMDBからODBCで接続してみました。これだと、スタンドアロン環境で運用しているのと変わらないほどです。 しばらくテストし、問題がなければ当面この方法でいこうと思います。 貴重なご意見ありがとうございました。