

お世話になります。
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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
access フィールドのサイズ(文字数)変更
その他(データベース)
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
VB6からADOを介してACSESS2000MDBへのアクセスエラー
Visual Basic(VBA)
-
4
エクセルからアクセスにインポートすると、エラーが出てしまいます。原因を教えていただけませんか。
Access(アクセス)
-
5
更新不可能なクエリに対して更新クエリを実行する方法
Access(アクセス)
-
6
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
7
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
8
ACCESSで大量の更新を行うと「レコードが大きすぎます。」
Visual Basic(VBA)
-
9
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
10
ACCESS フォームをそのまま印刷について
その他(データベース)
-
11
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
12
Access2007でSQLの複数列副問い合わせについて
その他(データベース)
-
13
accessの SQL文 INSERT命令
Access(アクセス)
-
14
ACCESSでの改行コード
その他(データベース)
-
15
Excel 1セル当りの文字数が255文字を超える場合のADOからの取
その他(プログラミング・Web制作)
-
16
ExcelをAccessにペーストエラー
その他(Microsoft Office)
-
17
アクセスのリンクテーブル一覧をsqlで表示させると
その他(データベース)
-
18
実行時エラー 3265「要求された名前、または序数
Visual Basic(VBA)
-
19
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
20
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
LaTeXのエラーについて(コンパ...
-
5
String""から型'Double'への変...
-
6
エクセルVBA 「On Error GoTo...
-
7
VBA データ(特定値)のある最...
-
8
マクロで"#N/A"のエラー行を削...
-
9
ActiveCell.FormulaR1C1の変数
-
10
pythonのopenpyxlについて
-
11
.VBSだとADODBのプロバイダが見...
-
12
マクロの「SaveAs」でエラーが...
-
13
ACCESSで値を代入できないとは?
-
14
ApplicationとWorksheetFunctio...
-
15
DataTableに対するLINQについて
-
16
VBSでカンマ区切り
-
17
インポート時のエラー「データ...
-
18
Excel実行時エラー[80004005]に...
-
19
Filter関数を用いた結果、何も...
-
20
【VBA】ワークブックを開く時に...
おすすめ情報
公式facebook
公式twitter