

お世話になります。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お助けください!VBAのファイル...
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
python初心者です。
-
レコード登録時に「演算子があ...
-
【Access】Excelインポート時に...
-
「実行時エラー '3167' レコー...
-
Perlのエラーについてご教授く...
-
ApplicationとWorksheetFunctio...
-
【VB.NET】 パワポ操作を非表示で
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
.VBSだとADODBのプロバイダが見...
-
SQLでエラーです。
-
日付書式のString型からData型...
-
PL/SQLでファンクション名に変...
-
Selenium のエラーがでます。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
String""から型'Double'への変...
-
【Access】Excelインポート時に...
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
VBA エクセル で FIND でのエラ...
-
Filter関数を用いた結果、何も...
-
レコード登録時に「演算子があ...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
「実行時エラー '3167' レコー...
おすすめ情報