• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MDBファイルの共有が一方通行??)

MDBファイルの共有で一方通行??

このQ&Aのポイント
  • Access2003で作成した在庫管理の.mdbファイルを2人で共有した際に、片方のユーザが先にファイルを開いていると、もう一方のユーザはファイルにアクセスできない問題が発生します。
  • ネットワーク上のHDDにファイルを置いて共有をテストした結果、先にファイルを開いたユーザによってアクセスが制限される状況が発生しました。
  • この問題の原因は特定できておらず、先にファイルを開いたユーザによる制限が発生する一方通行の状態となっています。

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

  • ベストアンサー
  • x0000x
  • ベストアンサー率52% (67/127)
回答No.4

#1です。 先ほど回答した後で、気づいたのですが、 >・インデックスが有効範囲にありません。 もコードのエラーでは? 分割する際にフォームが開いていたなんてことないですよね? もしくは、もう一方の端末で操作していたとか? (これは、無いですね。分割時にテーブルを排他するはずですから) データベーの最適化/修復後は、1回ファイルを閉じてから、再度表示し直してください。 起動時に自動で処理するものがある様なら、SHFTキーを押下したままで***.mdbを開きましょう。(マクロの実行を抑止できます)

Gntym
質問者

お礼

丁寧なご回答、ありがとうございます。 No.3,4について取組んでみます。 ちなみに、分割後の****.mdbファイルのテーブルにはリンクのマーク(⇒)はついていませんでしたので、うまく分割できていないようです。 教えて頂いた手順をまずは試してみて、修復作業がうまくいけばよいのですが、 うまくいかないようでしたら、整理のつもりで1から作りなおしてみようかとも思います。(フォームやレポート等の"飾り"の部分は流用します) 共有の問題から、分割の質問になってしまってありがたくも申し訳ない感もありますが、 結果について少々時間を頂きますがご報告させていただきます。

Gntym
質問者

補足

間を空けましてすみませんでした。 テーブルなどを見直して新しくデータベースを作り直しましたが、同じエラーが出てしまいます。 コードをAccess9でコンパイルしてみましたが、エラーは出ませんでした。 原因が追究しきれない部分もありますので、手作業でのリンクテーブルで運用したいと思います。 この場合、下記の様に分割してみましたが、アドバイスなど頂けたら幸いです。 元の****.mdb ---- ****_app.mdb(フォーム、クエリ、マクロ、リンクテーブルで構成) |        ---- ****_db.mdb(テーブルのみで構成) ****_db.mdbはネットワーク上のHDDに置いて、各PCから****_app.mdbでアクセスしテーブルを直接書き込みさせます。 暫くテストしながら運用してみたいと思います。

その他の回答 (3)

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.3

こんにちは。#1です。 どんどん深みにハマル様であせりますが…頑張りましょう。 元のファイルがbackupされていれば、後はチャレンジあるのみです。 >・インデックスが有効範囲にありません。 分割操作中に発生したと言うことですね。 分割時の****_be.mdbの保存先指定は、ローカルのDISKでしょうか? もし、ネットワークドライブに保存しようとしているなら、ローカルに保存しては、如何でしょう? 分割前に、****.mdbの最適化/修復(メニューの「ツール」-「データベースユーティリティー」-「データベースの最適化/修復」)を実行してください。 >一応****.mdbファイルに対して、****_be.mdbファイルは作成されました。 >元の****.mdbのテーブルはリンクテーブルではなく、通常のローカルなテーブルの様でした。 >****_be.mdbはフォームなどが無いmdbファイルになっていました。 >これが分割の完成形でよいのでしょうか? ****.mdbはテーブルがリンクテーブルになり、****_be.mdbはテーブルのみなります。 ****.mdbのテーブル名の前に"⇒"(MS-ACCESS2003の場合ですが)マークが表示されていますか? また、****.mdbのテーブルのデザイナービューを表示する際に「'**'テーブルはリンクテーブルです。~」が 表示されますか? テーブルの数は一致してますか? 表示されている場合でテーブルの数が一致している場合には、正しく分割できています。 表示されない場合または、テーブルの数が一致しない場合は、ローカルテーブルのままです。 メッセージ表示により、分割が失敗したか、中断したと思われます。 データベースの最適化/修復して、それでもだめなら、不正なデータチェックする必要があります。 ただし、壊れているテーブルを特定しないテーブル修復もできないかも…。 >・プロシージャの呼び出し、または引数が不正です。 >とのダイアログが発生しました。 分割処理に際し、Accessがコンパイルします。 その時のエラーではないでしょうか? フォームもしくは、モジュールのコード画面(フォーム選択後にメニューの「表示」-「コード」を選択)を表示し、 メニューの「デバッグ」-「***のコンパイル」を実行してみてください。 エラーコードの箇所でコンパイルが停止した場合、該当エラーを改修してください。 コンパイルは、エラーがなくなるまで繰り返します。 操作順まとめ ***.mdbはもとのCOPYで行います。(分割に失敗したファイルは使用しません。) (1)***.mdbのコンパイルエラーを取り除く。 (2)***.mdbの最適化/修復を実行 (3)***.mdbを分割(保存先はローカルDisk) (4)****_be.mdbのネットワークドライブへの配置(格納) (5)リンクテーブルマネージャで、****.mdbのテーブルリンクのPATHを変更します。

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.2

