• ベストアンサー

Accessの有効なメンテナンス方法は

現在Accessで会社の業務アプリケーションを作成しています。 ファイルサーバのフォルダに作成したmdbファイルを置き、各クライアントには、デスクトップにmdbのショートカットを配置してあります。 しかし、最近mdbのサイズが大きくなり、たまにファイルが破損するという現象が起きるようになりました。 そこで、mdbをテーブルとそれ以外に分け、テーブルのみのmdbをサーバに置き、テーブル以外のmdbをそれぞれのクライアントにコピーしました。 これで少しは改善すると思うのですが、この業務用アプリケーションはかなり頻繁に改良/修正が行われます。今までは、サーバに置いてあるmdbを修正するだけで良かったのですが、今回各クライアント(20台)にテーブル以外(クエリ・フォーム・レポート等)のmdbをコピーして運用しているので、一度修正が発生すると、この各クライアントのmdbを更新しなければなりません。 これはかなり手間がかかってしまうので、なんとか違う運用方法がないか、いろいろ検討しています。 実際に作業するのは私一人です。 一人でも20台のクライアントのmdbを簡単に更新できる方法はないでしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • soaikats
  • ベストアンサー率58% (14/24)
回答No.4

ログオンするだけでサーバにある最新の プログラムが配布される方法です。 -- サーバ\\Asvr\Sample\にて  1.PG.mdbとDB.mdbを格納する。 各クライアントにて  2.以下のように記述したバッチAA.batをC:\に格納する。   @echo off   copy /y \\Asvr\Sample\PG.mdb C:\  3.バッチのショートカットをスタートアップに入れる。  4.バッチを実行後、C:\PG.mdbのショートカットを    デスクトップに作成し、名前を変更する。 -- いかがでしょうか?

stressman
質問者

お礼

soaikatsさん、ありがとうございます。 こんな簡単な方法で最新版をコピーできるとは思いませんでした。 おもしろそうなので試してみたいとおもいます。

その他の回答 (3)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

アプリMDB と データMDBのテーブルにバージョン番号フィールドを設け アプリMDBのAutoExec マクロでチェックして 必要に応じて下記VBSファイルを呼び出して自身は終了するでは? Test.VBS の内容 Set ws = CreateObject("Wscript.Shell") Set fs = CreateObject("Scripting.FileSystemObject") serverPass = "\\ServerName\共有名\アプリ.mdb" localPass = ws.SpecialFolders("DeskTop") & "\アプリ.mdb" 'wscript.echo serverpass & vbCrLf & localPass ws.PopUp "しばらくお待ちを" , 3 Wscript.Sleep 1000 'アプリMDB終了までの時間稼ぎ If fs.FileExists(serverPass) Then fs.CopyFile serverPass ,localPass,True Else Wscript.Echo "サーバーにファイルが見当たりません" Wscript.Quit End If 'wscript.echo "msaccess.exe" & Chr(32) & Chr(34) & localPass & Chr(34) ws.Run "msaccess.exe" & Chr(32) & Chr(34) & localPass & Chr(34)

stressman
質問者

お礼

nicotinismさん、ありがとうございます。 VBスクリプトは全く分かりませんので、一度調べさせて もらいます。

noname#140971
noname#140971
回答No.2

各クライアントのMDBを開発用PCで参照するようにしておけばいいと思います。 ドラッグアンドドロップを20回やればいい訳です。 ただ、その場合、リンクを再構築しないで済む仕掛けはして置く必要があります。 ただ、その場合、リンクを再構築する仕掛けはして置く必要があります。

stressman
質問者

補足

Husky2007さん、ありがとうございます。 各クライアントのmdbを置くフォルダをネットワーク上で共有できる形にしておき、修正版が出来た場合は、各クライアントの共有フォルダ上のmdbを更新するという考え方でよろしいでしょうか。 なるほど、それなら各クライアントまで足を運ぶ必要はなさそうですね テーブル以外のmdbはテーブルの部分が全て「テーブルのリンク」です。 これは更新の都度、リンクの再構築をしなければならないのでしょうか

noname#182251
noname#182251
回答No.1

テーブルのみのmdbとテーブル以外のmdbをともにサーバに置けば良いでしょう。

stressman
質問者

補足

fuuten_no_nekoさん、ありがとうございます。 テーブル以外のmdb(以下フロントmdb)もサーバに置き、それぞれのクライアントにはそのフロントmdbのショートカットを配置させるという考え方でいいのでしょうか。 上記の運用方法だとパフォーマンスの方は落ちないでしょうか?

