- ベストアンサー
【Access2003】VBAで削除のSQL実行ができない
- ACCESS2003VBAでADOを用いて削除を実行しようとしているのですがエラーが発生し、実行できません。エラーメッセージは「オーバーフローしました」となっています。
- ソースコードにおいて、削除のSQL文を実行する箇所でエラーが発生しています。エラーの原因を特定しているので、修正方法が分かりません。どこが問題なのでしょうか?お知恵をお借りしたいです。
- ACCESS2003VBAの環境で、ADOを使って削除処理を実行しようとしていますが、エラーが発生しています。具体的には、「オーバーフローしました」というエラーメッセージが表示されます。このエラーを解決する方法はありますか?
- みんなの回答 (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)
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)
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 で事は足りるはず。