• ベストアンサー

フォームから削除をしたいです

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のレコードではなく、上から順番に消えてしまいます。どこが間違っているのでしょうか。 恐れ入りますが、ご教授願えますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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でおっしゃっているように、””の外に出す必要があります。

その他の回答 (2)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

"SELECT * FROM メール _ WHERE ID=ID" カレントレコードのIDをSQLに渡したければ文字列の外に出します "SELECT * FROM メール _ WHERE ID=" & Me.ID

  • Gizensha
  • ベストアンサー率34% (207/608)
回答No.1

> WHERE ID=ID IDカラムはどのIDと比較しているのでしょう。

関連するQ&A

専門家に質問してみよう