メールマガジン【アクセスで作るシリーズ】


バックナンバー 【住所録ソフト編】 Vol.5
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

    ACCESSで作るシリーズ  【住所録ソフト編】

    発 行 : Yoshihisa Fukuda          2001.11. 3 Vol.5

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回はコンボボックスに焦点を当てて解説を行います。
______________________________________
 □ コンボボックスの色々なパターンを作成する

前回作成したフォームの敬称コンボボックスを使用して、色々なパターンを作って
みましょう。

前回作成した、敬称コンボボックスの一覧データは固定値になっています。
一覧の内容は「様」「殿」「御中」「行」「宛」「様方」「先生」「君」「ちゃん」
でした。

★ 一覧にあるデータ意外を入力不可にする。

  では、まず最初に敬称フィールドを、この「様」~「ちゃん」の9個の値意外は
  入力できないフィールドにしてみましょう。

  敬称コンボボックスを選択した状態で[入力チェック]プロパティを[はい]にしま
  す。

  これで、フォームを開いて実際に敬称フィールドに入力してみましょう。
  「様」を選択、または入力しても大丈夫ですが、「あ」と入力すると「指定した
  項目はリストにありません。」というメッセージが出て入力できませんね。

  この様に、特定の値しか入力させたく場合は[入力チェック]プロパティを使用
  します。

★ 一覧にあるデータ意外も入力可能にする。(サンプルで敬称に採用)

  では、先程の敬称コンボボックスの[入力チェック]プロパティを[いいえ]に戻し
  ます。

  そして、先程の様にフォームを開いて敬称フィールドに何か入力してみましょう。
  今度は「あ」と入力しても「指定した項目はリストにありません。」という
  メッセージは出ません。
  「あ」もちゃんとテーブルに登録されます。

★ 一覧のデータをテーブルを元にする。(サンプルで役職と分類で採用)

  「様」「殿」「御中」「行」「宛」「様方」「先生」「君」「ちゃん」にない
  敬称をコンボボックスの一覧に追加したくなった時、もちろんフォームをデザイ
  ンで開いて敬称コンボボックスの[値集合ソース]プロパティに追加しても構いま
  せんが、ちょっと面倒くさいですね。

  そこで、敬称フィールドに一度入力したデータが一覧表示される様なコンボ
  ボックスを作成してみましょう。
  【会計ソフト編】をご購読いただいた方は、仕訳入力の摘要コンボボックスを
  思い出して下さい。

  設定手順は以下の通りです。

  1.敬称コンボボックスを選択し、[値集合タイプ]プロパティを[テーブル/
    クエリー]にします。
  2.[値集合ソース]プロパティを[AddressTable]にして右端の[...]ボタンを
    押下します。
  3.「テーブルを元にしてクエリービルダーが起動されました」のメッセージが
    表示されるので[はい]を選択しクエリービルダーを開きます。
  4.クエリービルダーの上段に[AddressTable]が表示されている事を確認したら
    [Honor]フィールドをダブルクリックします。
    すると下段に[Honor]フィールドが表示されます。
  5.クエリービルダーの右上の[×]ボタンを押下し、クエリーを保存して終了
    します。

  これで、敬称コンボボックスの一覧は、敬称フィールドに入れた値がどんどん
  追加されていきます。

  但し、このままでは2点ほど問題点があります。
  まず、第一点はコンボボックスの一覧の内容が、フォームを一度閉じないと更新
  されない。
  そして、第2点目は同一データが登録された分、全て一覧に表示されてしまう。

  では、どういう現象か確認してみましょう。

  フォームを開いて、敬称フィールドに「様」と入力し、次のレコードへ移動し
  同じく敬称フィールドに「宛」と入力します。
  そして、また次のレコードへ移動して今度も「様」と入力してみましょう。
  また、この時、コンボボックスを開いても一覧には何も表示されません。
  (これはデータが登録されていない場合の話です)

  では一度フォームを閉じて、再び開き直して見ます。

  敬称コンボボックスを開くと「様」「宛」「様」と3つのデータが一覧表示され
  ましたね。

  では、2つの問題点を直していきましょう。

  まず、1点目のフォームを開き直さないと一覧が更新されない問題です。

  原因は、敬称フィールドにデータを登録しても、敬称コンボボックスの[値集合
  ソース]プロパティに設定したクエリーは更新されないからです。
  そこで、敬称コンボボックスがフォーカスを得た時(カーソルが来た時)に
  この敬称コンボボックスのクエリーを更新する事にしましょう。

  設定手順は以下の通りです。

  1.敬称コンボボックスを選択し、[フォーカス取得時]プロパティにカーソルを
    移動し、[イベントプロシージャ]を選択して右端の[...]ボタンを押下します。
  2.クラスモジュールウィンドウが開いたら Private Sub Honor_Enter() と
    End Sub の間に Honor.Requery と入力しましょう。

    Private Sub Honor_Enter()
     Honor.Requery
    End Sub

    こんな感じになります。

  3.クラスモジュールウィンドウの右上の[×]ボタンを押下しクラスモジュール
    ウィンドウを閉じます。

  これでコンボボックスの一覧は更新される様になりました。

  次に敬称コンボボックスの一覧データの重複データを1つにします。

  これは、先程の[値集合ソース]プロパティに設定したクエリーで同一データを
  1つにまとめる様に設定します。

  設定手順は以下の通りです。

  1.敬称コンボボックスを選択し、[値集合ソース]プロパティにカーソルを移動
    したら、右端の[...]ボタンでクエリービルダーを開きます。
    (今回は「テーブルを元にしてクエリービルダーが起動されました」のメッ
     セージは表示されません)
  2.次に上段の[AddressTable]テーブルの横のグレーの部分をクリックします。
    (この時プロパティーウィンドウのタイトルが[クエリー プロパティ]と
    なっている事を確認しましょう)
  3.[クエリー プロパティ]ウィンドウの[固有の値]プロパティを[はい]にしま
    しょう。
  4.クエリービルダーの右上の[×]ボタンを押下し、クエリーを保存して終了
    します。

  これで、重複データは一覧表示されなくなります。

  では、フォームを保存したら開いて確認してみましょう。

  敬称コンボボックスを開くと、前は「様」「宛」「様」と3つのデータが一覧に
  表示されていましたが、今度は「様」と「宛」の2つになっていますね。

  では、新規レコードへ移動して、今度は「ちゃん」と入力してみましょう。
  そして、次のレコード(新規レコード)へ移動して敬称コンボボックスを開くと
  今度は、「様」「宛」「ちゃん」の3つのデータが一覧表示されます。
  フォームを開き直す必要が無くなりましたね。

  ※ もちろん、この場合、敬称コンボボックスの[入力チェック]プロパティは
    [いいえ]でなければいけません。

