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


クリック一つでサンプルデータを削除する : Access裏技Tips



システム作りにはサンプルデータが不可欠ですが、後の処理に困ります。 ここでは、不要になったサンプルデータを一括削除する技を紹介します。

サンプルデータを削除する

  1. サンプルテーブル(tbl_main、tbl_sub)を2つ用意します。
  2. このテーブルはリレーション設定が結ばれているメイン/サブの関係にあります。
  3. 次に、全テーブル名を収めるテーブル(tbl_sakujo)を作成します。
  4. また、DAOを使用しますので、参照設定を有効にします(詳細は09-25を参照)。
  5. テーブルデータの削除は、Functionプロシージャ内に記述したSQLで行います。
  6. FunctionプロシージャSakujo実行を作成します。
  7. このプロシージャは、tbl_sakujoテーブルからテーブル名の提供を受け次々とデータを削除していきます。
  8. 注意点としては、リレーションの関係にあるテーブル、例えば1対多の場合、多側のテーブルデータから削除を行っていきます。

サンプルテーブルの作成

  1. サンプルテーブルとして、1対多のリレーション関係にあるテーブルを作成します。

  1. 全テーブル名を収めるテーブルを作成します。
  2. このテーブルには、IDフィールドと削除対象テーブルフィールドを作成します。
  3. 削除対象テーブルフィールドには、リレーション設定で多側にあるテーブルから入力を行っていきます。

Functionプロシージャ Sakujo実行 の作成

Functionプロシージャ Sakujo実行 を作成します。

Function Sakujo実行()
    
    On Error GoTo sakujo_Err
    
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    
    Set db = CurrentDb() ' --- A
    Set rst = db.OpenRecordset("tbl_sakujo", dbOpenSnapshot) ' --- B

    DoCmd.SetWarnings False ' --- C
    
    Do While Not rst.EOF ' --- D
        DoCmd.RunSQL "DELETE * FROM " & rst![削除対象テーブル] ' --- E
        rst.MoveNext ' --- F
    Loop
    
    DoCmd.SetWarnings True ' --- G
    
    rst.Close
    db.Close

    Exit Function
    
sakujo_Err:

    MsgBox "予期せぬエラーが発生しました。" & Chr(13) & _
            "エラーナンバー:" & Err.Number & Chr(13) & _
            "エラー内容:" & Err.Description
    Exit Function
    
End Function
解説
  1. カレントデータベースへの参照を行います。
  2. 新しくRecordsetオブジェクトを作成し、Recordsetsコレクションに追加します。
  3. 警告メッセージを非表示にします。
  4. 指定した条件が真 (True) である間、繰り返し実行するフロー制御ステートメントです。今回の場合は、tbl_sakujoテーブルの全レコードに亘って実行する、という意味です。
  5. SQLを実行しています。tbl_sakujoの削除対象テーブルフィールドに記載されているテーブルに対して全てのデータを削除します。
  6. tbl_sakujoテーブルの次のレコードに移動します。
  7. 警告メッセージを表示します。

実行フォームの作成

  1. 非連結の実行フォームを作成します。
  2. 削除を行うテーブル名を表示するために、リストボックス(Listボックス)を作成します。
  3. 値集合ソースには、tbl_sakujoを指定します。
  4. コマンドボタン(Cmdコマンド)を作成します。

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

コマンドボタンクリック時イベントプロシージャを作成します。

Private Sub Cmdコマンド_Click()

    Dim strmsg As String
    strmsg = "サンプルデータを削除しますか?" & Chr(13) & _
             "一度削除すると元には戻りません。"

    If 1 = MsgBox(strmsg, 17) Then
        Call Sakujo実行 ' --- A
        MsgBox "データ削除が完了しました。"
    End If

End Sub
解説
  1. Function関数 Sakujo実行 を呼び出します。

動作確認

  1. デザインビューからフォームビューに切り替えます。

  1. コマンドボタンをクリックすると確認メッセージが表示します。

  1. [OK]ボタンをクリックして削除を実行します。
  2. 完了メッセージが表示されるのを確認します。

関連ページ

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

 


クリック一つでサンプルデータを削除する : Access裏技Tips


 

-Microsoft Access Club-

アメリカ合衆国の大手データセンターのアダルト対応可能なリーズナブル価格設定の専用・共有レンタルサーバーをご提供しています。
アメリカ合衆国の大手データセンターにサーバー機器を設置。
アダルト対応可能な専用・共有レンタルサーバーを提供。