9.フォーム「変更データ指定」の作成
 お次は、変更処理時の変更対象データを指定(選択)するためのフォームを作成します。まずは、フォームの新規作成で新たにフォームを作成してください。
 作成したら、フォームのスクロールバー・移動ボタン・レコードセレクタ等を消し、詳細部の背景の色を好きな色に変え、詳細部の大きさを適度な大きさに設定しよう。あと、フォームの最大化の処理を追加しておくのを忘れずに!
コントロールの配置
 フォームの基本的な設定が完了したら、お次はコントロールを配置します。このフォームでは、以下のコントロールを使用します。(デザインサンプル

コントロールの種類
コントロールの名称
表題
機能、用途
コンボボックス
処理対象

変更を行うデータの選択に使用する。
コマンドボタン
OK
OK
選択したデータを変更画面に表示する。
コマンドボタン
もどる
もどる
変更データ指定画面を閉じる。
 ※コンボボックスには表題はありません。

 上記の表で、コントロール名称はプロパティの名前へ設定する内容、表題等はプロパティの表題へ設定する内容です。(ただし、表題等はコマンドボタンのみ)当然ですが、これらは各コントロールごとに設定します。

 コンボボックスは配置時に自動でラベル(※)が付くようになっていますが、必要なければラベルのみ削除してもかまいません。サンプルアプリでは削除しています。それと、コンボボックスのフォント・フォントサイズなどはお好みで設定しましょう。
 ※ラベル→見出し用の文字など表示するだけのコントロール

 配置が完了したら、次はそれぞれのコントロールについて設定を行います。
「もどる」ボタンの設定
 このボタンが押されたとき(クリックされたとき)に、当フォームを終了させるようにします。
 フォームを閉じるには、DoCmd.Closeを使用します(クリック時のイベントプロシジャへDoCmd.Closeを記述)

Private Sub もどる_Click()

  '記述場所:フォーム「変更データ指定」
  '記述箇所:「もどる」ボタンのイベント「クリック時」

  DoCmd.Close

End Sub

※フォームビューに切り換えてもどるボタンのテストをしてもかまいませんが、フォームを保存していない状態だと「保存しますか?」のダイアログが表示されるので、必ず保存(フォーム名:変更データ指定)するようにしてください。
「OK」ボタンの設定
 このボタンが押されたとき(クリックされたとき)は、コンボボックスで選択されたデータの変更を行うフォーム(フォーム名:登録変更)を開きます。
 フォームを開くための処理等はメニューのときと同様なので省略しますが、このボタンの処理に関しては、後ほど(12.データの指定〜入力画面の表示)多少の追加処理を加えます。
突然のテストデータ作成
 番組の途中ですが、ここでテストデータの作成を行います。というのは、変更データ指定用コンボボックスにはテーブルのデータを表示させるので、テーブルに何も入っていないと面白くも何ともないからです。
 てなわけで、コンボボックスの設定をする前に住所録テーブルへテストデータを何件か入力しておくといいかもしれません。
 住所録テーブルへ入力しておく内容は、漢字氏名、関係、性別程度で十分です。
 なお、このサンプルアプリでは以下のテストデータで話を進めます。

漢字氏名
性別
関係
古畑忍三郎
1
1
笹錦アキラ
1
1
藤原 拓美
1
1
※レコードキーはオートナンバー型としたので、何も入力しないでよい。
コンボボックスの設定
 このフォームで一番重要な(?)コントロールです。何といっても、ここへ変更したいデータを指定するわけですから。
 ここから先の流れを簡単に説明すると、

1.漢字氏名で対象データを選択
2.選択した漢字氏名のレコードのレコードキー(フィールド名)を抽出条件としたクエリーを創成する。
3.クエリーの各フィールドを変更用フォームへ表示。

 という流れになります。(ただし、2以降は当フォームでは行いません)

 もしかすると、ここで疑問が生まれる人もいるでしょう。それは、「最初から漢字氏名で検索すればいいんじゃないの?」って疑問です。まあ、確かにそれも正しいし同姓同名で漢字まで全く同一の登録が合った場合の処理を考慮しておけば漢字氏名で検索してもOKです。しかし、これをやると話がややこしくなるので、レコードキーを使って1件のデータを抽出・変更を加えるという流れにしました。

 とうことで、このコンボボックスは、表示は漢字氏名でコンボボックスから取得できる値はレコードキーという都合のいいものに設定します。これで、やっと苦労して作ったクエリー(?)が役に立つ時が来た! このコンボボックスでは、前もって作成しておいたクエリー「処理対象選択」を使用します。
 とりあえず、コンボボックスの以下のプロパティを設定後、フォームビューに切り換えてコンボボックスの中身を見てください。

 値集合タイプ :テーブル/クエリー
 値集合ソース :処理対象選択
 列数     :2
 連結列    :1

 プロパティで、列数というのはクエリー(もしくはテーブル)のフィールド数と覚えておけばよいでしょう。

 連結列というのは、このコンボボックスの値を取り出したときに「値集合ソース」に指定したテーブルやクエリーの何番目のフィールドの値を使うかを設定するプロパティです。ここまでの設定でコンボボックスを使うと、列は2つ(レコードキーと漢字氏名)が表示されますが、このうちどっちの列を使うかという指定です。表示は漢字氏名、取り出す値はレコードキーなので1を指定しました。

 ちなみに、コンボボックスはこんな感じで表示されたでしょ?
 試しに、表示されたリストから何か選んでみると、コンボボックスへは数値が入ってしまいます。それにしても、リスト中のレコードキー・・・邪魔ですね!
 このコンボボックスは、漢字氏名のリストが表示、選択後も漢字氏名を表示したいわけですから、お邪魔なレコードキーは表示しないように設定します。

 それでは、さらに次のプロパティを設定してみましょう。

 列幅 :0,8
(プロパティウィンドウでの表示は、0cm8cmとなる)

 ここでは、8(cm)と設定しましたが、これくらいあればいいだろうって値なので、4(cm)でもOK。でも、あまり小さくすると名前がちゃんと表示されないので注意。
 この状態で、再度フォームビューに切り換えてコンボボックスのリストを表示させてみてください。今度は漢字氏名のみがリストに表示され、選択後も漢字氏名がコンボボックス内へ表示されたはずです。

 なお、表示されている内容は漢字氏名ですが、このコンボボックスから取得できる値はレコードキーの値(数値)なのでご心配無く!
とりあえず、ここまで
 とりあえず、変更データ指定フォームはこのくらいにしておきます。フォーム名を変更データ指定として保存しましょう。

 メニューをフォームビューで開いて、変更データ指定フォームが表示されること。また、もどるボタンで変更データ指定フォームが閉じること。この2点をテストしておくと良いでしょう。
Copyright(C) 1999-2006 結城圭介。 All rights reserved