次の方法で共有

実行時エラー '3704' が頻発する

Anonymous
2016-01-13T01:34:46+00:00

Access2007、Windows7の環境でタイトルのエラーが頻発します。

エラーメッセージは下記の通りです。

実行時エラー '3704':

このデータベースは、マシン 'PCNAME1' のユーザー 'Admin' が開いています。データベースが使用可能になった時点で、再度事項してください。

ファイルは

Data.accdb

System.accdb

に分かれており、

Data.accdb・・・LANDISKに配置し、共有しています。オブジェクトはテーブルのみ。

System.accdb・・・各ユーザーのパソコンに配置し、Data.accdbへリンクテーブル設定しています。

         フォームやレポート等で処理を行っています。

このSystem.accdbのユーザーは10名程度です。

エラーが出る状況はさまざまで特定できません。

フォームでの登録処理(データの書き込み時)、帳票作成時(データの読み込み時)等です。

エラーが出ても、直後に同じ処理を実行すると正常に終了します。

離れた環境にあるため、直接検証はできていませんが

聞き取り内容、エラー内容、状況から

あるユーザーのトランザクション処理中に

別ユーザーがトランザクション処理中のデータにアクセスしようとして

エラーが発生しているように思います。

例えば、

伝票番号:100番の売上登録処理中に

別ユーザーが伝票番号:100番を含む売上一覧表を出力しようとしたとき。

現在考えている回避策として・・・

数秒待てば、正常に処理を進められるため、クエリ実行部分で

    'Sleep はAPIを使用

    On Error Resume Next

    DoCmd.OpenQuery "クエリ名"

    If Err.Number = 3704 Then

        Sleep 3000      '3秒待つ

        DoCmd.OpenQuery "クエリ名"

    End If

のように、エラーがでた場合に少し待つようにしようと考えておりますが、

対象箇所が多く、あまり現実的ではないのでは、とも思います。

このエラーのスマートな回避策があれば、ご教示お願いいたします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2016-01-15T00:39:07+00:00

おはようございます、ずっちです。

トランザクション処理との事なので、

テーブルorレコードをロックするようコーディングしているため起きているので、

バージョンによる発生頻度は変わらないと思います。

なので安定した稼動をさせるには、ロックする時間を最小にする努力や、

万が一バッティングしてしまった時の対処などが必要になるのかなと思います。

最新バージョンのAccessを買う賭けをする前に、開発者の腕を見せてやりましょうw

この回答は役に立ちましたか?

0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2016-01-28T09:12:58+00:00

    ありがとうございます。

    お礼が遅くなりました。

    Access2007のパソコン複数台の環境でエラーが発生してますが

    直接の確認がなかなかできないため、

    Access2013でトランザクション処理を途中でストップした状態にして

    別PCからSelectを試してみたところ、エラーは発生しなかったので、

    バージョンアップすれば、エラーの頻度は減るのかな・・・と。

    ただ、環境(ハードや使用台数等々)が違うところでテストをしているので、

    バージョンアップで必ずしも改善するかは不明ですし、

    少し待てば、正常に処理を続行できることは確実なので、

    ずっちさんのおっしゃるように、コーディングにて回避しようと思います。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2016-01-15T00:15:24+00:00

    ずっちさん、ありがとうございます。

    やはり、地道にコード変更をしていくしかないのですね。

    Web検索で情報を探している中で

    実行時エラー '3704':

    このデータベースは、マシン 'PCNAME1' のユーザー 'Admin' が開いています。データベースが使用可能になった時点で、再度事項してください。

    このエラーが、Access2007で起こりやすい

    といった記事を見かけたので、

    Accessのバージョンアップをすれば頻度が減ったりしないかな、

    と淡い期待をしてみたものの、

    お金もかかりますし、確実じゃないので

    (その後、その記事を見つけられなくなってしまいました…)

    コード変更の方での対応を第1候補として、

    もう少し環境・使用状況を考慮して模索してみます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2016-01-13T10:03:20+00:00

    こんばんは、ずっちです。

    冷たいようですが、がんばるしかないんじゃないかなーと思います。

    クエリ実行の所だけを別プロシージャにして、

    3704Errorを回避できるまでループするような仕組みを作ったりすれば、

    多少は楽になる・・・かな・・・?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません