• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Access2003】VBAで削除のSQL実行ができない)

【Access2003】VBAで削除のSQL実行ができない

このQ&Aのポイント
  • ACCESS2003VBAでADOを用いて削除を実行しようとしているのですがエラーが発生し、実行できません。エラーメッセージは「オーバーフローしました」となっています。
  • ソースコードにおいて、削除のSQL文を実行する箇所でエラーが発生しています。エラーの原因を特定しているので、修正方法が分かりません。どこが問題なのでしょうか?お知恵をお借りしたいです。
  • ACCESS2003VBAの環境で、ADOを使って削除処理を実行しようとしていますが、エラーが発生しています。具体的には、「オーバーフローしました」というエラーメッセージが表示されます。このエラーを解決する方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

私の場合はdb2.mdbに生徒Bと言うテーブルがあります。 そのフィールドの1つに県と言うフィールドがあります。 県フィールドが東京と言うレコードを削除します。 下記でうまく行きましたから参考に。 Sub test14() Dim strSQL As String Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurDir & "\" & "\db2.mdb" Dim rs As New ADODB.Recordset strSQL = "DELETE FROM 生徒B WHERE 県='東京';" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic '---確認 rs.Open "生徒B", cn, adOpenStatic, adLockPessimistic Do Until rs.EOF MsgBox rs.Fields(3) rs.MoveNext Loop '--- rs.Close Set cn = Nothing End Sub ーーー #1、#2のご回答などもよく読んで勉強してください。 cnとrsや rs.Open strSQL・・ と rs.Open "生徒B", などについて 違いの迷い(不十分な理解)があるようです。

その他の回答 (2)

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.2

rsはレコードセットで取ってるのですよね ソースを見る限りレコードを読み込んで削除する記述ですが SQLはDELETE ? 単純に直すならSQLを "SELECT * FROM D_TB" と変更 でもDELETEならSQL実行でrsを確保する必要は無いと思います Set cn = CurrentProject.Connection strSQL = " DELETE FROM D_TB" cn.Execute strSQL Set cn = Nothing だけで全レコード削除されるはずが

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

loopで1レコードずつ削除したいなら、 strSQL = "SELECT * FROM D_TB" として、RS.DELETEのあとにRS.UPDATEをいれるべき。 strSQL = "DELETE FROM D_TB" を使いたいなら、 Set cn = CurrentProject.Connection strSQL = " DELETE FROM D_TB" CN.EXECUTE STRSQL で事は足りるはず。

関連するQ&A