エクセルVBA_ADO「ファイアホースモードの間はトランザクションを開始できない」
最近、エクセルVBAからSQLサーバーを編集するプログラムの勉強をはじめ、以下のサイトを読みながらテストプログラムを走らせています。
http://www.happy2-island.com/access/gogo03/capte …
そして、以下のようなコードを走らせて見ると、「ファイアホースモードの間はトランザクションを開始できません」とのエラーが出ます。
コードを以下に記します((2)トランザクションを開始します←ここで上記のエラーが出ます)
Sub prcAdoSQLServerDB()
Dim adoCON As New ADODB.Connection
Dim adoRS As ADODB.Recordset
'(1)ADOを使いSQL ServerのDBを開きます
adoCON.Open "Driver={SQL Server};" & _
"server=aaa\db; database=a1; uid=a; pwd=a;"
'レコードセットの作成(SELECT文の実行)
Set adoRS = adoCON.Execute("select * from 明細")
'レコード追加のSQLを定義(フィールド名省略すると、nullを入れようとする)
strsql = "INSERT INTO 詳細 (得意先コード) Values(000010)"
'(2)トランザクションを開始します
adoCON.BeginTrans
'(3)レコード追加のSQLを実行します
adoCON.Execute strsql
'(4)SQL実行結果の判定
If Err.Number = 0 Then
'(5)SQLが正常終了したら追加を反映します
adoCON.CommitTrans
Else
'(6)SQLが異常終了したら追加の破棄とエラー内容の表示をします
adoCON.RollbackTrans
End If
End Sub
何が原因なのでしょうか。
No.1ベストアンサー
- 回答日時:
>レコードセットの作成(SELECT文の実行)
>Set adoRS = adoCON.Execute("select * from 明細")
レコード追加・更新でしたらこの部分はいりません。
adoRsはレコードセットされているので、INSERT文のExecuteはできません。ここでトランザクションがおかしくなっています。
レコードを追加するだけでしたら、
Dim adoCON As New ADODB.Connection
Dim adoRS As ADODB.Recordset
adoCON.Open "Driver={SQL Server};" & _
"server=aaa\db; database=a1; uid=a; pwd=a;"
strsql = "INSERT INTO 詳細 (得意先コード) Values(000010)"
adoCON.BeginTrans
adoCON.Execute strsql
If Err.Number = 0 Then
adoCON.CommitTrans
Else
adoCON.RollbackTrans
End If
adoCON.Close
End Sub
という感じです。
レコードセットを別に使っているのでしたら、レコードセットで拾ったら、一度トランザクションをきったほうがよいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヤフーショッピングでPayPay支...
-
リコーimagioneo630 エラーs...
-
ディスク上のサイズの乖離が大...
-
LinuxからWindowsへのリストア...
-
階層型データベースとVSAM...
-
Windows版 pg_dumpの結果をログ...
-
oracle spool SJIS → UTF-8
-
AWSのcloud9で「 ls -l ~/.ssh/...
-
エクセルのデータをアクセスに...
-
pg_restoreの-Cオプションについて
-
shellからpostgresqlへの変数の...
-
エクセルVBAでcommit,rollback
-
Windows上のPostgreSQLの完全削...
-
\\copyコマンドでのCSV取り込み...
-
ACCESSのレコードを削除しても...
-
ACCESSのフォームだけを起動す...
-
新規作成したPostgresqlデータ...
-
AS400でのライブラリ配下の全て...
-
アクセスで、OLEサーバーも...
-
ACCESS VBA;コマンドボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ヤフーショッピングでPayPay支...
-
socket のエラー
-
リコーimagioneo630 エラーs...
-
ソケットの異常終了について
-
C#で大量のデータを扱うソフト...
-
トランザクションの開始
-
エクセルVBA_ADO「ファイアホー...
-
関数引数に対する制限値チェッ...
-
SQLServerへの接続子による違い...
-
MPI
-
更新不要はどういう意味なので...
-
MT4のOrderSendでエラーになり...
-
fortranで文字列と数値が混在し...
-
BASP21送信エラーVB.NET
-
マインクラフトエラー
-
e-Taxで申告書送信ができません
-
CloseHandleのエラーについて
-
Windows10更新アシスタントでエ...
-
VB6からADOを介してAC...
-
VB.NET Webアプリケーションの...
おすすめ情報