-PR-
解決済み

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

  • 困ってます
  • 質問No.65598
  • 閲覧数5956
  • ありがとう数8
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 88% (23/26)

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

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

  • 回答No.4
レベル7

ベストアンサー率 77% (14/18)

・レコードの追加なんですけれど、複数のフィールドにはどのように入れるのでしょうか?

INSERT INTO テーブル名(フィールド名1,・・・) VALUES (値,・・・)のように書きます。(詳しくはHELPを参照して下さい。)
(フィールド名1,・・・)の部分は省略できます。
別のテーブルから値を取得する方法もあります。

・また、シングルクォーテーションの意味は??

文字列を設定する場合は、シングルクォーテーションまたはダブルクォーテーションでくくる必要があります。

・レコードの削除の際に複数の条件を入れたいです。
これもHELPを参照して下さい。

DELETE FROM テーブル名 WHERE 条件式
で実現できると思います。

<やりたいこと>
フォームで会社名と支店名をリストボックスから選択して、テーブルのフィールド1の会社名かつフィールド2の支店名のものをレコードを削除したい。
教えてください。

DELETE FROM テーブル
WHERE フィールド1 = '会社名' AND フィールド2 = '支店名'
で、いけると思います。

まあ、何でもいろいろやってみて身に付けてください。
補足コメント
soraprio

お礼率 88% (23/26)

有難うございます。やってみたけれど、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

何度もすいません。教えてください。
投稿日時 - 2001-04-23 11:06:53
お礼コメント
soraprio

お礼率 88% (23/26)

ご丁寧にありがとうございました。ついに完成しました。
非常に助かりました。
投稿日時 - 2001-04-27 17:24:27
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.5
レベル6

ベストアンサー率 41% (5/12)

soraprioさんが、tom777さんの回答に対し、
補足記入されていたモジュールの、
「レコードを削除する」
の部分を訂正してみました。

DoCmd.RunSQL "DELETE * FROM 支店ルータ管理T WHERE (顧客ID= " & In1 & " AND 支店名= '" & In2 & "');"

これで、動くと思いますよ。

顧客IDは数値型、支店名は文字列型ですよね?
お礼コメント
soraprio

お礼率 88% (23/26)

ありがとうございます。完成しました。
投稿日時 - 2001-04-27 17:21:30


  • 回答No.1
レベル8

ベストアンサー率 17% (3/17)

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

お礼率 88% (23/26)

クエリーですか。やったことないので試してみます。
有難うございます。
投稿日時 - 2001-04-20 12:29:09
  • 回答No.2
レベル12

ベストアンサー率 41% (324/772)

レコードを追加または削除であれば、
「マクロ」の方が早いし、わかりやすいですよ。
マクロなら、一覧から操作内容を選択できますし、、、

どうしても「イベントプロシージャ」がよければ
「レコードを追加または削除」の「マクロ」を
作成し、これを「イベントプロシージャ」へ変換する
方が「確実」です。

ただし、Accessのバージョンまたは、インストール
状態によっては「マクロ→イベントプロシージャ」
への変換機能は付いていない場合があります。
お礼コメント
soraprio

お礼率 88% (23/26)

マクロですか、これもまたやったことありませんので試してみます。
いろいろ方法があるのですね。どれが一番いいのだろう???
有難うございます。
投稿日時 - 2001-04-20 12:31:04
  • 回答No.3
レベル7

ベストアンサー率 77% (14/18)

[イベントプロシージャ]で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

お礼率 88% (23/26)

有難うございます。
・レコードの追加なんですけれど、複数のフィールドにはどのように入れるのでしょうか?また、シングルクォーテーションの意味は??
・レコードの削除の際に複数の条件を入れたいです。
<やりたいこと>
フォームで会社名と支店名をリストボックスから選択して、テーブルのフィールド1の会社名かつフィールド2の支店名のものをレコードを削除したい。
教えてください。
投稿日時 - 2001-04-20 12:42:12
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