Accessのクエリでの抽出条件

このQ&Aのポイント
  • Accessのクエリでの抽出条件について教えてください。
  • 1対多ノリレーションを利用したクエリで、最後の訪問日から30日以上経過した会社を抽出する方法を知りたいです。
  • 訪問日のデータビューにおいて、最後の日のみ一回表示する方法について教えてください。
回答を見る
  • ベストアンサー

Accessのクエリでの抽出条件

OS:WindowsXP ACCESS2003 すみません、営業記録を作成していて行き詰っています。どちら様かお教え頂けませんでしょうか? テーブル2つ、[会社]と「営業記録]で[会社_会社ID]と[営業記録_会社ID]を1対多ノリレーションで結んでいます。 これらを元にしたクエリでフィールドに[訪問日]があり、この[訪問日]の最後の訪問日から30日以上経過した会社名のみ抽出して、フォームにデータビューで表示し顧客管理をしたいと希望しています。 クエリの抽出条件に「今日から30日前に一度も訪問記録の無い」さらに「最終訪問日の値を取得する」条件とはどう書けば良いでしょうか? 初心者ですのでブローシャーは書けないんです。すみません。 訪問日の記録は何回かありますのでフォームのデータビューにした場合、色々試してやった結果、現況では、一つの会社に訪問した数回の訪問日が複数表示されています。これを最後の日のみ一回表示したいのです。 ちょっと説明不足かもしれませんが、ご理解のうえ、どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pati5090
  • ベストアンサー率50% (1/2)
回答No.1

正直、クエリデザイナだけで書ききるのは難しいです。 SQLビューとしては、下記のようになります。 SELECT 営業記録.営業記録_会社ID, Max(営業記録.訪問日) AS 最終訪問日 FROM 会社 INNER JOIN 営業記録 ON 会社.会社_会社ID = 営業記録.会社_会社ID GROUP BY 営業記録.営業記録_会社ID HAVING (((Max(営業記録.訪問日))<=Format(DateAdd("d",-30,Date),"yyyymmdd"))); (1)SELECTのMAXは指定した項目の最大値を取得します。 (2)GROUP BYは、最大値を取得するときにどの項目でグルーピングするか指定します。  上記の場合は、営業記録_会社IDでまとめた中で最大の日付を取得しています。  会社名等を出したい場合は、SELECTとGROUP BYの両方に項目を加えます。 (3)DateAddは日付の計算を行います。 (4)Dateは今日の日付が入っている変数です。 (5)Formatは文字列の書式設定です(この場合は、20130308のような形になります)  この部分は、テーブルに入っている訪問日の書式に合わせて変更する必要があります。 これで一回試してみてもらえませんか? この機会にSQLを勉強すると、いろんなことができるようになりますよ!

southbreeze
質問者

お礼

pati5090様 すみません、せっかくご回答をくださっていたのに見るのが遅くなってしまいました。 ん~...実は、自分で色々触っているうちに、クエリで集計クエリ(あんまり意味解っていない)の抽出条件で「最大」とか「最後」とかがあって、フィールドに条件付書式を設定して何とか使えるようになっています。「んなんだったら、質問するなよ!」みたいな感じですが、自分でもやった事が良く解らないまま、一応意とするところは完成しました。 しかし、ご回答頂きました件につきましては、今後の参考とさせて頂きたいと思います。 本当にありがとうございました。SQLも勉強したいと思ってはいるのですが...? うらやましいです。 その後も様々な問題にぶつかっていますが、何とか人様のお知恵もお借りしながらやっています。 本当にありがとうございました。