関連するQ&A

  • Accessのセキュリティ対策

    Accessで業務用のアプリケーションを作成し サーバ上の特定のフォルダに置いてあります。 ファイルはmdbファイルです。 テーブルもクエリもフォームもレポートも 何もかも一つのmdbファイルの中にあります。 そして、各クライアント(約15台)のデスクトップに サーバ上に置いてあるmdbファイルのショートカットを 配置し、各自に利用してもらっています。 サーバ上の特定のフォルダは 言ってしまえば社員であれば誰でも見れることが できるフォルダなので、mdbファイルを削除または コピーすることが可能です。 同じようにAccessで業務アプリケーションを作成し その中に重要なデータを格納してある場合、 どのような対策を講じていますか アドバイス宜しくお願いします。

  • Accessの自動終了

    Accessでテーブルのみのmdbをサーバに置き、それ以外(フォームとか、レポートとか)のmdbを各クライアントに置いて運用をしています。 かなり頻繁に追加修正があるため、誰も利用していない 昼休みに作業を行っているのですが、誰かがmdbを開きっぱなしに していると、ロック状態になり修正ができません。 仕方なく利用中のパソコンを調べてAccessを終了させています。 そこで、ある一定の時間に何も操作がなければ自動的に終了する といった処理は可能でしょうか。 今は20台ぐらいなのですが 将来的にもっと台数は増えていきそうなので、管理が大変に なってきそうです。 宜しくお願いします。

  • Accessのセキュリティ対策

    現在Accessで業務用のアプリケーションを開発しています。 一応サーバがある環境なのですが、Accessで作成したmdbは サーバの誰でもアクセスできるフォルダに置き、みんなが利用 できるようになっています。 しかし、これでは悪意のある者がmdbのあるフォルダにアクセスし mdbをそのままコピーして持っていってしまうことができます。 又、削除してしまうこともできます。 そこで、mdbのテーブル部分をMSDEを利用して、アップサイジングし 各クライアントにはadpファイルを設置しようかと思っています。 これであれば、データはサーバのSQLサーバ(MSDE)の中なので 心配ないと思っていますが、どうでしょうか。 それほど知識のない者でも、データを取り出せたり するのでしょうか。 宜しくお願いします。

  • Accessのデータ共有について

    現在社内の顧客管理システムをAccessにて構築しており、データテーブルファイル(mdb)をファイルサーバに置き、クライアントPCはフォームやクエリだけのmdbを使用してテーブルのリンクでデータ共有しています(Accessのデータ分割ツールにてテーブルとフォーム、クエリを分離しただけの状態で運用しています)。これまでは、この状態でも運用出来ていましたが、データ量が多くなるにつれ、段々動作が重くなってきた為、処理速度改善の為に、以下の二案を検討していますが、どちらの案が効果的なのでしょうか? 【案1】 クライアント用mdbファイルに同じテーブル構成の一時テーブルを作成し、mdbファイル起動時と、「更新」ボタンを別途作成し、「更新」ボタンが押下されたタイミングで、ファイルサーバのデータベースからADOにて一時テーブルに全データを読み込む。更新系の処理は、各クライアントの一時テーブルとファイルサーバのデータベースに対して行う。 【案2】 現状フォームの遷移については、 「DoCmd.OpenForm」関数の引数に検索条件を指定する方法で行っている為、この部分を ・ADOにてデータを取得  ↓ ・遷移後のフォームに値をセット と言った処理に変更する。 また、上記以外の方法で何か良い方法がありましたらご指摘頂ければと思いますので、よろしくお願いします。

  • Accessでの理想の運用形態

    はじめまして、Accessで業務用アプリケーションを作成しています 独学なので、何が正しいというものを分からず、 主にインターネットの情報を元に作成しています そこで、まずテーブルとそれ以外(クエリ、フォーム、レポートなど)を分割し、テーブルだけのmdbはファイルサーバー上に置いています 利用者のパソコンのデスクトップに、それ以外のmdbを置いています 接続はテーブルのリンクのみです ですので、利用者のmdbを開くと同時に、ファイルサーバー上の mdbも開き、ldb(ロックファイル)も生成されます これをファイルサーバー上のmdbを開かずに、テーブルのデータを 取得することは可能でしょうか DAOとかADOでVBAを使わなければならないのでしょうか アドバイスよろしくお願いします ちなみに、SQLServer2005ExpressEdtionをどこかのパソコンに インストールし、データベース環境を一新しようと思ったのですが どうすればいいのかがイマイチ分かっていません ヒントでもいいので、教えていただけないでしょうか

  • MS Accessを共有した際にファイルが壊れるのを回避する方法

    ちょっとしたツールをAccessで開発したいのですが、 Accessファイルを共有するとファイルが頻繁に壊れると伺いました。 そこで以下のような回避策を考えてみたのですが、 効果はありますでしょうか。 これでは、あまり意味がないとか、他に注意したほうが良い点等ありましたら、アドバイスいただければと思います。 なお、ツールは、50名位が使用(同時アクセスは3名~4名程度)予定で、 サーバ上にメインのmdbファイル(以下「サーバmdb」)を、各クライアントにもそれと連携するmdbファイル(以下「クライアントmdb」)を置くことを想定しています。 (1) データは全てサーバmdbで保持する。クライアントmdbには、入力用のフォームと、サーバmdbから取得したデータを一時的に保持するテンポラリのテーブルを持つ。 (2) クライアントmdbからサーバmdbにアクセスし、必要なデータをクライアントmdbにインポートする。 (3) クライアントmdbで、取り込んでデータをもとに、データの追加・修正を行い、当該データをサーバの所定のディレクトリにCSVで出力する (4) サーバmdbは、日次で、所定のディレクトに配置された、クライアントmdbから出力されたファイルを読み込み、データを更新する (5) (4)の読込み・更新作業中は、クライアントmdbからサーバmdbにはアクセスしない(外部ファイルで制御) 以上です。 要は、クライアントmdbが、直接サーバmdbを更新しないようにし、参照のみにするということです。 よろしくお願いします。

  • クライアントサーバの運用方法

    (今朝、別なカテゴリに投稿したのですが・・・再質問させていただきます。) 1台のPCで業務システム(Access2000)を運用していますが、2台増え3台で運用することになりました。また、それとは別にサーバ機(Windows2000Server)があります。 最終的にはMSDEに置き換えるつもりなのですが、時間がかかりそうなので、とりあえずテーブルのみをMSDEにアップサイズし、クエリー、フォーム、レポートをMDBのままODBCでテーブルに接続し運用しようと考えています。 そこで質問なのですが・・・ ・この方法でクライアント/サーバ型になるのでしょうか? ・そもそもこの方法で良いのでしょうか? ・テーブルのみのMDBをサーバに置き3台のPCで共有する方法と大差ないのでしょうか? *速度アップは望んでいません。今までと大差なければ問題ありません。 以上よろしくお願いします。

  • テーブルリンク方法を教えてください

    業務用アプリケーションをACCESSで運用していますが、 近々クライアント数が増えるのでACCESS+MSDEでバージョンアップを試みているところです。 が、初心者なのでうまく出来ずエラーになり、どうして良いのか色々な書籍を見ているのですが、よくわかりません。 どなたか教えてください、よろしくお願いします。 開発環境 Win XP Home Edition SP2 Access 2002 MSDE2000A 旧業務用アプリケーション .mdbはテーブルとフォーム・レポート等は別々にして稼動時に.iniファイルでリンク 新業務用アプリケーション 1.旧業務用アプリケーション同様、.adpは分けました。 2.テーブルは新規に作成 3.フォーム・モジュールは旧よりインポート  (テーブルリンク方法は旧と同じ)

  • このような使い方で良いのでしょうか?

    質問させていただきます。 1台のPCで業務システム(Access2000)を運用していますが、2台増え3台で運用することになりました。また、それとは別にサーバ機(Windows2000Server)があります。 最終的にはMSDEに置き換えるつもりなのですが、時間がかかりそうなので、とりあえずテーブルのみをMSDEにアップサイズし、クエリー、フォーム、レポートをMDBのままODBCでテーブルに接続し運用しようと考えています。 そこで質問なのですが・・・ ・この方法でクライアント/サーバ型になるのでしょうか? ・そもそもこの方法で良いのでしょうか? ・テーブルのみのMDBをサーバに置き3台のPCで共有する方法と大差ないのでしょうか? *速度アップは望んでいません。今までと大差なければ問題ありません。 以上よろしくお願いします。

  • AccessとSQL server 2005 Express Editionについて

    今ある、Accessの照会システムがあります。 テーブルはサーバ(Win2003Server)にmdbファイルを置いてます。 照会画面、レポート等のプログラムは各クライアントにそれぞれmdbを置き、サーバにあるmdbファイルをリンクテーブルで参照しています。 今後照会だけでなく入力エントリプログラムを追加していくのですが そのエントリは9台同時に入力することが考えられます。 今のmdbで9台同時複数エントリはAccessのmdbでは当然無理なので 今あるインターフェースをAccessで DBをSQL server 2005 Express Editionで考えています。 容量はMAX4GBと聞いているのですがデータの規模は4GBで問題ありません。 SQL server 2005 Express Editionでクライアント9台同時接続できるのでしょうか? 費用をかけれないので無償のSQL server 2005 Express Editionで考えています。 可能かどうか知りたいのです。9台の同時接続で運用にも耐えれるのかも疑問です。Express Editionでは無理があるのかも知りたいのです。 無理であれば今ある資産を利用して費用をかけないで済む方法があれば助かります。 どうぞよろしくお願いします。