• ベストアンサー

フォームからのレコード削除について

access超超初心者です。 フォームのコマンドボタンをクリックすると テーブルのレコードを追加または削除する方法を教えてください。 [イベントプロシージャ]を使用して、どのようなプログラムを書けば いいのでしょうか? ど素人の質問ですいません。

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

  • ベストアンサー
  • tom777
  • ベストアンサー率77% (14/18)
回答No.4

・レコードの追加なんですけれど、複数のフィールドにはどのように入れるのでしょうか? INSERT INTO テーブル名(フィールド名1,・・・) VALUES (値,・・・)のように書きます。(詳しくはHELPを参照して下さい。) (フィールド名1,・・・)の部分は省略できます。 別のテーブルから値を取得する方法もあります。 ・また、シングルクォーテーションの意味は?? 文字列を設定する場合は、シングルクォーテーションまたはダブルクォーテーションでくくる必要があります。 ・レコードの削除の際に複数の条件を入れたいです。 これもHELPを参照して下さい。 DELETE FROM テーブル名 WHERE 条件式 で実現できると思います。 <やりたいこと> フォームで会社名と支店名をリストボックスから選択して、テーブルのフィールド1の会社名かつフィールド2の支店名のものをレコードを削除したい。 教えてください。 DELETE FROM テーブル WHERE フィールド1 = '会社名' AND フィールド2 = '支店名' で、いけると思います。 まあ、何でもいろいろやってみて身に付けてください。

soraprio
質問者

お礼

ご丁寧にありがとうございました。ついに完成しました。 非常に助かりました。

soraprio
質問者

補足

有難うございます。やってみたけれど、DoCmd.RunSQL でパラメータの入力のダイアログが表示されてしまいます。(削除、追加ともに) ダイアログに再度入力すると、きちんと削除されます。 何がいけないのでしょうか? Private Sub 削除_Click() Dim Frm1 As Form Dim In1 As Integer, In2 As String Set Frm1 = Forms!支店管理F In1 = Nz(Frm1!顧客選択) In2 = Nz(Frm1!支店リスト.Column(1)) If In1 = 0 Then MsgBox ("顧客を選択してください。") ElseIf In2 = "" Then MsgBox ("削除支店を選択してください。") Else ' レコードを削除する DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM 支店ルータ管理T WHERE (顧客ID = " & In1 & " AND 支店名 = " & In2 & ");" DoCmd.SetWarnings True '支店リスト 最新の情報に更新 MsgBox (Frm1!顧客選択.Column(1) & "様 " & In2 & " を削除しました。") Me!支店リスト.Requery Me!支店入力 = "" End If End Sub 何度もすいません。教えてください。

その他の回答 (4)

  • yuziro
  • ベストアンサー率41% (5/12)
回答No.5

soraprioさんが、tom777さんの回答に対し、 補足記入されていたモジュールの、 「レコードを削除する」 の部分を訂正してみました。 DoCmd.RunSQL "DELETE * FROM 支店ルータ管理T WHERE (顧客ID= " & In1 & " AND 支店名= '" & In2 & "');" これで、動くと思いますよ。 顧客IDは数値型、支店名は文字列型ですよね?

soraprio
質問者

お礼

ありがとうございます。完成しました。

  • tom777
  • ベストアンサー率77% (14/18)
回答No.3

[イベントプロシージャ]でSQL文を使用してレコードを追加 Dim sSql As String sSql = "INSERT INTO テーブル1 VALUES('値')" DoCmd.SetWarnings False DoCmd.RunSQL sSql DoCmd.SetWarnings True [イベントプロシージャ]でSQL文を使用してレコードを削除 Dim sSql As String sSql = "DELETE FROM テーブル1" DoCmd.SetWarnings False DoCmd.RunSQL sSql DoCmd.SetWarnings True 他にもいろいろ方法はありますが、参考にして下さい。

soraprio
質問者

お礼

有難うございます。 ・レコードの追加なんですけれど、複数のフィールドにはどのように入れるのでしょうか?また、シングルクォーテーションの意味は?? ・レコードの削除の際に複数の条件を入れたいです。 <やりたいこと> フォームで会社名と支店名をリストボックスから選択して、テーブルのフィールド1の会社名かつフィールド2の支店名のものをレコードを削除したい。 教えてください。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

