
フォーム社員情報からレコードを削除するボタンを作成してレコードの削除を行いたいのですが、全て削除をして1件もなくなった場合にデータベースを閉じる時に「カレントレコードがありません」というエラーが出てしまいます。OKをクリックすると閉じる事は閉じれるのでこのエラーが出ないようにしたいのですが。。。
よろしくお願いします。
'エラー開始
On Error GoTo err_RTN:
'接続
Set cnADO = CurrentProject.Connection
'レコードセットを取得
Set rsADO = New ADODB.Recordset
rsADO.Open "T社員情報", cnADO, adOpenKeyset, adLockOptimistic
'削除
ret = MsgBox(Me!txt氏名.Value & Chr(13) & "を削除しますか?", vbYesNo + vbQuestion, "削除")
Select Case ret
Case vbYes
rsADO.Delete
Me.Requery
Case vbNo
Exit Sub
End Select
'終了
rsADO.Close: Set rsADO = Nothing
cnADO.Close: Set cnADO = Nothing
No.4ベストアンサー
- 回答日時:
再びmaruru01です。
うーん、ちょっと分からないですね。
なので、別の方法を。
やりたいことは、フォームのtxt社員No.と一致する社員No.のレコードを削除するということですね。
なのでレコードセットを開かずに直接SQLを実行します。
(確認のIf文の中に)
mySQL = "DELETE * FROM T社員情報 " & "WHERE 社員No. =" & Me!txt社員No.
DoCmd.RunSQL mySQL
ただし、アクションクエリの確認メッセージが出ますので、
Accessのメニュー[ツール]→[オプション]→[編集/検索]タブ→[確認]→[アクション クエリ]のチェックは外しておきます。
なお、この「アクション クエリの確認」はVBAから次のように変更出来ます。
'確認オフ
Application.SetOption "Confirm Action Queries", False
'確認オン
Application.SetOption "Confirm Action Queries", True
これを、一番最初のフォームの読み込み時にオフにして、一番最後のフォームを閉じる時にオンすればいいでしょう。
ところで、フィールド名などに"."(ピリオド)を使用するのはやめた方がいいですよ。
では。
No.3
- 回答日時:
こんにちは。
maruru01です。Me.Requeryを削除してみたらどうなりますか。
Requeryを行うと、レコードセットが更新され、先頭のレコードにカレントを移動しようとしますが、その時レコードが1件もないので、エラーが出るかもしれません。
というか、何故ここにRequeryメソッドを置いているのでしょう。
ちなみに残り1件で削除してレコードが無くなった場合にエラーが出るなら、No.1の方のやり方では意味がありません。
これはすでにレコードが1件もないかどうかを判定しているので。
では。
この回答への補足
1つ書き忘れていましたが、
mySQL = "SELECT * FROM T社員情報 " _
& "WHERE 社員No. =" & Me!txt社員No.
rsADO.Open , mySQL , cnADO, adOpenKeyset, adLockOptimistic
という所を間違っていました。すいません。
Me.Requeryを削除したところ、#Deleted という表示が出てしまいます。
Me.Requeryのままで実行すると、フォームを開いたり閉じたりする時にエラーは出ないのですが、アクセスを終了する時に Docmd.Quit で終了しているのですが、この時にエラーが出てしまいます。
エラーが出てOKをクリックすれば問題なく終了は出来るのですが、出来ればこのエラーを表示したくありません。よろしくお願いします。
No.2
- 回答日時:
すいません
あまり、知識がないもので。
-------------------------------
エラーメッセージから推測すると
0件レコードを読んだ時のエラーと
思いましたのでEOFやBOF命令で
解決することが経験上ありましたもので
EOF命令を紹介した次第です
あと参考までですが私の場合は
DAO命令で処理を書いてモジュールを
作成しています
SQL命令では必要かもしれないのですが
閉じるときには
rs.Close
は書きますが
Set rs = Nothingは
書いていません
参考になるかどうかは自信がありませんが
とりあえずのご連絡まで。
No.1
- 回答日時:
>Set rsADO = New ADODB.Recordset
>rsADO.Open "T社員情報", cnADO, adOpenKeyset, >adLockOptimistic
の後に
IF rsADO.EOF GOTO OWARI(CLOSEの手前にラベルを)
とすればいかがでしょうか
この回答への補足
ご返事ありがとうございます。
早速、oka123さんのご指示の通り(勘違いをしているかもしれません。)
書いたつもりなのですが、やはりデータベースを閉じる時にエラーが出てしまいます。
'接続
Set cnADO = CurrentProject.Connection
'レコードセットを取得
Set rsADO = New ADODB.Recordset
rsADO.Open "T社員情報", cnADO, adOpenKeyset, adLockOptimistic
If rsADO.EOF Then GoTo OWARI:
'削除
ret = MsgBox(Me!txt氏名.Value & Chr(13) & "を削除しますか?", vbYesNo + vbQuestion, "削除")
Select Case ret
Case vbYes
rsADO.Delete
Me.Requery
Case vbNo
Exit Sub
End Select
OWARI:
'終了
rsADO.Close: Set rsADO = Nothing
cnADO.Close: Set cnADO = Nothing
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
このQ&Aを見た人はこんなQ&Aも見ています
-
カレントレコードがありません"とでてきます"
Access(アクセス)
-
Access レコード削除時に「カレントレコードがありません」エラーが表示されてしまう
Access(アクセス)
-
アクセス2007でのインポートエラー「カレントレコードがありません」に
Access(アクセス)
-
-
4
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
5
ADO VBA 実行時エラー3021
Visual Basic(VBA)
-
6
アクセス フォームをリクエリしたい
Access(アクセス)
-
7
Access 2010で実行時エラー3061
その他(Microsoft Office)
-
8
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
9
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
10
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
11
Accessの桁区切りについて教えてください。
Access(アクセス)
-
12
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
13
AccessのFormの設定で、開いた時に必ず最大化で表示する方法が分からず困っています
Access(アクセス)
-
14
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
15
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
16
Accessを使って日付を比較したい
その他(Microsoft Office)
-
17
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
18
YES/NO型の値
Excel(エクセル)
-
19
Accessで検索を高速化
Access(アクセス)
-
20
レコード削除時に(サブ)フォームに表示される#Deleted"について"
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
重複レコードの削除
-
非連結サブフォームのレコード...
-
ACCESSのBookmarkプロパティの...
-
数百万件レコードのdelete
-
抽出条件で
-
accessで検索&入力 データの...
-
登録したレコードの主キーの取...
-
phpmyadminで問い合わせた結果...
-
Excel→Accessテーブル インポ...
-
Sql構文をおしえてください
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
Accessで重複したデータを一件...
-
Access VBA Me.Requery レコー...
-
レコードロックする方法
-
Accessでのレコードの削除時の...
-
AccessのSQLについて教えてくだ...
-
ManagementStudioからのデータ削除
-
Accessでレコードが更新された...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
Access 1レコードずつcsvで出力...
-
ACCESSのBookmarkプロパティの...
-
数百万件レコードのdelete
-
テーブルのレコード削除ができ...
-
ManagementStudioからのデータ削除
-
Access VBA Me.Requery レコー...
-
Access 削除クエリが重い
-
非連結サブフォームのレコード...
-
SQLデータ修正時に『このレコー...
-
レコードロックする方法
-
(ACCESS)並び替えをしないで...
-
Accessの固有レコード識別子の選択
-
SQLServerで同一条件レコードの...
-
Accessで重複したデータを一件...
-
Accessでレコードが更新された...
-
Accessでの排他制御
-
Access カレントレコードがあり...
おすすめ情報