Microsoft Access Club >初心者講座 >アンケート管理ソフト >このページ >次頁 - 前項  サイト内検索


Accessの入力フォームのVBAについて_4 : アンケート管理ソフト



前回までのVBAのお話、如何ですか。アルファベットが並んでいてチンプンカンプンだなんてお声が聞こえてきそうですね。

VBAの取得は、「慣れ」と「暗記力」です。サンプルファイルにあるVBAを繰り返し勉強しましょう。再々にサンプルVBAを下記に載せます。

 VBAの解説

入力フォームには、2個のコマンドボタンがありますね。No.10に下記のよう記載しました。

  1. 1個は「入力したデータを他のテーブルに複写するイベント」を実行させます。
  2. 他は「入力しているデータをレコード毎削除するイベント」を実行させます。

上段のコマンドボタンのVBAについては、いままでお話しています。追加クエリを用いる方法ですね。では、今回は下段のVBAについてお話します。

Private Sub キャンセルコマンド_Click()

    Dim strmsg As String
    Dim strno As Variant
    strmsg = "お答えになった内容を全て取り消します。よろしいですか?"
    strno = Me.ID

    If Not IsNull(Me.ID) Then

        Select Case MsgBox(strmsg, 17, "Akira")

            Case 1

                DoCmd.SetWarnings False  '警告メッセージをオフにします。
                DoCmd.ApplyFilter , "ID=" & strno
                DoCmd.OpenQuery "qry_temp_削除", acViewNormal, acReadOnly
                DoCmd.Close acForm, "frm_質問", acSaveNo
                DoCmd.SetWarnings True '警告メッセージをオンに戻します。
                
            Case Else

                End

        End Select

    Else

            DoCmd.Close acForm, "frm_質問", acSaveNo
            DoCmd.OpenForm "frm_main"

    End If

End Sub

 

ご覧いただいたとおり、前回お話したVBAの構文が含まれていますね。いや、ほとんど同じですね。「追加クエリ」が無いだけでしょう。

このコマンドボタンは、

  1. 入力しなかった場合だとか
  2. 入力を途中で止めた場合などを想定して、

このフォームを終了させる機能を付加させています。

 追加クエリを用いる理由

  1. 子供の悪戯や悪ふざけなどで、「やっぱり、やめよう」ですね。今回、データをこの入力フォームと連結しているテーブル(tbl_temp)に直接格納せず、追加クエリを用いてtbl_questionテーブルにワザワザ移行させているのは、このような理由からです。
  2. 皆さんもシステム構築される場合、格納データをこのように別テーブルに移行させる方法をちょっと考案されたらどうですか。面白いですよ。
  3. 複雑なクエリ(メインとサブの関係など)を組まざる得ない場合でも、追加クエリを用いて1つのテーブルとして移行させると何かと作業がし易くなりますし、よくお話する「リレーションの落とし穴」にも対処できますしね。

 

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


Accessの入力フォームのVBAについて_4 : アンケート管理ソフト


 

-Microsoft Access Club-