レコードを追加または削除であれば、 「マクロ」の方が早いし、わかりやすいですよ。 マクロなら、一覧から操作内容を選択できますし、、、 どうしても「イベントプロシージャ」がよければ 「レコードを追加または削除」の「マクロ」を 作成し、これを「イベントプロシージャ」へ変換する 方が「確実」です。 ただし、Accessのバージョンまたは、インストール 状態によっては「マクロ→イベントプロシージャ」 への変換機能は付いていない場合があります。

soraprio
質問者

お礼

マクロですか、これもまたやったことありませんので試してみます。 いろいろ方法があるのですね。どれが一番いいのだろう??? 有難うございます。

  • marmi1516
  • ベストアンサー率17% (3/17)
回答No.1

私もアクセスはよく使うんですけど、VBの知識がないので、モジュールやイベントプロシージャは最小限にしてます。 レコードの更新、追加、削除などはクエリーを使ってます。 もし機会があったら試してみてください。 それほど難しくはないですし、何かと便利です。

soraprio
質問者

お礼

クエリーですか。やったことないので試してみます。 有難うございます。

関連するQ&A

  • Accessでレコードの保存をせずにフォームを閉じたい

    Accessでデータベースのレコード追加を行うフォームを作成しています。 コマンドボタン(1)をクリック→新しいレコードの追加 コマンドボタン(2)をクリック→フォームを閉じる としています。(ウィザードを使用して、埋め込みマクロ?を設定しています。) コマンドボタン(1)でレコードが追加されるのは問題ないのですが、 コマンドボタン(2)をクリックした場合も、レコードが追加されていることに気がつきました。 一般的に入力する人は、 データを追加しようと思って入力していたけれど、 途中でやめてフォームを閉じることってありますよね? そういう場合にレコードが追加されてしまったら問題だと思ったのです。 ですが、どうしたらレコードの追加をせずにフォームを閉じられるかがわかりません。 それって可能でしょうか? Access初心者です。難しいVBAとかはまだよくわかりません。 何か方法、アドバイス等ありましたら よろしくお願いします。

  • Accessのフォームから削除したレコードをテーブルに保存したい

    Accessを利用してフォームからデータを入力しているのですが、クエリを使わずフォーム画面から不必要なレコードをコマンドボタンで削除しています。削除したレコードをテーブルに保存したいのですが、追加クエリで条件を決めずにフォームの画面から判断したレコードだけを削除し、かつ削除したレコードを削除専用のテーブルに追加する方法を教えてください。よろしくお願いします。

  • Access2000のレコード削除について

    Access2000のVBAにより、フォームに配置したコマンドボタンを押すことで、テーブルの全レコードを一度に削除したいのですが、どの様にすればよいのですか? 構文で教えて頂けると助かります。とても困っています。よろしくお願いします。

  • Access フォームのレコードソースに選択クエリを設定した場合のレコード削除

    ACCESS2003を使用しています。 フォームでレコードソースをあるテーブルの選択クエリにしています。 フォームはデータシートビューでレコードを右クリックして削除すると、 削除されますが(画面上からは消えますが)、フォームを再立ち上げすると 元に戻っています。 よく見ると選択クエリからレコード削除しても元のテーブルからは 削除されません。 こういうものなのでしょうか?

  • access フォーム上で複数行のレコードを追加したい。

    宜しくお願いします。 仕様環境:WinXP access2002 フォーム上にコマンドボタンで空白のレコードを 追加したいのですが、一行だけなら「値の代入」マクロで 追加できるのですが、複数行だとやり方がわかりません。 「追加クエリ」を作ってコマンドボタンにマクロで乗せてみたのですが、 テーブル上では複数の空白レコードが追加されてますが、 フォーム上には反映してくれません。 「値の代入」マクロを使って、複数行のレコードをフォーム上に追加するか、 「追加クエリ」を使って、複数行のレコードをフォーム上に反映させるか したいのですが教えてください。 ※ ちなみにこのフォームはサブフォームです。   また5行追加しようとしています。   この方法では無理でしたらご指導お願いします。 宜しくお願いします。

  • レコード削除時に(サブ)フォームに表示される"#Deleted"について

    アクセス97についての質問なのですが。 フォームのレコードソースにテーブルのデータを割り当て、そのデータをテーブル上(VBA等を使って)で削除するとフォームには"#Deleted"っていう文字が表示されてしまいます。これが厄介で"shift+f9"を押さないと更新ができません。 メニューバーにある"レコードの削除"ボタンによる削除なら問題はないのですが…… 会社の他の部署の人にあまりパソコンに詳しい人がいないので、できたら自分の作ったフォーム内で全ての処理が簡単にできるようにしたいと考えています(間違ったことをやらせないためにも)。 できましたら、VBAによる更新の仕方を教えてください。 あるいは、メニューバーをコマンドボタンに割り当てる方法でもかまいません。 よろしくお願いいたします。

  • レコードの削除ができない

    アクセス2007です。 デザインで一つのフォームを作り そこにテーブル1をドラッグしてサブフォームにしました。 そしてサブフォームのテーブル1はデータシートビューで表示しています。 例えば、画像のように4レコード目を削除しようと思いカーソルを持っていき 右クリックすると 「レコードの削除(R)」が選択できない状態です。 2007では、サブフォームでレコードの削除はできないのでしょうか? アドバイスよろしくお願いします。

  • Access VBAで

    VBAの超初心者です。 Accessのフォームでコマンドボタンを押すと、決まった文字が入力できるフォームを作りたいと思っています。 クリック時のイベントプロシージャーはどのように記入すればよいのでしょうか。 ど素人な質問ですみません。

  • Accessでのレコードの削除時の表示について

    いつもお世話になります。基本的なことかもしれませんがAccess初心者でよくわからないので 教えて下さい。 Access2010でテーブルからレコードを読み出すフォームを作成し、そのレコードを削除するため、 フォーム上に削除ボタンを設定しました。 削除ボタンをクリックすると小さなウインドウが開き下記のようなメッセージが表示されます。           1件のレコードを削除します。     「はい」をクリックすると、削除したレコードを元に戻すことはできません           「はい(Y)]   「いいえ(N)] メッセージのウインドウの下には読みだしたレコードのフォームが表示されていますが、 キーとなる顧客コード(数字6桁)の欄には #エラー と表示され、その他の項目はすべて ブランクになります。 「はい」をクリックするとレコードは削除されるので処理的には問題ないのですが、 削除する前に確認するためフォーム上の項目を表示したまま残したいです。 どのようにすればよいでしょうか? 削除ボタンのクリック時の埋め込みマクロの内容は以下のように設定しています。  エラー時         移動先 次         マクロ名  コントロールの移動     コントロール名 = [Screen].[PreviousControl].[Name]  マクロエラーのクリア   If not [Form].[Newrecord] Then     メニューコマンドの実行           コマンド レコードの削除 If文の最後   If [Form].[Newrecord] And Not [Form].[Dirty] Then 警告文 If文の最後   If [Form].[Newrecord] And [Form].[Dirty] Then     メニューコマンドの実行           コマンド レコードを元に戻す If文の最後   If [MacroError] <> 0 Then メッセージボックス           メッセージ = [MacroError].[Description] 警告音 はい        メッセージの種類 なし      メッセージのタイトル If文の最後  ウインドウを閉じる   オブジェクトを閉じる    オブジェクトの種類      オブジェクト名    オブジェクトの保存 確認 参考にしたAccessのプログラムから削除ボタンをコピーしたため、これが適しているかどうか わかりません。 よろしくお願いします。   

  • Accessフォームの新規レコードについて

    いつもお世話になっています。 Access2000でフォーム作成をしているときにちょっと詰まってしまいました。 クエリからフォームの作成を行うと、フォームの新規レコードの追加ができないんです! テーブルからフォームを作成する場合は新規レコードの追加は可能でした。 クエリがあるとどうしても新規レコードの追加ができなくなってしまいます。 クエリからフォームを作成して、新規レコードの追加を行えるようにすればどうしたらいいんでしょうか? よろしくお願いします。