![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2000超入門部屋--絞込みの仕組み(初級) |
[まずは基本となるフォーム作り] [クエリーを使う場合1] [2] [フィルタを活用する場合] [コンボボックスに変更] |
フォームでデータを検索したり絞り込んだりする仕組み、作ってみましょう。
いろんなやり方がありますけど、基本的なとこは共通してます。その辺押さえていただければいろいろ応用できると思いますよ。
ここではまず、「クエリを使う方法」と「フィルタを使う方法」をご紹介します。
まあ、どっちも結果はおんなじようなもんですので、お好みで、状況に合わせて使い分けていってみてください。
まずは、両方に共通するお話を・・・。
こんな↓なテーブルを用意してください。
あ、別に名前とか同じじゃなくてもいいですよ。わかりやすい名前を付けていただければよいですよ。なんか、こんな感じのテーブルがあればオッケーです。わたしは「テストのテーブル」という名前にしました。
で、このテーブルの中に入力されたデータの中から、「グループ」ごとにデータを絞り込むような仕組みを考えてみようと思います。
テーブルの中に、なんか適当なデータを入力しておいてください。
2〜3件でもかまいませんけど、あんまり手ごたえがないのも張り合いがないんで・・・なんでもいいですから、できれば10件くらいは。
で、[グループ]で絞込みをしようと思いますんで、3つくらいのグループに分けてみてください。野球選手とプロ野球チーム名とか、サッカー選手とサッカーのチーム名とか、落語家と屋号とか、魚類と爬虫類と哺乳類で分類してもいいですね。
入力順は適当でよいですよ。
思いつかない・・・という方は、上のテーブル丸写しして使ってみてください。そこそこ手ごたえのある動きが見られると思います。「金額」には意味はないので、ファンの方、あまり気になさらないで。わたしはいのっちと中居くんのファンです。でも結局みんな好きかも。
え?何のことかわからない?わ、わからない方はわからなくてもよいです。
とりあえずこのテーブルを基に、表形式のフォームを作りましょう。オートフォーム(表形式)という方法でオッケーですので、フォームの新規作成をしてください。
適当な形のフォーム、できました?
テキストボックスの大きさや配置、各種プロパティの設定等はお任せしますんで、あとで適当に調節してください。ちょっとこのままじゃ間延びしてますもんね。
でも、いちおうここでは、とりあえず先に必要なことだけかいつまんでお話しちゃいますね。
左の図には載せてないですけど・・・みなさんの画面の中には、左上の方に、青い三角定規ツールボタン(デザインビューへの切り替え)がありますよね。フォームのデザインを調節するためのモードに切り替えるボタンでしたよね。
こいつをクリックして、デザインビューに切り替えましょう。
ちょっと操作しにくいですけど・・・・フォームヘッダーのところ、ちょっとだけ広げて、「番号」とか「名前」とかのラベルを少しずつ下に下げてください。ヘッダーのところ、ちょっとだけ隙間をあけます。
で、左の図にように、空っぽの(非連結の)テキストボックスをひとつ作ります。テキストボックスを作るためには、ツールボックスの中の「ab」ってボタンをクリックしてへっこましてから、フォーム上の適当なトコをクリックします。
こいつは、絞り込むためのグループ名を入力するのに使いたいと思います。大きさや位置は調節してください。
んじゃ、このフォーム、名前を付けて保存しましょう。
なんでもいいですよ。でも、何だかわからなくなっちゃうってのはナシですよ。
わたしは「見やすいフォーム」という名前にしました。へへへ。わかりにくい名前だろう(自慢)
フォームを閉じちゃう前に・・・ついでにちらっと確認をしていただきたいんですが、さっき作ったテキストボックス、名前がついてますよね。
Accessでは、この「名前」というのがとっても重要なカギを握ります。フォームやクエリー、テーブルにも名前がつきますし、フィールド名とか、フォームの中のテキストボックスやコマンドボタンにも名前がついていて、この名前で呼び合い、処理を作っていきます。
いちおう、わざわざ確認しなくてもわかりやすいようになってはいますけど、必ず「その他のプロパティ」の「名前」欄を見る癖をつけてください。
このテキストボックス、私の場合は「テキスト8」になってました。みなさんのはどうですか?あ、テキスト8じゃないからって別にがっかりすることはないですよ。肝心なのは、皆さんのテキストボックスの名前ですカラね。
テキスト8のままでもよいのです。皆さんにとってわかりやすければ・・・。この場合、このテキストボックスのことを、
Forms![見やすいフォーム]![テキスト8]
と呼びます。え?なんでかって?知りませんようそんなこと・・・とにかく昔からこう呼ぶんですっ。
どこで呼ぶかというと、たとえばクエリーとか、たとえばVBAコードとか・・・このフォームの外から、このテキストボックスの中の値をちらっと見たいなぁ・・・と思ったとき、こんな書き方をするのです。これは後で出てきますので挑戦してみましょう。
半角のカギカッコは、別になくても
Forms!見やすいフォーム!テキスト8
でもいいんですけど、半角のカギカッコで囲むのは「フィールド名」とか「フォーム名」とか、いわゆる「データベース内に実在するものの名前」のことなんです。""ダブルコーテーションで囲むのは、名前とか値そのもの・・・。普段はこういう記号で囲まなくても、Accessがうまいことやってくれるんですけど、だったらちゃんと書き込む癖つけといたほうが、いいと思いません?めんどう?そりゃそうですけど・・・でもね、できれば、こういう癖、つけといたほうがお得ですよ。
このフォームの中で、このテキストボックスの中身を見たいなぁと思ったときは(そういう時もあるんですよ)Forms![見やすいフォーム]![テキスト8]と書いても正解ですけれど、同じフォーム内のテキストボックスなので、もうちょっと省略して書くことができます。
Me![テキスト8]
ちっとは時間短縮になりますかね(笑)・・・・同じものをさしてるんですけれどね。
なんか、Me!って書けるときはMe!って書いたほうが、何かとよいらしいですよ。Accessにとっては・・・。
でも、テキスト8じゃ、ちょっとわかりにくいなぁ・・・という場合は、あらかじめ名前を変えておきましょう。
じゃあ、「へのへのもへじ」に変えたとします。え?そんなんじゃいやだ?いいじゃないですかっわかりやすくて。
わたしは断固として「へのへのもへじ」にします。
いちおう、フィールド名とかオブジェクト名と同じような扱いをしますから、半角のピリオドとかアスタリスクマークとかスペースをあけるとか、そういうのは避けたほうがいいですね。あと、?とか¥も、ちゃんと識別してくれなくて、やたらエラーになっちゃったりすることもアリ。まあ、あんまりへんちくりんな名前は付けないほうが無難ですね。やっぱり「へのへのもへじ」がいいでしょう。
テキストボックスの名前などは、一番最初、このタイミングで変更するようにしてください。
ある程度処理を作っちゃってからでも変えることはできますけど、いろいろごちゃごちゃになります。もちろん、いろいろ便利な機能が用意されてはいますが、皆さんの意識の中で、このテキストボックスの名前が定着していないのは、いろんな意味でマイナスです。「このフォームの中で、絞込みの条件に使うテキストボックスの名前はへのへのもへじ」と、皆さん自身が意識しながら愛着を持って作業なさるのがベストだと思うんです。技術的に変更することが可能か否か、という意味ではなくて・・・。
さて、テキストボックスの名前が「へのへのもへじ」になりました。じゃあ、このテキストボックスの呼び方は、どうなりますでしょう。
Forms![見やすいフォーム]![へのへのもへじ]
ですね。また、フォーム内では
Me![へのへのもへじ]
です。え?へのへのもへじじゃ恥ずかしい?どうしてですか!へのへのもへじに失礼じゃないですか!
えーいいっぱい書いてやる。へのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじへのへのもへじ・・・・。
・・・すいません。取り乱しました。
わたしのフォームはこんな感じになりました。
ただオートフォーム機能で作っただけだと、フォームの「標題」がテーブル名そのままになっちゃうんで左上に「テストのテーブル」って表示されてますけど、フォーム名は「見やすいフォーム」です。
これはこのフォームの書式プロパティの中で指定できますんで、もし、どうしても気になる・・・わかんなくなりそう・・・という方は、標題もフォーム名と同じになるように入力したほうがいいかもしれないですね。
さて、これで準備が整いました。フォームは改めて上書き保存しておいてください。色とか文字の大きさとか各種書式プロパティとかは、お好みで変えてみてくださいね。
とりあえずわたしはこのままこのフォームを使って、「クエリーで絞り込む方法」と「フィルタを使う方法」のふたつ、お話いたします。
まずはどちらか一方、挑戦してみてください。どっちもそんなに難しくはないと思いますけど、いろんな機能や設定が重なり合ってひとつの仕組みを作りますから、まずは段取りというか、作業の流れをうまいことつかんじゃってくださいね。
![]() |
![]() |