最新トピック
1
15 日前
排他制御 15 日前
2
1 ヶ月前
Hatena様にご質問 1 ヶ月前
6
3 ヶ月前
モジュールでカレントフォームのコントロールを使うには 3 ヶ月前
7
4 ヶ月前
日付のテキストボックスからフォームが開けません 4 ヶ月前
9
4 ヶ月前
レポートにおける数値の間隔を広げる方法 4 ヶ月前
12
4 ヶ月前
リストボックスから複数選択しそれをテーブルに格納したい 4 ヶ月前
11
4 ヶ月前
SQLの型が一致ませんエラー 4 ヶ月前
タグリスト
Markdown テーブル生成
Accessのテーブルやクエリのデータを貼り付ける場合は下記で、Markdown書式のテーブルに変換して貼り付けてください。
>> 2
問題なのはOpenに対するCloseがないのほうです。このくらいの規模であれば
Forの外で宣言して終わったらrs.Closeしますが、超巨大なFor文とか、一概にループの外でというわけではありません今のコードだと、開いたテーブルが開きっぱなしのまま放っておかれるので何かしらの不具合の原因になってもおかしくありません。今回のエラーの原因かどうかはわかりませんが、同じテーブルを複数開いてそのうちどれかで編集をしようとしているので原因にもなりそうです
あとは、全体の処理として
If .RecordCount = 0 Thenのところがループの中なのに最高でも1回しか実行されない作りなのが気になりますねこのくらいの処理なら
FindFirstで全数チェックかけても大した問題じゃないのでいっそIf .RecordCount = 0 Thenの制御処理は無くてもいいと思います(実際今のコードはほぼFindFirstで全数チェックになっています)その他変更点として
これはフォームのレコードセットをVBA上で扱う場合、テーブルを直接開く以外の便利な記述方法の内の一つです。より意味の明確なコードにしてるだけで「やりたいこと」自体は同じです