★ 最初に幾つかのデータが一覧表示されて、一覧に無いデータが入力された時は
  一覧に追加される。

  先程の一覧に追加されていく方法は、一度は入力(使用)されないと一覧に表示
  されません。
  例えば、「様」「殿」「御中」「行」「宛」「様方」「先生」「君」「ちゃん」
  の9つは最初から一覧に表示されていて、それ以外のデータを入力した場合は
  一覧に追加されていくと言う事もできます。

  その方法は、[値集合ソース]プロパティにユニオンクエリーというクエリーを
  使用するのですが、これを説明するのは、かなりのボリュームなので、また今度
  にしたいと思います。

  ※ お仕事等で、どうしてもこのコンボボックスを作りたい言う方へ。
    ユニオンクエリーを知っていると言う方のみ、個別のメールにて対応します。

この様に、コンボボックスには、設定の方法で色々なパターンが作れます。

最初の「一覧にあるデータ意外を入力不可にする」は、想定していないデータが入力
されると困る様なフィールドに適しています。

次の「一覧にあるデータ意外も入力可能にする」は、入力されるデータは特に制限は
無く、ただ頻繁に入力するデータは一覧から選択できる、入力補助的な使い方です。

3番目の「一覧のデータをテーブルを元にする」も、一度入力したデータは次からは
一覧から選択できる、入力補助的な使い方ですが、2番目との大きな違いは、一度
入力したデータは、2度と使わない様なデータでも常に一覧に表示されると言うこと
です。
それに比べ2番目のコンボボックスでは、頻繁に使うと想定したものだけが一覧に
表示されます。

住所録フォームも「役職」「敬称」「分類」と3つのコンボボックスがありますが、
それぞれに、どのコンボボックスが使いやすいか、皆さんの好みで選んで見て下さい。


今回はここまでです。
次回は、皆さんのご要望により、宛名印刷の仕様を考えてみましょう。
______________________________________
 □ お知らせ

 ★ 宛名印刷の仕様について

   現在、宛名印刷に関する仕様のご要望をメールにて頂いております。
   その中の幾つかを掲示板の方へ書いておきますので、是非一度ご覧下さい。
   それに対するご意見等を書き込んで頂ければ嬉しく思います。

   仕様、要望に関しまして、メールを頂いておりますが、出来る限り掲示板の
   方へ書き込んで頂きますよう、よろしくお願いいたします。

 ★ 質問について

   読者の皆様から、色々な質問等のメールを頂いております。
   その中で、ごく少数の方々ですが、標題も無く、メールマガジンに関する質問
   である事等、何も書かずにいきなり質問を書かれてこられる方がいらっしゃい
   ます。
   その場合、以下の様な理由により、返事が遅れますので、大変恐縮ではござい
   ますが、何処かにメールマガジンに関する質問(要望等)である事を明記して
   頂きますよう、よろしくお願いいたします。

   理由
   1.毎日多数のメールを頂きますので、要件が明確で無いメールは取りあえず
     後回しになります。
   2.仕事上、アクセスを使用しております関係で、類似したメールが多数あり
     そちらに紛れ込んでしまう事があります。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

◇ ACCESSで作るシリーズ 【住所録ソフト編】
◇ 発 行 元  :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
  ご質問等   :fukud@nifty.com

◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
  しています。(まぐまぐID:0000077071)
◇ バックナンバー:http://homepage2.nifty.com/f-soft/
◇ 登録・解除  :http://homepage2.nifty.com/f-soft/

 Copyright(C) 2001 Yoshihisa Fukuda All rights reserved.

◇転載について
 このメールマガジンの無断転載などは、一切禁止です。
 転載をご希望の方は、事前にメールで連絡をください。
◇免責
 このメールマガジン及びホームページの内容による、いかなる損害、障害などに
 関して発行者は一切の責任を負いません。
 掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□