お世話になります。
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.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 指定されたデータ量がフィールド サイズを超えています。データ量を減らし、挿入または貼り付けを行ってください。
恐れ入りますが、ご教示いただければ幸いです。
以上です。
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にし、同様の処理を行ったところ、問題なく動作することを確認しました。
度々のご回答誠にありがとうございます。
並びに調査不足で申し訳ございませんでした。
本件これでクローズさせていただきます。
ありがとうございました。
お探しの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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ExcelをAccessにペーストエラー
その他(Microsoft Office)
-
access フィールドのサイズ(文字数)変更
その他(データベース)
-
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
-
4
access vbaにてテンポラリーテーブルが作りたいです。
Access(アクセス)
-
5
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
【Oracle】ADOでSELECT * FROM ・・・・ を実行すると処理が遅いんです
その他(データベース)
-
8
accessの SQL文 INSERT命令
Access(アクセス)
-
9
VBでSQL文のUPDATE構文を使った時のエラーについて
Visual Basic(VBA)
-
10
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
11
「RunSQL」と「Execute」の違い
Access(アクセス)
-
12
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
13
YES/NO型の値
Excel(エクセル)
-
14
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
15
ACCESSのSQLで、NULLかNULLでないかの判定
その他(データベース)
-
16
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
17
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
18
accessでフィールド追加のあとフォームに反映されない
Access(アクセス)
-
19
アクセスVBAのMe!と[ ]
Access(アクセス)
-
20
Access サブフォームでの選択行の取得
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
エクセルVBA 「On Error GoTo...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
On ErrorでエラーNoが0
-
実行時エラー'-2147467259(8000...
-
ACCESSで値を代入できないとは?
-
データベース操作時エラーについて
-
実行したSQLの結果を返す方法
-
オブジェクト型の変数にフォー...
-
【VBA】ワークブックを開く時に...
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
VB.net 重複チェックがしたいです
-
「実行時エラー '3167' レコー...
-
マクロで"#N/A"のエラー行を削...
-
Excel実行時エラー[80004005]に...
-
UBoundに配列がありませんとエ...
-
エラー処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報