- ベストアンサー
MDBへレコード挿入中にエラーが出力される
- VB6.0 & MDBでアプリケーションを作成しております。MDBへ合計140件のinsert文を実行している途中70件目くらいで、指定されたデータ量がフィールドサイズを超えているエラーが出力され、ロールバックしてしまいます。エラーが出力されているinsert文を、access2003のクエリに直接貼り付けて実行すると、問題なくデータが登録されるため、原因がわかりません。
- VB6.0 & MDBでアプリケーションを作成しており、MDBへ合計140件のinsert文を実行している途中70件目くらいで、データ量がフィールドサイズを超えているエラーが発生し、データの挿入がロールバックされてしまいます。同じinsert文をaccess2003のクエリで実行すると、エラーが発生せずにデータが登録されるため、原因が分かりません。
- VB6.0 & MDBのアプリケーションで、MDBへ合計140件のinsert文を実行している途中70件目くらいで、データの挿入中に指定されたデータ量がフィールドサイズを超えているエラーが発生し、ロールバックされてしまいます。しかしながら、同じinsert文をaccess2003のクエリに貼り付けて実行すると、エラーが発生せずにデータが登録されるため、原因が分かりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CommitTrans の位置を動かすわけには行かないんでしょうね。 (For Next 間の処理が一つでもエラーになったら全てRollBackしたい) イマイチ不安だったのでGoogleってみました。 Access でクエリを実行するとエラー メッセージ "指定されたデータ量がフィールド サイズを超えています" が表示される http://support.microsoft.com/kb/896950/ja とか 多数のトランザクション処理中にエラー メッセージ "ファイルの共有ロック数が制限を超えています" が表示される http://support.microsoft.com/kb/815281/ja が関係しているのでは? (大いに外してしまっているかもしれません ご容赦)
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
CommitTrans は何処に? http://msdn.microsoft.com/ja-jp/library/cc364105.aspx 勘違いならご勘弁を。
補足
お世話になります。 ご回答ありがとうございます。 すいません。ソースを記述しなおさせていただきます。 申し訳ございませんでした。 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 指定されたデータ量がフィールド サイズを超えています。データ量を減らし、挿入または貼り付けを行ってください。 恐れ入りますが、ご教示いただければ幸いです。 以上です。
お礼
お世話になります。 早々のご回答ありがとうございます。 その後、再度データを確認しなおしてみたところ、 テキストデータ12byte長のカラムに16byteのデータを挿入しているデータがあり、 それでエラーが出力されていることが判明しました。 MDBの該当カラムを25byteにし、同様の処理を行ったところ、問題なく動作することを確認しました。 度々のご回答誠にありがとうございます。 並びに調査不足で申し訳ございませんでした。 本件これでクローズさせていただきます。 ありがとうございました。