こんにちは。 #1です。 >テーブル名の変換処理等は… 不要です。 アプリケーション側からは、分割前も後も同じテーブル名でアクセス可能です。 >テーブル名についてあらかじめ考慮しておいた方がいい事があれば、参考意見を頂戴できればありがたいと思います。 すべてのテーブルがMS-ACCESSであれば、特に意識せずにすみます。 現状のMDBファイルのbackupを用意し、試しに分割してみてください。 テーブル名の先頭に”リンク”であることの印がつきますが、テーブル名の変更は行われません。

Gntym
質問者

補足

ご回答ありがとうございます。 試しに分割を実行してみましたが、、、 ・インデックスが有効範囲にありません。 ・プロシージャの呼び出し、または引数が不正です。 とのダイアログが発生しました。 一応****.mdbファイルに対して、****_be.mdbファイルは作成されました。 元の****.mdbのテーブルはリンクテーブルではなく、通常のローカルなテーブルの様でした。 ****_be.mdbはフォームなどが無いmdbファイルになっていました。 これが分割の完成形でよいのでしょうか? また、この場合ダイアログのメッセージに対処する事を優先するべきかと思いましたが、 上記のメッセージからどのように進めればよいと思いますか? プロシージャの呼び出しについては、ある程度フォーム構成を作ってから名前を変えたフォーム名があるので、引数の整合性に問題があるかもしれません。 これはエディター上で目視にて確認する方法でよいでしょうか??? また、インデックスの有効範囲については、能力不足のために理解ができませでした。 WEBで調べながら、進めて行こうと思いますが、ご参考意見を伺えたら幸いです。

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.1

こんにちは。 >原因に心当たりがありましたら… 原因はわからないのですが、ACCESSアプリケーションを複数人で利用する場合には、 DB部分(テーブル)とアプリケーション部分(フォーム、クエリー、レポート…)を分離して利用します。 ツール⇒データベースユーティリティ⇒データベース分割ツール でDB部分とアプリケーション部分に分離できます。 アプリケーション部分から、各テーブルへはテーブルリンクで参照しています。 ファイルの配置は、以下の様に配置します。 DB部分は、共有HDDに格納。 アプリケーション部分は利用する各PCに格納します。 ※配置により、DB部分のPATHが変更されるので、配置後に以下を実行する必要があります。 ツール⇒データベースユーティリティ⇒リンクテーブルマネージャー でリンクテーブルのPATHをDB部分のファイルPATHに変更する必要があります。 この操作は、標準でインストールされていないので、ACCESSのCDを用意 して操作してください。 各PCのアプリケーション部分を各々で開いて処理する事が可能です。 参考までです。

Gntym
質問者

お礼

データベースとアプリケーションの分離について、過去からお勧めはあったようでしたが、 2人しか使わないからいいかなぁ、と考えていました。 丁寧にご回答を頂けたので、これを機会に分離して運用してみます。 ちなみに、データベース分割した場合リンクテーブルでの運用になるようですが、 その場合テーブル名の変換処理等はリンクテーブルマネージャーで簡単に処理できるという事でよいのでしょうか? 若しくはテーブル名についてあらかじめ考慮しておいた方がいい事があれば、参考意見を頂戴できればありがたいと思います。 では。

関連するQ&A