■アクセスのフォームにて、複数の条件を入力し、合致するリストをエクセルで出力する
データベースを構築しようとしています。
⇒この複数の条件を入力する件に関し質問です。
■目的は、顧客からのアンケート回答結果をDBから取出し、エクセルにて解析を行う事です。
情報量が膨大であるため、セグメントした形で出力し効率を上げたいと考えています。
○テーブルのフィールド構造:
支店(テキスト型)、顧客No(数値型)、顧客名(テキスト型)、質問1(数値型)、質問2、・・・
○フォーム「データ抽出」の構造:
[支店名1][支店名2]
[顧客No1][顧客No2]
[顧客名1][顧客名2]
【出力ボタン】
※上記テキストボックスいずれかに入力された条件に合致するデータが
【出力ボタン】を押すとエクセルに出力されるという構造です。
※ボタンのイベントに「抽出マクロ」を設定。
○抽出クエリ:
支店
[Forms]![データ抽出]![支店名1]
Is Null
[Forms]![データ抽出]![支店名2]
Is Null
顧客No
[Forms]![データ抽出]![顧客No1]
Is Null
[Forms]![データ抽出]![顧客No2]
Is Null
企業名
like "*" &[Forms]![データ抽出]![顧客名1]& "*"
Is Null
like "*" &[Forms]![データ抽出]![顧客名2]& "*"
Is Null
○マクロ(抽出マクロ):
クエリを開く (抽出クエリ)
コマンドの実行(エクセルに出力)
閉じる (抽出クエリ)
と設定しました。そこで実行確認すると・・・・
(例)
(1)支店名1だけに入力して、他は空欄で出力ボタンを押下。
⇒条件セグメントされず、全てのデータがエクセル出力されてしまう。
(2)全ての項目に入力して出力ボタンを押下
⇒条件セグメントされたデータがエクセル出力される。
という現象が起こりました。
例示(2)は良いとして、(1)の様な空欄がある状態でも、条件にマッチした出力をしたいのですが上手くいいかず困っています。
尚、クエリの抽出条件を支店フィールドだけにした所・・
支店
[Forms]![データ抽出]![支店名1]
Is Null
[Forms]![データ抽出]![支店名2]
Is Nul
支店名1に入力して支店名2は空欄であっても条件にマッチした出力結果が得られました。
長文恐縮でございますが、どなたか解決法をご教授いただきたく存じます。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
【要旨】
曖昧検索を行っている『企業名』の抽出条件を、以下のような式に
変更します。
<現状>
Like "*" & [Forms]![データ抽出]![顧客名1] & "*"
<修正>
Like IIF(Nz([Forms]![データ抽出]![顧客名1], "")="", "", "*" & [Forms]![データ抽出]![顧客名1] & "*")
【詳細】
先程の回答の付け間違い、大変失礼致しました(汗)
> (例)
> (1)支店名1だけに入力して、他は空欄で出力ボタンを押下。
> ⇒条件セグメントされず、全てのデータがエクセル出力されてしまう。
提示された例ですと、『企業名』が空白だった場合、実際の抽出条件は
Like "**"
を指定したのと同じになってしまいます。
そのため、『支店』についての条件指定に関係なく、全てのレコードが
抽出されたものと思います。
(「Is Null」でNull(空白)のものが、「Like "**"」でそれ以外の全てが
それぞれ抽出された、と)
※提示された状況から、『企業名』『顧客No』『支店』での検索条件の
指定は、And検索ではなくOr検索になっているものと推測しました。
(And検索は全条件を満たすものを、Or検索はいずれかの条件を
満たすものを、それぞれ抽出(念のため))
つまり、全件が抽出されるのは『企業名』での曖昧検索の部分が原因
ですので、ここを改修する必要があります。
その実例が、冒頭に提示した「<修正>」の式になります。
[式の説明]
上記の通り、『顧客名1』が空白だった場合に、抽出条件が実質的に
「Like "**"」となるのが問題なので、まず、『顧客名1』が空白かどうかを
Nz関数で判定します。
判定の結果、空白だった場合は、IIF関数により、実際の抽出条件を
「Like ""」に置き換えてやります。
空白以外だった場合は、従来通り「Like "*" & [~] & "*"」とします。
『企業名』フィールド以外にも曖昧検索を指定しているフィールドがある
場合は、同様に改修を行ってください。
【蛇足・1】
提示されている
> 支店
> [Forms]![データ抽出]![支店名1]
> Is Null
> [Forms]![データ抽出]![支店名2]
> Is Nul
は、クエリのデザインビューでの抽出条件のことではないかと思いますが、
もしもそのクエリのデザインビューで同じ行(両隣など)に条件が指定されて
いないようでしたら、「Is Null」は1行だけでOkです。
【蛇足・2】
Excelへの出力方法には、マクロの『アクション』として「コマンドの実行」
の他に「出力」や「ワークシート変換」などもあります。
マクロのデザインビューの下方で指定する引数の数が多くなりますが、
対象クエリを開かずに出力したり、出力先を指定したりすることも可能
になります。
【蛇足・3】
当該クエリが、もしも「全ての検索条件式を行違いで併記した選択クエリ」
だとすると、結果表示までにかなり時間が掛かっているのではないでしょうか。
もしもその通りで、時間と気持ちに余裕があるようでしたら、「ユニオンクエリ」
について調べてみることをお勧めします。
(或いは、全てがOr検索の場合は、作業用テーブルを別途作成して、
各フィールドでの抽出を追加クエリで行って同テーブルに追加、という
方法も考えられます:
但しこちらはファイルの(一時的な)肥大化を助長するため、終了時の
最適化はほぼ必須となります)
返信遅くなり大変申し訳ございません。
色々試しましたがどうもうまくいきません。
そこで顧客Noのみで運用を回すことにしてみようかと思います。
ただ蛇足1-3は参考になりました。若干無駄な入力を行っていたようでした・・。
良い結果とならず大変恐縮ですが、ご指導ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access テーブルを分割してエク...
-
ACCESS クエリの抽出条件に他の...
-
アクセス2000で、DBの0と空白以...
-
Accessのクエリで、CStr関数を...
-
ACCESS 「パラメータの入力」...
-
PCゲームから音声ファイルを抽...
-
accessの日付フィールドから前...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESSの時間帯の抽出について
-
アクセスでの抽出方法(日付+時...
-
Accessクエリーでチェックボッ...
-
ACCESSのクエリで集計
-
access 無作為抽出をしたい
-
アクセス2010 最新データを抽...
-
オプションボタンを使って抽出
-
ここの赤マルの部分なんていう...
-
access クエリの抽出条件を入れ...
-
アクセス・クエリの抽出条件(...
-
ACCESS抽出条件でデータ型が一...
-
アクセスの抽出条件設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 「パラメータの入力」...
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
PCゲームから音声ファイルを抽...
-
ACCESSの時間帯の抽出について
-
アクセス・クエリの抽出条件(...
-
エクセルのマクロで検索・抽出...
-
Access テーブルを分割してエク...
-
アクセスでの抽出方法(日付+時...
-
ACCESS クエリの抽出条件を動的...
-
ACCESS クエリで”1”でないもの...
-
クエリの進行状況を知りたい。
-
最大値以外の抽出方法
-
access クエリの抽出条件を入れ...
-
アクセス2000で、DBの0と空白以...
-
Accessクエリーでチェックボッ...
-
元データから連続5日以上だった...
-
access 無作為抽出をしたい
-
accessの日付フィールドから前...
-
Accessで任意のテーブルのフィ...
おすすめ情報