関連するQ&A

  • ACCESS クエリの抽出条件

    毎度お世話になります。 クエリをレコードソースとするフォームから、コマンドボタンでアクションクエリを実行するときの抽出条件の書き方を教えて頂けないでしょうか? 二つのテーブル(別のACCESSファイルからリンク)を基にパラメータクエリを作っています。 そのクエリを基にフォームを作っています。 さらに、そのフォームに追加クエリを実行するボタンを置いています。 フォームに表示してあるレコードだけ(パラメータで抽出されたレコードだけ)、他のテーブルに追加しようと思っているのですが、実行ボタンを押すともう一度パラメータが出てきてしまいます。 多分テキストボックスの値を読み取る際にレコードソースがテーブルでないのが問題じゃないかと思うのですが。。。 テーブル:Container / Items クエリ:From_Con(パラメータは[Container]フィールド) フォーム:From_Con(テキストボックス名は[txtContainer]) 追加クエリ:From_Con_App(抽出条件は[Forms]![From_Con]![txtContainer]としてみたがうまく動きません。) デザインビューの抽出条件を使う方法? SQLを使う方法? QueryDefを使う方法? いろいろありそうですが、ネットで検索してもヒットしません。 分かりにくい説明で申し訳ありませんがご教授願います。

  • Accessのクエリ 抽出条件について

    Accessのクエリ 抽出条件について Accessクエリのフィールドに納品日、検収日、納期検収変更日があり、これらで抽出条件を設定したいのですが、どうしていいか判りません。 抽出条件等の例を画像添付しますので、どうように設定すれば良いか? 具体的に教えて頂けると助かります。 フォームにも同じ項目を作成しています。

  • Access クエリの抽出条件について

    「登録日フォーム」というフォームに 「DTPicker0」というカレンダーのコントロールを設定しました。 これをクエリの抽出条件にしたいのですが、うまくいきません。 現在は [Forms]![登録日フォーム]![DTPicker0] としています。

  • クエリーの抽出条件について

    アクセス97を使っているんですが、クエリーの抽出条件についてどうしてもわからないことがあるので出来ましたらお教え願いたいんですが。 フォーム上でトグル(スイッチ)がオンの場合だけクエリーの抽出条件で検索をかけたいと思っています。 フォームでトグル(スイッチ)がオフの場合は抽出条件なしで全データを抽出したいんです。 複数のクエリーを使えば何とかなるとは思いますがなんか見栄えによくないような気もしますし、たくさんクエリーが必要になってしまいます(スイッチをたくさん使う予定なので)。 もし、抽出条件をきる方法をご存知の方がおられましたら、お教えください。

  • アクセスでクエリーによる抽出方法

    アクセスの超初心者です。 クエリーのデータをフォームのコンボボックス等のデータを選ぶことにより抽出したいのです。クエリーの抽出条件にフォームのコンボボックスを割り当てて抽出することはできるのですが、例えばクエリーデータは下記のようになっています。  A  B  石川  100 東京  200   沖縄  150 フォームのコンボボックスで石川を選べば  "石川" "100"と表示できますが、コンボボックスに”すべて”という項目をつけてその”すべて”をクリックするとクエリーが全表示になるようにしたいのです。(そのクエリーにはすべてという項目はない) 長くなりましたがおわかりいただけたでしょうか。よろしくお願いします。 また、クエリーを使わず別の抽出方法がありましたら教えてください。というのもいろいろな抽出条件をするのにそのつどクエリーを作らなければならないからです。よろしくお願いします。

  • [Access]クエリの抽出条件について

    アクセス初心者です。よろしくお願いします。 クエリの抽出条件に別テーブルのフィールドをあいまい検索で入れたいのですが方法がわかりません。 データシートビューには検索したいテーブル(tbl_1)と 検索する文字列が入ったテーブル(tbl_2)の2つを表示させています。 デザイングリッドは検索したいフィールドを表示し、 抽出条件にLike "*[tbl_2]![フィールド名]*"と入れましたが該当するものがあっても表示されないのです。 どうしたらよいでしょうか。ご伝授ください。

  • ACCESS のフォームの内容をクエリーの抽出条件にするには?

    Windows2000,Access2000です。 Accessのクエリーでデータを選択して表示する作業をしています。 現在はクエリーを自分で修正して実行しています。 でもそれではみんなで使うには使いづらいので、 フォームを作成しそのフォーム上の入力項目に入力された データをクエリーの抽出条件に指定する様にしようという事になりました。 フォーム上の入力フィールドの内容をクエリーの抽出条件に設定する方法はすぐわかりました。 でも「like」を指定する方法がわかりません。 つまりフォーム上の入力データを“xxx”とした時、クエリーの抽出条件を 「like "*xxx*"」としてクエリーを実行したいのです。 つたない文章でわかりにくいかと思いますが、ご存じの方おりましたら、 よろしくご教示ください。

  • access2000 クエリーについて

    access2000を使っています。 クエリーの抽出条件をいちいちデザインビューで入れるのが面倒です。 クエリーを開く時に抽出条件を聞いてくれるようにしたり、フォームのリストボックスをクリックするとその条件のクエリーが出てくるように出来ないでしょうか? 例を挙げておきますと、テーブル(生徒テーブル:(1)生徒ID(2)生徒名(3)Tel(4)クラス クラステーブル:(1)クラスID(2)クラス名(3)担当者)で生徒テーブルの(4)クラスとクラステーブルがリンクしてあります。 それで、あるクラスの生徒を出したいのです。いかがでしょう。

  • Access2000のクエリー抽出条件

    Access2000で、「メインフォーム」の中に「サブフォーム」を作り、「メインフォーム」上の複数のテキストボックス(非連結)の条件により「サブフォーム」内のデータシート形式の「一覧表」にフィルタをかけて表示させたい。 「サブフォーム」のコントロールソースである「選択クエリー」の抽出条件に「メインフォーム」上のテキストボックスの内容を記入してできるかと試みていますが・・・。意図としては条件が複数になると、その分だけ絞り込んだ表示結果を得たいのですが、うまくいきません。 どなたか、教えていただけないでしょうか?

  • ACCESSクエリ抽出条件について

    フォーム画面のリストボックスで複数選択が出来るよう設定し、その結果をクエリの抽出条件で forms![フォーム名].[リストボックス名] としたのですが全く反映されません。 複数選択が出来ないようにしたら問題なく表示されるのですが、上記の記述以外に入力しないといけないのでしょうか?