こんにちはmasalifeです。
今回はよく使うAccessのクエリ機能の抽出方法をまとめましたので、紹介しようと思います。
悩んだときの参考にしていただければと思います。
完全一致で抽出する~すべて一致したデータを抽出~
完全一致での抽出は抽出条件に指定したものとすべて一致したデータを抽出する方法です。
来店者が「masalife」のレコードを抽出してみます。
クエリをデザインビューで開きます。
来店者のフィールドの抽出条件を“masalife”とします。
なぜ “(ダブルクォーテーション)が付いているのかというと、
Accessでは文字列(文字)は”(ダブルクォーテーション)で囲うというルールがあるためです。
ただ、クエリの抽出条件ではフィールドのデータ型によって、自動で文字列なのか数値なのか判断してダブルクォーテーションを付けたり付けなかったりしてくれるので、そこまで神経質になる必要はありません。知識として覚えておいてください。
完全一致なので一文字でも違えば正しく抽出できませんが、
アルファベットの大文字小文字は同じ文字として認識されますので、
“Masalife”としても”MaSaLife”としても”masalife”のデータが抽出されます。
実行すると、
正しく抽出されていることが確認できます。
・一文字でも違うと抽出されないので正しく指定する
・文字列はダブルクォーテーションで囲う
・アルファベットの大文字小文字が異なっても抽出される
あいまい抽出
前方一致で抽出する~〇〇の文字で始まるデータを抽出~
前方一致での抽出は抽出条件に指定した文字から始まるデータを抽出する方法です。
住所が「愛知県」で始まるデータを抽出してみます。
クエリをデザインビューで開きます。
住所のフィールドの抽出条件に愛知県*と入力します。
そうすると、自動でLike “愛知県*”と変更されます。
これで愛知県で始まるデータが抽出できます。
実行すると、
住所が愛知県で始まるデータのみが抽出できていることが確認できます。
〇〇は任意の文字とする
後方一致で抽出する~〇〇の文字で終わるデータを抽出~
後方一致での抽出は抽出条件に指定した文字で終わるデータを抽出する方法です。
住所が「△▲」で終わるデータを抽出してみます。
クエリをデザインビューで開きます。
住所のフィールドの抽出条件に*△▲と入力します。
そうすると、自動でLike “*△▲”と変更されます。
これで△▲で終わるデータが抽出できます。
実行すると、
住所が△▲で終わるデータのみが抽出できていることが確認できます。
〇〇は任意の文字とする
〇〇の文字を含むデータを抽出
抽出条件に指定した文字を含むデータを抽出する方法です。
住所に「★★区」を含むデータを抽出してみます。
クエリをデザインビューで開きます。
住所のフィールドの抽出条件に*★★区*と入力します。
そうすると、自動でLike “*★★区*”と変更されます。
これで★★区を含むデータが抽出できます。
実行すると、
住所に★★区を含むデータのみが抽出できていることが確認できます。
〇〇は任意の文字とする
・〇〇を含むなので、〇〇~・~〇〇~・~〇〇のいずれも抽出される
文字数を指定して〇〇の文字で始まる・終わる・含むデータを抽出
文字数を指定して抽出条件に指定した文字で始まる・終わる・含むデータを抽出する方法です。
IDが10台のデータを抽出してみます。
前提として、IDフィールドのデータ型はテキスト型とします。
なぜデータ型を示したのかというとテキスト型と数値型では抽出方法が異なるからです。
数値型の抽出方法はPOINTに書いておきますので、参考にしてください。
クエリをデザインビューで開きます。
IDのフィールドの抽出条件に1?と入力します。
そうすると、自動でLike “*1?*”と変更されます。
これでIDが10台のデータが抽出できます。
実行すると、
IDが10台のデータのみが抽出できていることが確認できます。
・?は任意の1文字を意味する。
・100台を抽出したい場合は1??とする。
・任意の1文字の数字は♯を使う。
特殊な抽出
パラメータクエリで抽出
クエリの抽出条件に抽出したい値を設定すれば、常に最新の情報を抽出できます。
しかしながら、頻繁に抽出内容が変わる場合は毎回、設定し直さなければならなく少し面倒です。
そういった場合はパラメータクエリを作成しておくと便利です。
Access操作に不慣れなユーザーが使用するときも効果的ですので、ぜひ覚えてください。
抽出したい来店者はその都度変わるため、パラメータクエリを作成して抽出してみます。
クエリをデザインビューで開きます。
来店者のフィールドの抽出条件に[来店者を入力してください]と入力します。
これでパラメータクエリの作成が終了しました。
実行すると、
ダイアログボックスが出るので、抽出したい来店者を入力します。
入力したら【OK】ボタンをクリックします。
パラメータに入力した来店者が抽出できていることが確認できます。
・[ ]で囲まれたメッセージを入力するクエリをパラメータクエリという。
・メッセージはユーザーが分かりやすいものとする。
・間違えて入力しないように、例)〇〇 のように示すのがよい。
フォームのテキストボックスを使って抽出
フォームに入力された値を使って抽出することもできます。
特殊な使い方ですが、検索用のフォームを作るときにはよく使います。
txt来店者抽出のテキストボックスに入力された値で抽出できるようにします。
クエリをデザインビューで開きます。
来店者のフィールドの抽出条件に[Forms]![F_来店者抽出]![txt来店者抽出]と入力します。
・F_来店者抽出([F_来店者抽出])というフォーム([Forms])にあるtxt来店者抽出という名前([txt来店者抽出])のコントロールに入っている値という意味。
・オブジェクトの種類、オブジェクト名、コントロール名の間には!を必ず付ける。
・[ ]は付けなくても抽出できるが、見やすくするためにも付けたほうがいい。
これでF_来店者抽出のフォームを使って抽出できるようになりました。
試しに値を入れてみましょう。
masalifeと入力して、作成したクエリを実行します。
*フォームは立ち上げたままクエリを実行してください。
フォームで入力した値のデータが抽出されていることが確認できます。
本来は上記のフォームイメージだと正しく値を入力しているのに抽出できません。なぜかというと、入力した値が確定されていないからです。
入力するテキストボックスから他のコントロールにカーソルが移動すると、値が確定され抽出がされます。
試しにやってみたい方は他のコントロールを用意して、カーソルを移動させてからクエリを実行してみてください。
イメージと内容が異なってしまい申し訳ございません。
抽出で知っておきたい用語
Like演算子
Like演算子はあいまいな文字列を抽出するときに使用する演算子です。
クエリの抽出条件では自動で付けられることがあります。
ただし、VBAであいまいな文字列を抽出するコードを記述するときは自動で付かないので、覚えておく必要があります。
ワイルドカード
ワイルドカードとは代替文字のことです。
例えば、苗字が田中さんのデータを抽出したいとき、
Like “田中*”としますが、この*はワイルドカードの一種です。
ワイルドカードは種類があり、それぞれ意味が異なります。
今回紹介した2つのワイルドカードはよく使うので覚えてください。
文字を意味するダブルクォーテーション(” ”)
Accessでは文字はダブルクォーテーション(” “)またはシングルクォーテーション(’ ‘)で囲うというルールがあります。
“10”と10は異なるものですので注意が必要です。
前者は文字の10、後者は数値の10となります。
さいごに
ワイルドカードを使った抽出は一見難しそうに見えますが、考え方だけ整理すれば全然難しいものではありません。
ここは何でもいいからワイルドカードを使うんだな
と意識しながら覚えていってください。
忘れたときには、この記事に戻ってきていただければ幸いです。
最後まで読んでいただきありがとうございました。