こんばんは。原因がわからないので質問させてください。
SQLサーバーのデータをAccessのmdbへリンクテーブルしています。
(SQLサーバー → Access)
全て一つのパソコンで行なっています。(LANには接続していません)
Accessのmdbファイルを起動している時に
ExcelからSQLサーバーのAccessにリンクしている上記のテーブルへ
ADOを使ってデータを追加しています。
(Excel → Access)
しかし、「rs.Update」の部分で
「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」
となってしまいます。
なので、一度mdbファイルを落として、コードを再開すると通るので
ADOでExcel → Accessにデータを追加し終わってから再度mdbファイルを立ち上げています。
また同じ状態(mdbファイルを起動)で
Excel → SQLサーバー へ更新クエリをしようとすると「時間切れになりました」となります。
(こちらもmdbファイルを落とすと再開できます。)
いちいちmdbファイルを落とすのめんどうなのですが
回避する方法はありますか?
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Users\Documents.test.mdb"
rs.Open "テーブル", cn, adOpenStatic, adLockPessimistic
rs("フィールド") = True
rs.Update '保存
rs.Close: Set rs = Nothing
というコードを書いています。
Accessを落とせば正常に動きます。
ご教授よろしくお願い致します。
No.2
- 回答日時:
No.1です。
> (Excel → Access) をできるようになりました。
・・・すみません、すっかり遅くなってしまいましたが
> Excel → SQLサーバー へ更新クエリをしようとすると
> 「時間切れになりました」となります。
の方が未解決ということでしょうか(汗)
だとしたら、・・・SQL Serverは使っていないので、そちらは
ちょっとわかりかねますが、Access側で確認しておくべき点
だけ、挙げてみます。
【Access2003以前】
1)Accessで当該mdbを起動
2)メニューで「ツール(T)→オプション(O)」を選択
3)『オプション』ダイアログで『詳細』タブを選択
4)以下の設定を変更
『既定の開くモード』 : 「共有モード(S)」
『既定のレコード ロック』 : 「編集済みレコード(D)」
『レコード レベルでロックして開く(O)』 : オン
5)Okボタンをクリックしてダイアログを閉じる
6)念のためAccessを一旦終了して、動作をテスト
以上です。
・・・参考になるかどうか・・・(汗)
どうもどうもすいません。
うーん
おっしゃるとおりにやってみましたがうまくできませんでした。
でも参考になりました。
ご回答ありがとうございます。
No.1ベストアンサー
- 回答日時:
私自身は、Access単体(ユーザーは複数ですが)でしか
使用していないのですが(汗)
> Accessを落とせば正常に動きます。
提示されたコードを見る限り、そのテーブルを「排他」で
開いているようです。
そのため、mdbとExcelからの同時アクセスが制限されて
いるものと思います。
(当該テーブルが他のプログラムで開かれていると、排他
展開ができないため、エラーとなる、と:
例え操作している人間が一人で、単一PC端末であっても、
複数の経路での接続は、「排他」の制限対象になります)
ですので、排他モードの指定を共有モードに変更すれば、
解決するのではないかと思います。
具体的には、
【現在】
rs.Open "テーブル", cn, adOpenStatic, adLockPessimistic
【修正】
rs.Open "テーブル", cn, adOpenStatic, adLockOptimistic
になります。
ありがとうございます。
adLockPessimisticをadLockOptimisticへ変えたら
(Excel → Access) をできるようになりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのモジュールエラー?
-
ExcelのマクロでAccessのmdbを...
-
Accessデータベースの最適化をE...
-
「○○○.ldb」のAccess レコード ...
-
ファイルは開くのに「見つから...
-
accessのmdbが勝手にできている?
-
Access2003でVBAツールの参照設...
-
他のPWがかかっているファイル...
-
Accessで「誰々が使用中です」...
-
【Excel】[Expression.Error] ...
-
#1062 - '0' は索引 'PRIMARY' ...
-
「1004:アプリケーション定義...
-
selectした結果の余計な余白を...
-
共有フォルダに誰が何にアクセ...
-
特定のエクセルファイルを起動...
-
Access Excel出力する保存先を...
-
SQLPLUSで結果を画面に表示しない
-
Access VBA を利用して、フォル...
-
ADOを使ったDBアクセス後のメモ...
-
ファイルの途中に文字列を挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「○○○.ldb」のAccess レコード ...
-
ACCESSのモジュールエラー?
-
Accessデータベースの最適化をE...
-
accessのmdbが勝手にできている?
-
Excelでmdbファイルが簡単に開...
-
Accessで「誰々が使用中です」...
-
Accessのmdbを開こうとしたとき...
-
ファイルは開くのに「見つから...
-
ExcelのマクロでAccessのmdbを...
-
アクセスをネットワークでリン...
-
Accessでリンクテーブルのパス変更
-
アクセスのファイルが壊れた!!!!!!
-
ACCESS mdbファイル 更新日時
-
Access2003でVBAツールの参照設...
-
ACCESSで「ブックマーク...
-
Database.mdbと言うファイル
-
ACCESS 複数のmdbでModuleを共...
-
他のPWがかかっているファイル...
-
Accessのmdb分析(解析)方法ま...
-
ACCESS2003 ファイルが増えてい...
おすすめ情報