Microsoft Access Club >AccessTips >このページ >次頁 <前項  サイト内検索


SQLを用いてリストボックスで選択したレコードを削除する : AccessTips132



今回は、リストボックスに表示されたレコードの一覧から任意に選択したレコードのみを削除する方法をご紹介します。組み立て方は、 リストボックスの複数選択プロパティを標準に変更し、選択したレコードのIDフィールド値をループを用いて変数に代入します。削除機能は削除クエリーのSQLを実行します。

サンプルテーブル

以下のようなフィールドを持つサンプルテーブル(T_sample)を作成します。

ID 日付 売り上げ
00001 2005/08/10 ¥154,420
00002 2005/08/11 ¥54,200
00003 2005/08/12 ¥410,100
00004 2005/08/13 ¥310,050
00005 2005/08/14 ¥63,100
00006 2005/08/15 ¥84,100
00007 2005/08/16 ¥114,620

フォームの作成

T_sampleテーブルと連結した単票式フォーム(F_sampledelete)を作成します。 フォームに表示されたリストボックスから任意のレコードをマウスで選択します。以下のようなオブジェクトを追加します。

  1. リストボックス(lst表示)を作成します。
  2. 値集合ソースは、T_sampleテーブルです。
  3. 削除を実行するコマンドボタン(cmd削除)を作成します。

削除クエリのSQLを作成する

以下の手順で作成します。

  1. IDフィールドの抽出条件欄に変数var条件を組み込んだ削除クエリを作成します。
  2. メニューバーのクエリからSQLのパススルーをクリックします。
  3. SQLの雛形が作成されますのでコピー&ペーストします。
  4. アレンジします。
  5. 以下のようなSQLを作成します。
DELETE *, ID FROM T_sample WHERE ID IN (" & var条件 & ")

コマンドボタンのクリック時イベントプロシージャの作成

コマンドボタンのクリック時イベントに以下のプロシージャを作成します。プロシージャが実行されると、 リストボックスで選択されているレコードのIDフィールドを値を求めます。求めた値をWHERE句のIN句の設定値として活用します。

Private Sub cmd検索_Click()

    Dim var条件 As Variant
    Dim var行 As Variant
    Dim mySQL As String
    
    For Each var行 In Me.lst一覧.ItemsSelected
        var条件 = var条件 & IIf(Not var条件 = "", ",", "") & _
                                        Me.lst一覧.Column(0, var行) ' --- A
    Next
    
    mySQL = "DELETE *, ID FROM T_sample WHERE ID IN (" & var条件 & ")" '--- B
    DoCmd.RunSQL mySQL ' --- C
    
    Me.lst一覧.Requery ' --- D
    
End Sub
解説
  1. 選択したレコードのIDフィールドの値を求めます。
  2. 変数mySQLを組み立てた削除クエリのSQLに結合させます。
  3. DocmdオブジェクトのRunSQLメソッドを用いて、SQLを実行します。
  4. リストボックスの再クエリを行い、削除したレコードをリストボックス上から消し去ります。

フォームをビューモードで開く

  1. フォームをビューモードで開きます。
  2. 削除するレコードを選択します。

  1. 削除コマンドボタンをクリックします。
  2. Access既定の警告メッセージが表示されます。

  1. [はい]をクリックします。
  2. 当該レコードが削除されます。

解説
  1. 一旦削除したレコードは元に戻せません。
  2. 削除クエリを実行するので、Access既定の警告メッセージが自動的に表示されます。

関連ページ

2005/08/16

ページの先頭へ 前ページへ戻る

 


SQLを用いてリストボックスで選択したレコードを削除する : AccessTips132


 

-Microsoft Access Club-