初歩的な質問かもしれませんが・・・
ACCESS2003VBAでADOを用いて削除を実行しようとしているのですがエラー(エラーは「オーバーフローしました」です。)が出て実行できません。
ソースは以下の通りです。
Dim strSQL As String
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection
strSQL = " DELETE FROM D_TB"
rs.Open strSQL, cn, , adOpenStatic, adLockOptimistic '←ここでエラー
Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop
rs.Close
cn.Close
どこがおかしいのでしょうか?
大変困っています。教えてください。よろしくお願いいたします。
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",
などについて
違いの迷い(不十分な理解)があるようです。
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
だけで全レコード削除されるはずが
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/07 08:37
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataTableに特定のフィールドが...
-
日付と文字列を条件としてDLook...
-
Accessのフィールド名に半角括...
-
Access 2010で実行時エラー3061
-
2つ目のレコードの値を取得す...
-
accessでフィールド追加のあと...
-
NULLを含む文字列の結合で...
-
テーブルのデータ型の変更がで...
-
Access Dcount関数で引数が指定...
-
ADOをし使用して、Accessのテー...
-
クリスタルレポートで0件時の表示
-
クリスタルレポートの式フィー...
-
クリスタルレポート(8.5)の書式...
-
ADOでNullフィールドの抽出
-
FTPサーバーから受信したファイ...
-
2次元のdictionary
-
ACCESSのエラー
-
ACCESSで日別集計をする場合
-
INT64対応のprintf系関数はあり...
-
AccessのDAOでフィールド名を配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフィールド名に半角括...
-
DataTableに特定のフィールドが...
-
accessでフィールド追加のあと...
-
INT64対応のprintf系関数はあり...
-
2つ目のレコードの値を取得す...
-
Access 2010で実行時エラー3061
-
日付と文字列を条件としてDLook...
-
AccessのDAOでフィールド名を配...
-
SQLで複数のテーブルと結合した...
-
テーブルのデータ型の変更がで...
-
フィールド名をループの添え字...
-
クリスタルレポート(8.5)の書式...
-
AccessVBAで他テーブルのデータ...
-
アクセスでADO 並べ替えが適用...
-
Accessの画像挿入のVBAコード
-
NULLを含む文字列の結合で...
-
クリスタルレポートで文字列の...
-
ACCESSデータベースにV...
-
ノーツ:ユーザ名から別名を取...
-
Access クエリで変数を参照する...
おすすめ情報