13.入力内容の保存
 今度は入力した内容を保存する処理を作成します。今までの部分を理解していれば簡単です。ホントに簡単です。なぜなら、フォームへ設定した時と逆のことをすればいいんですから・・・。
プロシジャ「入力内容保存」の作成
 この処理もモジュールへ作成します。まずは、プロシジャを見てください。

Sub 入力内容保存()

  '記述場所:モジュール「AddressBookModule」

  'Access97、2003での手順
  Call テーブルオープン
  Dim qry As Recordset
  Set qry = db.OpenRecordset("汎用クエリー", DB_OPEN_DYNASET)

  qry.Edit

  With Forms!登録変更
    qry!漢字氏名 = !漢字氏名
    qry!カナ氏名 = !カナ氏名
    qry!性別 = !性別
    qry!関係 = !関係
    qry!生年月日 = !生年月日
    qry!郵便番号 = !郵便番号
    qry!住所 = !住所
    qry!加入電話番号 = !加入電話番号
    qry!FAX番号 = !FAX番号
    qry!携帯等電話番号 = !携帯等電話番号
    qry!メールアドレス = !メールアドレス
    qry!備考 = !備考
    qry!ステータス = 0
  End With

  qry.Update

  qry.Close
  Call テーブルクローズ
 
End Sub
 ※Access97、2003の場合。太字の部分がAccess2000との違い。

Sub 入力内容保存()

  '記述場所:モジュール「AddressBookModule」

  'Access2000での手順
  Call テーブルオープン
  Dim qry As DAO.Recordset
  Set qry = db.OpenRecordset("汎用クエリー", dbOpenDynaset)

  qry.Edit

  With Forms!登録変更
    qry!漢字氏名 = !漢字氏名
    qry!カナ氏名 = !カナ氏名
    qry!性別 = !性別
    qry!関係 = !関係
    qry!生年月日 = !生年月日
    qry!郵便番号 = !郵便番号
    qry!住所 = !住所
    qry!加入電話番号 = !加入電話番号
    qry!FAX番号 = !FAX番号
    qry!携帯等電話番号 = !携帯等電話番号
    qry!メールアドレス = !メールアドレス
    qry!備考 = !備考
    qry!ステータス = 0
  End With

  qry.Update

  qry.Close
  Call テーブルクローズ
 
End Sub
 ※Access2000の場合。太字の部分がAccess97、2003との違い。

 まるっきり、フォームへセットしたときと逆でしょう!?違うのは、ステータスに0を入れているくらいです。この謎は、登録処理の所で明かされます(笑)
 他に違うのは、EditメソッドとUpdateメソッドが追加されてるくらいです。
フォーム「登録変更」への機能追加
 フォーム「登録変更」の保存ボタンがクリックされたときに、保存プロシジャを呼び出して登録変更を閉じる処理を加えます。
 簡単なので、説明は省略します(笑)

Private Sub 保存_Click()

  '記述場所:フォーム「登録変更」
  '記述箇所:「保存」ボタンのイベント「クリック時」

  Call 入力内容保存
  DoCmd.Close

End Sub

 登録変更には、もう一つボタンがあります。取り消しです。
 これは、間違えてデータを選択した場合等に、保存をしないでフォームを閉じるために使用します。でも、実はもう一つ機能があって・・・これは、登録処理のときにどうにかするので、ここでは省略!(この辺が、いい加減な気がする・・)

 とりあえず、クリックイベントへフォームを閉じる処理を書いておきましょう。

Private Sub 取り消し_Click()

  '記述場所:フォーム「登録変更」
  '記述箇所:「取り消し」ボタンのイベント「クリック時」

  DoCmd.Close

End Sub
保存できるか確認してみよう
 ここまで完成すればデータの検索と変更が可能になるので、とりあえずは住所録として機能します。実際に入力して、各処理がちゃんと動作するか試してみるといいでしょう。
Copyright(C) 1999-2006 結城圭介。 All rights reserved