- ベストアンサー
フォームから削除をしたいです
ACCESSで、VBAを使用し、レコードを削除しようとしています。 自分の書いたコードは以下の通りです。 --------------------------------------------------------------- Private Sub cmd削除_Click() If vbYes = MsgBox("現在表示中のレコードを削除してもよろしいですか?", _ vbYesNo + vbInformation + vbDefaultButton2) Then Set DB = CurrentDb Set RS = DB.OpenRecordset("SELECT * FROM メール _ WHERE ID=ID") RS.Delete Me.コード.SetFocus Call 画面クリア ボタン使用不可 Set RS = Nothing Set DB = Nothing End If End Sub -------------------------------------------------------------- コレを実行すると、開いたフォームのIDのレコードではなく、上から順番に消えてしまいます。どこが間違っているのでしょうか。 恐れ入りますが、ご教授願えますでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私のMdbでやってみました Private Sub cmd削除_Click() Set db = CurrentDb Set rs = db.OpenRecordset("SELECT * FROM 生徒2 WHERE 氏名=" & """木村""" & ";", dbOpenDynaset) rs.Delete '------ Set rs = Nothing Set db = Nothing End Sub これで生徒2テーブルの氏名が木村の行が削除されました。しかし2つあったもうひとつの木村のレコードは残っています。唯一のレコードなら心配ないでしょうが。参考までに。 そこで、上例では、文字列リテラルなので"""木村"""となってますが、変数の場合は、指定した氏名の「木村」とはいった、指定した変数で置き換えるとうまく行くと思います。その場合文字列を示す”” の辺に注意。 Private Sub cmd削除_Click() simei = "木村" Set db = CurrentDb 'Set rs = db.OpenRecordset("SELECT * FROM 生徒2 WHERE 氏名=" & """木村""" & ";", dbOpenDynaset) Set rs = db.OpenRecordset("SELECT * FROM 生徒2 WHERE 氏名=""" & simei & """;", dbOpenDynaset) rs.Delete '------ Set rs = Nothing Set db = Nothing End Sub ーーー 基本的に、#2でおっしゃっているように、””の外に出す必要があります。