

お世話になります。
VB6.0 & MDB でアプリケーションを作成しております。
ご質問内容を以下に記述させていただきます。
MDBへ合計140件のinsert文を実行している途中70件目くらいで、下記のメッセージが出力され、ロールバックしてしまいます。
エラーメッセージ:
ADO:-2147217833 指定されたデータ量がフィールド サイズを超えています。データ量を減らし、挿入または貼り付けを行ってください。
しかしながら、エラーが出力されているinsert文を、access2003のクエリに直接貼り付けて実行すると、問題なくデータが登録されます。
原因がわからなく難儀しております。
ソースを以下に記述させていただきます。
----------------------------------------------------------------
Public m_Connection As ADODB.Connection '// ADO接続
Private Function aaaaa() As Integer
FOR i = 0 to RecordCount
'// トランザクション開始
m_Connection.BeginTrans・・(1)
'// SQL文作成
・・・・insert文・・・・・・(2)
'// 実行
m_Connection.Execute strSQL, lngRsp・・(3)
'// エラー時ロールバック
If (3) = Error then
m_Connection.RollbackTrans
Exit For・・(4)
End if
Next
End Function
----------------------------------------------------------------
70回目くらいの(3)でエラーが出力されて、(4)のロールバック処理に移行してしまいます。
恐れ入りますが、ご教示いただきたくよろしくお願い申し上げます。
以上です。
No.2ベストアンサー
- 回答日時:
CommitTrans の位置を動かすわけには行かないんでしょうね。
(For Next 間の処理が一つでもエラーになったら全てRollBackしたい)
イマイチ不安だったのでGoogleってみました。
Access でクエリを実行するとエラー メッセージ "指定されたデータ量がフィールド サイズを超えています" が表示される
http://support.microsoft.com/kb/896950/ja
とか
多数のトランザクション処理中にエラー メッセージ "ファイルの共有ロック数が制限を超えています" が表示される
http://support.microsoft.com/kb/815281/ja
が関係しているのでは?
(大いに外してしまっているかもしれません ご容赦)
お世話になります。
早々のご回答ありがとうございます。
その後、再度データを確認しなおしてみたところ、
テキストデータ12byte長のカラムに16byteのデータを挿入しているデータがあり、
それでエラーが出力されていることが判明しました。
MDBの該当カラムを25byteにし、同様の処理を行ったところ、問題なく動作することを確認しました。
度々のご回答誠にありがとうございます。
並びに調査不足で申し訳ございませんでした。
本件これでクローズさせていただきます。
ありがとうございました。
No.1
- 回答日時:
この回答への補足
お世話になります。
ご回答ありがとうございます。
すいません。ソースを記述しなおさせていただきます。
申し訳ございませんでした。
comitは以下で行っております。
----------------------------------------------------------------
Public m_Connection As ADODB.Connection '// ADO接続
Private Function aaaaa() As Integer
'// トランザクション開始
m_Connection.BeginTrans・・(1)
FOR i = 0 to RecordCount
'// SQL文作成
・・・・insert文・・・・・・(2)
'// 実行
m_Connection.Execute strSQL, lngRsp・・(3)
'// エラー時ロールバック
If (3) = Error then
m_Connection.RollbackTrans
Exit For・・(4)
End if
Next
If HasError = false then
m_Connection.CommitTrans
End If
End Function
----------------------------------------------------------------
データ件数が少ない場合で動作は確認しております。
処理としては問題ないと考えております。
データ件数が多い場合に、下記のエラーが出力されてしまいます。
ADO:-2147217833 指定されたデータ量がフィールド サイズを超えています。データ量を減らし、挿入または貼り付けを行ってください。
恐れ入りますが、ご教示いただければ幸いです。
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Access】Excelインポート時に...
-
フランスの生年月日(jj/mm/aaaa)
-
VBAでfunctionを利用しようとし...
-
Excel VBA のFunctionプロシー...
-
UserForm1.Showでエラーになり...
-
【VBA】ワークブックを開く時に...
-
(マクロ)コピー貼付のマクロで...
-
お助けください!VBAのファイル...
-
Excelシートのコピー
-
VBA エクセル で FIND でのエラ...
-
Perlのエラーについてご教授く...
-
HTMLソースが表示のページのも...
-
MATLABについての質問です(初...
-
EXCEL_VBA 64bit版でのエラー
-
String""から型'Double'への変...
-
ACCESS VBAのSplit()関数の使用...
-
VBAのエラーについて
-
#N/Aの文字を削除するには
-
ACCESSで値を代入できないとは?
-
XHTMLでのtextareaのwrapの指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロOn Error GoTo ErrLabel...
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
文字列内で括弧を使うには
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
【Access】Excelインポート時に...
-
VBでSQL文のUPDATE構文を使った...
-
【VB.NET】 パワポ操作を非表示で
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
実行時エラー'-2147467259(8000...
おすすめ情報