Microsoft Access Club >初心者講座 >CDアルバム管理ソフト >このページ >次頁 - 前項


検索・抽出フォームの作成と解説_2 : CDアルバム管理ソフト08



今回で第8回目です。以前は1週間サイクルでアップデイトを行っていましたが、お便りにも、「更新期間を短くできませんか」とのお声もありますので、可能な限りチャレンジしていきたいと思います。

前回は、「コンボボックス」を連動させる手法で検索・抽出フォームを作成しましたが、今回は「リストボックス」だけで構成する手法でフォームを作成していきます。(フォーム名:frm_kensaku_1 )

リストボックスで構成したフォームの作成

それでは、解説していきます。

新規フォームを作成してください。フォーム作成ウィザードは使いません。下記のように、何もない新規フォーム(フォームのデータソースには勿論何も入れません。)で「リストボックス」を3個(下記サンプル)とテキストボックス1個を作成してください。実物の表示は、ここをクリックしてくださいね。

フォームの縦横サイズですが、縦が13センチ横が20センチもあれば十分です。該当データの表示までの流れを下記のとおりです。

  1. 「アーティスト名を検索」リストボックスをクリックすると

  2. 「タイトル名を検索」リストボックスの値集合ソースクエリの抽出条件に値が反映し、

  3. 「タイトル名を検索」のリストボックスにデータが表示されます。

  4. そのタイトル名の何れかをクリックすると

  5. 「曲名、演奏時間等の表示」リストボックスの値集合ソースクエリの抽出条件に値が反映し、

  6. 「曲名、演奏時間等の表示」リストボックスに曲名等のデータが表示されます。

  7. また併せて、テキストボックスにその曲名のetcが表示されます。

アーティスト名を検索 リストボックス

前回作成したフォームに用いている「コンボボックス」と同様に、「値集合ソース」を下記のようなクエリにして下さい。

タイトル名を検索 リストボックス

このリストボックスの特徴は、「値集合ソース」に配置するクエリです。今までの例と異なり(列が1列ではなく)、下記のようにフィールドが4列の構成となります。

これらフィールドには、特に難しいものはありませんが、敷いて挙げると、「曲数:[全曲数]&"曲"」ぐらいですか。 テーブルデータとしては、単なる数字ですから、6曲という表示のように言葉っぽい表現にしています。

注意

曲:[全曲数]&"曲"」 としてはいけません。この場合は、循環参照違反となり、エラーとなります。「循環参照」とはつまり、同じ名前 (ここでは曲)があってどれがどれだか分からないという意味です。

アーティスト名フィールドにある「表示」のチェックは不要です。なぜなら、このフィールドは抽出だけに使うからす。

数と列見出しの操作

列数と列見出しの操作でクエリフィールドを表示させない方法もあります。それを今からお話します。

  1. 上のリストボックスは、「列数」を"3"にします。これは フィールド数を3列に限定する方法です。

  2. 下のリストボックスは、「列数」は"4"にして、最後の列の「列幅」を"0"にし ます。これは0にすることでフィールドデータを表示させない技法です。

このように列を意図的にリストボックスに組み込みながら、列幅を0 にすることでフィールドデータを表示させない方法は よく利用されます。#細かいことを云えば、非表示にさせるデータを抽出条件にする場合などです。

当然、この場合の「列幅」の合計は、「幅」以下であることが条件です。

リストボックス名「リスト1」の「更新後処理」イベントに、下記マクロ(マクロ名 リスト1)をセットして下さい。 そして、リストボックス名「リスト2」の「更新後処理」イベントにも、下記マクロ(マクロ名 リスト2)をセットして下さい。

ここでフォームを保存してください。"フォームビュー"で見るとリストボックス内でデータが間違いなく表示されていますか?但し、まだ 「リスト3」には何も手を加えていないのでデータが表示されません。

リストボックスデータの左詰

ところで何か感じが可笑しくないですか?そうですね、データが全て"左詰"で表示されています。時刻/日付型は既定値で右詰の筈ですね。しかし、リストボックスでは全データが左詰になります。プロパティで変更できないんです。ビル・ゲイツさんへお願いしなければいけませんね。

これじゃあ嫌だと仰る方は、下記手順で少しは直りますのでチャレンジしてください。

 

--Check1--

Space関数を利用します。Space関数は、Space()の()内に記された数値分のスペースを返します。但し2つの注意点があります。

  • フィールド名を変更する必要がある。

  • 列見出しにはスペース関数を使えないので、そのままの状態となります。

 

曲名、演奏時間等の表示 リストボックス

もう皆さんご存知ですね。リスト3は、リスト2を更新するとリスト2のアルバム名を抽出条件にデータ表示を行う仕組みです。
解説はしませんので、各自チャレンジしてください。え、できないって?ここをクリックして、実物のコピーをご覧の上、チャレンジ、チャレンジ!

 

テキストボックス の活用

ここには「tbl_sub」にあるフィールド「etc」のデータを表示させるんですが、リスト3に表示される"曲名"をクリックするごとにその曲 独自のデータを表示させる仕組みです。
また、テキストボックスの「使用可能」は「いいえ」、「編集ロック」を「はい」にして下さいね。

 

ちょっとお耳を拝借

「テキストボックス」の「コントロールソース」に "=[リスト3].[Column](X)"と記述して下さい。

これは、"リスト3の左から X番目の列にあるデータを表示する"との意味です。この構文は、覚えて置いて損はしませんよ。

皆さんが「リスト3」の「値集合ソース」クエリに"etc"を何番目に持ってくるかによって"X"は変わりますので、ご自分のシステムに合った番号を入れて下さい。あ、リスト3にある「etc」は、列幅を"0"と記述して下さいね。"0"でも列はリスト3に存在します。

これで完成です。

 

前回のコンボボックス利用フォームと多少違いますが、根本的には同じでしょう。検索やデータ表示をフォームで行うことは、これからもどんどん出てきますから、覚えてください。

また、「区分」や「ランク」で検索することもできますので、今までのお話してきた方法を基にチャレンジして下さいね。

 

模倣も大事

皆さんは初心者なんですから、遠慮なく完成品を参考にされてもいいんですよ。あれこれと乏しい(失礼!)知識を思い起こすよりは、どんどん参考ファイルを分析して、ご自分のものにして下さい。繰り返し言いますが、コンボボックスとリストボックスは大事ですから、集中して勉強して下さい。

 

次週は「レポートの作成と解説」を予定しています。お楽しみに………。では、今日はこのへんで…、またお会いしましょう。

 

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


検索・抽出フォームの作成と解説_2 : CDアルバム管理ソフト08


 

-Microsoft Access Club-