<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--リストボックスで複数選択
  1 → 2 → 3



次です。
こんな感じのクエリ、作ってみてください。とりあえず。

In(  )というのは、カッコの中の値のどれかひとつ該当するなら抽出しろ、という意味の書き方で、ORと同じです。だから
こういうことです。↓

でも、今回は、ちょっとややこしいことやるんで、Inを使っておいた方がわかりやすいかな・・・と思います。In、使ってみてください。

いちおう、データシートビューに切り替えて、ちゃんと抽出できてることを確認してくださいね。
で、クエリができたら、メニューバー「表示」→「SQLビュー」を選びます。

なんか妙な表示になったのでは・・・。

これがいわゆるSQL文というものです。
クエリというのはほんとはSQLというデータベース言語で書かれてるんです。でも、なかなかこの言語を習得するのは難しい・・・そこでMS-Accessでは、SQL自体はあまりわからなくても、クエリのデザインビューをうまく使いこなせばSQLを作れるようになってるんですね。

SQLというのはデータベース言語ですけど正体は「テキスト文」です。これを、VBAで作ったプロシージャとかマクロとかから発行して使います。
SQLに関しては、ほんとにメジャーなデータベース言語ですんで、入門書籍もいっぱい出てます。興味ある方は探してみてください。
また、なんか適当なクエリ作って、こうやってSQL表示にしてみて、どう書くのかな・・・と、比較してみるのも、SQLの学習になると思いますよ。


本題に戻りまして・・・。んじゃ、このSQL文、メモ帳にでもコピーしておきましょう。

で、SQLビューのまま、クエリは保存しないで閉じちゃっていいですよ。このSQL文が見たかっただけなんで、クエリは保存しなくてもいいです(保存してもいいけど)。

SQLの細かいお話はいたしませんけれど・・・3つキーワードがあると思ってください。

Select
from
Where

この3つのワードを意識しながら、↑改行されてるとこをつなげて、改行のないひとつの文章にしましょう。

半角スペースがところどころ空きますので、その辺注意してくださいね。
だいたい察しのいい方は見当がついてきたのではないかと思うんですが・・・。そう。このSQLを基にして「こういうクエリを新しく作ってくれ」という命令をVBAで書くんです。そのとき、Inのカッコの中身は、さっきのFor Each Nextでゲットした値を活用・・・。

だから〜最初から「めんどくさいです」って言ったじゃないですかー!!!
作成時に「抽出条件」を確定できないようなクエリって、難しいんですよう。
もうちょっとですから、がんばりましょうよ。ね。

よく見ると、さつまいもとかやまいもとかっていう素材名は、ダブルコーテーションで囲まれて、カンマで区切られてますよね。
記号は全部半角ですよ。
細かいことなんですけど、VBAの中ではダブルコーテーションは別のことに使うんです。なので、ここでのダブルコーテーションを全部シングルコーテーションに書き換えておいてください。素材名を囲む記号は、シングルコーテーションにします。



4)参照設定(確認)

んじゃ、VBAのコードの作業に戻りましょう。
コマンドボタンをクリックしたときのイベントの続きです。

ここでひとつ、みなさんのPCの環境の確認なんですが・・・。これから、「このデータベースの中にクエリを作る」という動作を作ります。データの入ってるところ、またはデータのあるところを扱うプログラムになりますので、その下準備です。
VBAのエディタのウィンドウの、メニューバーの「ツール」「参照設定」を選んで、一覧の中に、Microsoft DAO3.6 というのにチェックがついてるかどうか、確認してください。なかったら、一覧の中から探して、チェックをつけてください。

でもって「優先順位」というボタンで、がんがん上に上げます。今日のところは、めいっぱい上げてください。3番目くらいにくると思うんですけど・・・。


事前準備はこれで完了!いよいよ本番です。
で、下のように書き足してください。


QQQというのが、新しくこれから作るクエリの定義を入れておく変数です。
クエリの中身じゃなくて、クエリのデザインの方ですね。

こんな感じで宣言しておいて、後で、「うそクエリって名前で、sqlっていう変数の中身にのっとって、dbの中にクエリ作りますね」っていう意味になりますね。
dbってのは、Currentdb・・・つまり、今作って開いてるこのデータベース、ってことです。
こんなことまで書かなくちゃいけないなんて、VBAってめんどうくさいですよねぇ。

で、sqlっていう変数の中身が問題になるわけなんですが・・・。

とりあえず、さっきメモ帳にコピーした1行を、ダブルコーテーションの中に持ってきてみてください。

うおーながい〜!!!
横にながーくなってるはずですので、スクロールバーを使って様子を確認してくださいね。
赤い字になっちゃったら、どっか記号とかがおかしいのです。シングルコーテーションに書き換えたところなどを中心に確認してくださいね。

これでオッケイ。
では、フォームの方に戻って・・・。コマンドボタン、クリックして実行してみましょう。

多分、何も起こらないと思うんですけど・・・。「うそクエリ」っていう名前のクエリ、できてません?
んでもって、そのクエリの中身って、さつまいもとやまいもとえんどうまめになってます??開いてみてください。

うほほ。
クエリのデザインビューを使わないで、クエリを作るプログラムを実行したってことになるんですよ。