• ベストアンサー

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

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