初歩的な質問かもしれませんが・・・
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataTableに特定のフィールドが...
-
ACCESSデータベースにV...
-
INT64対応のprintf系関数はあり...
-
Accessのフィールド名に半角括...
-
テーブルのデータ型の変更がで...
-
accessでフィールド追加のあと...
-
AccessのDAOでフィールド名を配...
-
アクセスのクエリに、VLOOKを設...
-
FlexGridでのおかしな不具合・・。
-
【Access2003】VBAで削除のSQL...
-
2つ目のレコードの値を取得す...
-
ACCESSで視覚的タイムテーブル...
-
Access 2010で実行時エラー3061
-
Access VBA 添付型フィールド
-
アクセスでADO 並べ替えが適用...
-
テキストファイルのフィールド...
-
クリスタルレポート(8.5)の書式...
-
2のコンボボックスの関連
-
アクセス ADO Null以外のレコ...
-
AccessVBAで他テーブルのデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフィールド名に半角括...
-
INT64対応のprintf系関数はあり...
-
2つ目のレコードの値を取得す...
-
accessでフィールド追加のあと...
-
DataTableに特定のフィールドが...
-
Access 2010で実行時エラー3061
-
テーブルのデータ型の変更がで...
-
日付と文字列を条件としてDLook...
-
2次元のdictionary
-
AccessのDAOでフィールド名を配...
-
オートナンバー型を抽出条件に...
-
クリスタルレポートで文字列の...
-
クリスタルレポート(8.5)の書式...
-
アクセスでADO 並べ替えが適用...
-
クリスタルレポートの式フィー...
-
Access クエリで変数を参照する...
-
ACCESSデータベースにV...
-
NULLを含む文字列の結合で...
-
アクセス ADO Null以外のレコ...
-
テキストファイルのフィールド...
おすすめ情報