access2003でSQLServer2008へのリンクテーブルを作成し、
vbaでadoを使ってデータ更新処理をしようとしています。
以下のように記述していますが、
実行後、BやCのテーブルが開かなくなります。
(正確にはインサートしたデータが表示されるであろうページがロックされているような動きです。)
また、その状態からAccessを一旦終了し、再度起動すると、データがインサートされていない状態です。
コミットが効いてないように感じます。
こちら原因としてどんなことが考えられるでしょうか?
ちなみにDAOで動かしても同様でした。
宜しくお願い致します。
以下 コード============================
Set cn = CurrentProject.Connection
Set rst = New ADODB.Recordset
cn.BeginTrans
rst.Open "select key from A", cn, adOpenForwardOnly, adLockReadOnly
Do Until rst.EOF
cne.Execute "insert into B ( aa, bb) select aa, bb from A where key = " & rst!key & " "
cne.Execute "insert into C ( aa, bb) select aa, bb from A where key = " & rst!key & " "
rst.MoveNext
Loop
rst.Close
cn.CommitTrans
cn.Close
set rst = Nothing
set cn = Nothing
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
シロウトなので、詳しいことは知らないので憶測だけど
コミットするまではメモリ上で処理しているんじゃないかな?
お返事遅くなり申し訳ありません。
回答ありがとうございます。
メモリ上というところは理解しているつもりなのですが、
コミットしても反映せず、ロールバックしてもテーブルロックがかかったままになり、
Accessを終了して再度起動するしか解除できなくなってしまいます。
とりあえずはロックタイプの指定を変えることで対処しましたが、
未だに動きが理解できてません・・・
No.1
- 回答日時:
adLockReadOnly
でインサートできるわけないよね。
この回答への補足
ありがとうございます!結果としてご指摘の通り、
rst.Open strSql, cn, adOpenKeyset, adLockOptimistic
でできました!
が、府に落ちてません。。。
まず、adLockReadOnlyが読み取り専用(コピーのようなもの?)で開くということなので
そのレコードセットに対する編集ができないのは分かるのですが
コネクションのExecuteでも書き込みできないのでしょうか?
そもそもExecute自体は通っていましたが、Execute直後からテーブルがロックされ
コミットでも解放されないという現象が不可解に思います。
ちなみにトランザクションを使わない場合、インサートできていたのですが
このプログラムの記述自体が何か不都合な書き方なのでしょうか?
可能性のレベルでも良いのでご指摘頂けますとありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- BTOパソコン dz60 1 2023/06/11 15:27
- Oracle SQL update方法 2 2022/06/22 14:07
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
accessでレコード更新直後の反映について
その他(データベース)
-
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
-
4
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
他のMDBのテーブルに追加したい
その他(プログラミング・Web制作)
-
7
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
8
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
9
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
10
accessのロック
その他(データベース)
-
11
AccessのDAO.ExecuteとDoCmd.RunSqlの違いについて
その他(データベース)
-
12
ACCESS2007 VBA 「INSERT INTO~」について
PowerPoint(パワーポイント)
-
13
「RunSQL」と「Execute」の違い
Access(アクセス)
-
14
AccessVBAコミットとロールバックの位置
その他(プログラミング・Web制作)
-
15
レコードが存在しなかった場合
Microsoft ASP
-
16
Access 実行時エラー’3079’が解決できません。
Access(アクセス)
-
17
SQLの速度をあげるには・・・
Visual Basic(VBA)
-
18
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
19
【Oracle】ADOでSELECT * FROM ・・・・ を実行すると処理が遅いんです
その他(データベース)
-
20
Accessでレコードが更新された時に発生するイベント。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】値を変更しながら...
-
VBAで大量のファイルをシート名...
-
VBA 何かしら文字が入っていたら
-
【マクロ】1つのマクロの中に...
-
VBA 別ブックからコピペしたい...
-
VBAを使用した時間管理
-
Excelのマクロでワードのテキス...
-
【PowerPoint VBA】緑色の文字...
-
ExcelのVBAコードについて教え...
-
2つのマクロでチェックボックス...
-
VB.net(VB)で、フォームにExcel...
-
FileCopy時のエラー
-
VBA ユーザーフォーム ボタンク...
-
エクセルについて
-
Vba SelStart、SelLen教えてく...
-
VBAで各列の"+"と"o"の合計数を...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Excel VBA 定義されたプロージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
access adoのトランザクション
-
gitでコミットするタイミングが...
-
ActivePerl+SQLServerでトラン...
-
漢字を含む文字列のソート
-
VB + oracle oo4o でのトラン...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
今日の日付が入った行のデータ...
-
VBA プロシージャの名前の取得
-
キャッシュを使わずにSELECTを...
-
sqlplusでヘッダーが付かない
-
Accessの数値から時間に変換す...
-
ODBCリンクの際にACCESSでは読...
-
Statement ignored というエラー
-
SQLで部分的にGROUP BYしたいとき
-
PL/SQLカーソルの2重FORループ...
-
SQLサーバで和暦から西暦に変換...
-
likeとsubstrの使いわけについて
-
全角空白のTRIMができない...
おすすめ情報