15.登録の抹消処理
 登録してあるデータを削除(抹消)する部分が完成してしまえば、ほとんど完成したも同然ですねぇ。一覧表示なんて使うかどうか分からないし・・。

 ところで、削除に関してのフォーム等は、今までわざと(?)触れませんでした。なぜなら、ここまでに覚えたことを応用すれば簡単にできてしまいます。

 ちなみに、プロシジャに関してはヒントを一つだけ・・・ここで新たに作る必要があると思われるプロシジャは、フォーム「削除データ確認」固有のプロシジャ(各テキストボックスへ、テーブルから読み込んだデータを設定する処理)です。それ以外は以外は、全部揃ってます!とにかく無い物は自力で根性で作ってね〜。

 ということで、フォーム「削除データ指定」と「削除データ確認」、イベントへ記述するプロシジャなど、削除は今までの内容を参考にしながら自分なりに作ってみてください。
[ヒント]フォーム「削除データ確認」を作成するときに
 確認用のフォームなので、テキストボックス等への入力ができないようにするといいでしょう。やりかたは簡単です。以下のプロパティを設定してあげます。

 使用可能 :いいえ
 編集ロック:はい

 これらは、コンボボックスも同様です。
 あと、確認用のフォームだということが分かるように、テキストボックスの表示形式を多少変えてやると、さらにいいでしょう。
 確認用フォーム(入力不可状態)では、立体表示をなしで表示させます。

 立体表示   :なし
 境界線スタイル:実線

 以上のプロパティを設定すると、こんな感じになります。
[ヒント]レコード削除後・・・
 コンボボックスから削除するデータを選択、確認フォームを開いてそのデータを削除し、再度削除データ選択フォームへ戻ったときのコンボボックスがどのようになってるでしょうか? おそらく削除したデータがあったと思われる部分に、

#Deleted

 と、表示されているはずです。何となく、みっともないですねぇ。「なんとかならないものなの?」と思ったあなたに朗報です!なんと、なんとかできちゃいます!
 やりかたは非常に簡単です。フォーム「削除データ指定」のイベントアクティブ時処理対象コンボボックスを更新してあげればOK。で、肝心の更新は、コントロールに対してRequeryというメソッドを実行します。

Private Sub Form_Activate()

  '記述場所:フォーム「削除データ指定」
  '記述箇所:イベント「開くとき」

  処理対象.Requery

End Sub

 アクティブ時というのは、そのフォームが最前に表示されたときという意味です。フォーム「削除データ確認」が開いてる間も、フォーム「削除データ指定」は裏側で開いています。ということは・・・。

  確認フォームが閉じたとき=選択フォームがアクティブになるです。

 たまに、「それは、確認フォームで(Requeryを)やればいいんじゃない?」って言われることがあります。でも、フォームから別なフォームの操作をするのはあまり気が進まない。というか、なるべくフォーム同士が干渉しない構造にした方が何かと都合が良いのです。

 そんなわけで、上記のような方法(フォーム同士の干渉ををなるべく少なくする方法)を取りましょう。
Copyright(C) 1999-2006 結城圭介。 All rights reserved