• ベストアンサー

MS ACCESSの共有について

Windows2003 サーバーの共有フォルダ(フルアクセス設定) にMSAccess のファイルをいれ,共有しようとしていますが,ファイルを開くと『読み取り専用』になっています。 もともとはMSAccess2003 で作成したものを MSAccess2010 で開いて,このメッセージが出ています。 MSAccess2010 に変換したり,SQLserver2008 EXPRESS をかませたりしていますが,一向に改善しません。 どなたか理由をご存じの方,よろしくお願いします。

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

  • ベストアンサー
回答No.2

ネットワーク フォルダーを使用してデータベースを共有する データベースを共有する最も簡単な方法は、データベースを共有ネットワーク フォルダーに格納することです。これはシステム要件が最も少なく最も簡単な方法ですが、堅牢性が最も低くなります。この方法を使用するには、次の条件を満たす必要があります。 データベースを同時に使用するユーザーが数人であると予想されること。 データベース内にメモ型フィールドが存在しないこと (存在する場合は、複数のユーザーによって同時に更新されることがないこと)。 ユーザーがデータベースのデザインをカスタマイズする必要がないこと。 メモ この方法では、各ユーザーがデータベース ファイルの完全コピーを保有し、無断アクセスのリスクが増えるため、他のデータベース共有方法よりもセキュリティが低くなります。 ネットワーク フォルダーを使用してデータベースを共有するには 1.共有ネットワーク フォルダーを設定していない場合は、共有ネットワーク フォルダーを設定します。 この手順の詳細については、データベースの共有に使用するコンピューターのオペレーティング システムのヘルプ システムを参照してください。共有フォルダーをネットワーク サーバー上に設定するときは、ネットワーク管理者への問い合わせが必要になる場合があります。 2.各ユーザーのコンピューターで Access が共有モードで開くように設定されていることを確認します。これは既定の設定ですが、必ず確認してください。データベースを排他モードで開いているユーザーがいると、データの可用性が低下します。各ユーザーのコンピューターで次の手順を実行します。 a.Access を起動します。 b.[ファイル] タブをクリックし、[オプション] をクリックします。 c.[Access のオプション] ダイアログ ボックスの左側のウィンドウで、[クライアントの設定] をクリックします。 d.[Access のオプション] ダイアログ ボックスの右側のウィンドウにある [詳細設定] セクションの [既定の開くモード] で、[共有モード] をクリックします。 e.[OK] をクリックし、Access を終了します。 3.データベース ファイルを共有フォルダーにコピーします。ファイルをコピーした後、ファイルの属性設定で、データベース ファイルの読み取り/書き込み権限が許可されていることを確認します。ユーザーがデータベースを使用するには、読み取り/書き込み権限が必要です。 4.各ユーザーのコンピューターに、データベース ファイルへのショートカットを作成します。 ショートカットの [リンク先] プロパティにデータベース ファイルへのパスを入力するとき、マッピングされたドライブ文字ではなく UNC アドレスを使用します。たとえば、F:¥sample.accdb の代わりに、¥¥computername¥shared.accdb を使用します。 メモ この手順はユーザー自身でも実行できます。 http://office.microsoft.com/ja-jp/access-help/HA010342110.aspx 上記の内容が参考になると思います。

GEB02057
質問者

お礼

解決しました。 というよりも,共有フォルダの設定を変えただけで問題なく動作しています。 何だったのかなぁ……? お騒がせしました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.3

残念ながらNo2さんの方法は問題の解決には至らないと思います。これはちゃんとプログラムしてロック処理を行っているAccessアプリに有効な手段です。フォームやレポートのパフォーマンスは向上します。でもロックが解決するわけではありません。 このような使い方でロック処理をしないでたまたま偶然動いている場合で数ヶ月経って修復不可能なぐらい破壊された例は山ほど有ります。 その時点では仕事に組み込まれている上にデータも戻らない。そこからちゃんとプログラムするなんて無理。 首に成りそうで泣きつかれた経験は何度も有ります。 悪いことは言わないので遠回りでも、確実な方法をお勧めします。

GEB02057
質問者

お礼

解決しました。 というよりも,共有フォルダの設定を変えただけで問題なく動作しています。 何だったのかなぁ……? お騒がせしました。

すると、全ての回答が全文表示されます。
  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

レコードにロックがかかるからです。 レコードロックは大事な機能で、編集中はほかの人が編集できないように待ち状態にする機能です。これがないとバッティングしてDBが壊れてしまいます。 SQLサーバーに直にプログラミングをすればこのロックはレコードひとつ(一行)に掛ける事が出来ます。でもAccessはもともと一人で使うものですから、テーブル全体にロックをかけようとします。少なくても表示されているもの、読み込んだものはロックをかけて離しません。 リンクテーブルにしてSQLサーバーをかませてもプログラミングしてくれるわけではありませんので、同じ事です。 つまり解決策は一行だけにロックするようにプログラミングする事になります。これは対Accessであれ同じ事で、読み取りで開き、更新ボタンで目的の行だけをピンポイントで更新するよう、VBAで細かく制御するプログラムを書く事が必要ということになります。 であればいきなりSQLサーバーに対して書いたほうがいずれは安心ですけど。

GEB02057
質問者

お礼

解決しました。 というよりも,共有フォルダの設定を変えただけで問題なく動作しています。 何だったのかなぁ……? お騒がせしました。

すると、全ての回答が全文表示されます。

関連するQ&A