• ベストアンサー

Access抽出クエリの基本的なこと

お世話になります。 初心者で苦労しながらもAccess2000でデータベースを作成しています。 非常に基本的な質問だと思うのですが、どなたかご教授願います。 日付を含むフィールドがあるテーブルがあり、クエリにてその日付から 年と月を拾っています。 ID   入力日   年:Year([入力日])   月:Month([入力日]) 1   2001/07/06    2001          6 2   2002/06/07    2002          6 3   2002/07/19    2002          7 別に作成したフォームに年と月を絞り込むためのコンボボックスをそれぞれ配置し、 入力された値によって上記クエリの抽出条件に反映させたいのですが、コンボに何も 入力されていないときは全てのデータを表示したいんです。 「コンボ月=2002」&「コンボ月=6」でID=2のデータのみを、 「コンボ月=(Null)」&「コンボ月=6」でID=1と2のデータを表示したいんです。 (判りにくくてすみません。。) このような場合、抽出条件に記述する式はどのように設定したら良いのでしょうか? IIfでIsNullの条件式を組んだのですが、Nullの時に返す値が判りません。 どうかよろしくお願いします。

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

  • ベストアンサー
  • harumimi
  • ベストアンサー率46% (51/109)
回答No.2

これではどうでしょうか? クエリーの列を追加で フィールド: IIf(IsNull([FORMS]![フォーム].[FORM]![コンボ年]),True,[テーブル].[年]=[FORMS]![フォーム].[FORM]![コンボ年]) 抽出条件:True 月の条件も同様に列を追加してください。

hitoshipon
質問者

お礼

あう!自己レスです。 理解できました! わざわざ 年:Year([入力日]) なんかのフィールドを作った上で抽出するなど回りくどいコトする必要ないんですね! (まあ、このフィールドはこれで必要だったりしますが) フィールド: IIf(IsNull([Forms]![フォーム]![年コンボ]),True,Year([入力日])=[Forms]![フォーム]![年コンボ]) 抽出条件:True これでいいわけですね。ありがとうございます! 理解が悪くてすみません。 もし参考までに他の方法をご存じでしたら教えてください。 ありがとうございました。

hitoshipon
質問者

補足

回答ありがとうございます。 ちょっとおバカさんで充分理解しきれなかったのですが。。。 コンボ年がNullならTrueを返し、Not Nullならコンボ年の値を返すフィールドを追加するということでしょうか?(あってます?^^;;)そして抽出条件はTrueとすると。 これで設定したらコンボの値に関わらず全て表示されてしまったのですが・・・? [テーブル].[年]=[FORMS]![フォーム].[FORM]![コンボ年] のあたりがよくわからないのですがよろしければ解説願えますでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • peso
  • ベストアンサー率41% (40/97)
回答No.1

クエリで無理やり作ろうと思うと =[年コンボ] Or <IIf(IsNull([年コンボ]),10000,0) みたいな感じになると思います。。。(本当に無理やり・・・)

hitoshipon
質問者

お礼

回答ありがとうございます。 こんな方法もあるんですね! これでも一応充分なんですが、もしクエリの抽出条件の欄を使わないでスマートに作るとなると、どうするのでしょうか?後学のために教えていただけませんでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESSのクエリの抽出

    ACCESS2003を使っています。フォームのコンボボックスに入っているデータを見てクエリで抽出したいと思っています。 フォームのコンボボックスにデータが入っているときは、そのデータで抽出を行い、nullのときは抽出をやめてすべてのデータを表示させたいです。 抽出項目には、null値はありません。 クエリの抽出欄に下記の式を入れましたがうまくいきません。 IIf(IsNull([Forms]![フォーム名]![コンボボックス名])=true , Is Not Null , [Forms]![フォーム名]![コンボボックス名]) コンボボックスにデータが入っている場合は、抽出はうまくいくのですが、nullのときは、何も表示されません。 どこか式が違っているのでしょうか? よろしくお願いします。

  • Access フォームコンボボックス空白をクエリで抽出したい

    現在access2000を使って、 フォーム1内にコンボボックスを作って コンボボックス内に1,2,3 と項目を入れています。 一方、クエリを使って、上記フォーム内のコンボボックスをつなげて1,2,3をそれぞれ抽出することはできるのですが、 1から3まで全てをiif関数などで 抽出したいと考えてします。 僕が考えた関数は iif(isnull([フォーム1][コンボ1]),is not null ,[フォーム1][コンボ1]) とクエリ抽出条件内に入力すると、結果は、 1、2、3をそれぞれフォームコンボボックスで選択すれば、クエリに反映されるのですが、コンボボックス内を「空白」の状態にすると、1,2,3すべてがクエリで抽出されるのではなく、何も抽出されないという結果になってしまいます。 どうすれば、クエリで1から3すべてを抽出することができるのでしょうか?多分、iif関数内の「空白」は空白として処理されないような気がします。 よろしくお願いします。

  • Accessでの抽出について

    Accessでのクエリーでの抽出の方法を教えてください。 たとえば「12345678」といったIDをもたせた人のデータが日付ごとにいくつかレコードがある場合に、クエリーのID欄の抽出条件欄には、「12345678」と入力すれば、その人のデータのみが表示されると思います。 そこで、 (1)その中の日付から、最新のものから3つを抽出したい場合。 (2)その中の日付から、2番目に新しいものを抽出したい場合。 において、クエリーの抽出条件になんて書いたらよいのでしょうか? できましたら、(1)(2)それぞれお答えいただければ幸いです。 どうぞよろしくお願いいたします。

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

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

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

    「作表条件」というフォームにテキストボックスとして「日付1」、「日付2」を設置しています。 元のテーブルには「日付」という項目があり、「日付1」から「日付2」までのデータを抽出するため、 クエリの条件式に Between Nz([Forms]![作表条件]![日付1],#1800/01/01#) And Nz([Forms]![作表条件]![日付2],#9999/12/31#) と記述しています。 ただ、元のテーブルの日付がNULL値の場合があり、その場合「日付1」および「日付2」が空欄だとNULL値のレコードが抽出されません。 「日付」がNULLの場合でも抽出できるようにするには、どのようにすればよいでしょうか? どなたか教えてください。

  • ACCESS2000 クエリの抽出条件

    フィールドに無作為に年月日が入力されているとします。 クエリの抽出条件に>2008/1/1と入力すると「2008年1月1日よりも新しい日付のレコード」を選択できます。 新しい日付の上位25までを選択するためには、抽出条件になんと入力したらいいのでしょうか。あまりにも基本的な質問かもしれませんが、お時間の許す方にお願いします。

  • アクセスのクエリで困ってます。

    契約日から6ヶ月めの日付をだして、さらにその日を検索したいんですが・・・ テーブルに契約日のデータがあります。 クエリで、    フィールドに6ヶ月: DateSerial(Year([竣工金入金日]),Month([竣工金入金日])+7,Day([竣工金入金日]))    抽出条件にBetween [開始日] And [最終日] としました。 抽出条件を入れなければ正常に値がでましたが、 抽出条件を入れると  ”式が正しく入力されていないか、複雑すぎるために評価出来ません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にして下さい。” という、エラーメッセージが出てしまいます。 解消する方法を教えて下さい。

  • アクセスのクエリ抽出ができない。

    アクセスのクエリで、フォーム上のチェックのオンオフで抽出データの抽出条件を変更しようと思っています。 条件は、データの作成日付(yyyy/mm/dd形式)で、抽出の条件式は IIf([Forms]![F_送付状]![チェック40]=False,>=DateAdd("m",-1,Date()),>"0") です。チェック40がフォーム上のチェック(コントロールソースなし)で、オフの場合は、1ヶ月前までのデータを抽出、オンの場合は全件を抽出したいと思っています。 上記の式でうまく抽出できない(データが抽出できない)のですが、アドバイスをお願いします。

  • 選択クエリの抽出条件(日付の場合)

    Access2002 windows2000 日付のフィールドから選択クエリを使って、或る年度のデータを抽出するとき抽出条件に1月1日から12月31日までを入力しています。 例えば2001年のデータを抽出する場合は 抽出条件に Between #2001/01/01# And #2001/12/31# と入力しています。 これは「2001年1月1日から2001年12月31日までに該当するデータを抽出しなさい」という事ですが、年度を指定する場合は1月1日から12月31日までという事は決まっているので、もっと簡単に抽出条件を入力する方法はありませんか?

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

    クエリでの抽出条件について クエリで納品がまだ済んでいない物件について、抽出期間を設定して抽出したいのですが、うまくいかず教えてください。 抽出したいフィールドは、[納品日]、[部署]、[変更]の三つです。 フィールド[変更]は、[納品日]が変更になることがあるので、[納品日変更]というフィールドに日付が入っていたら、[変更]に[納品日変更]の日付が入るように、[納品日変更]に何も入っていなかったら、[変更]に[納品日]の日付が入るように、判定式を入れています。 [変更]の動作は、目的通りになっており問題無いのですが、いざ[納品日]、[部署]、[変更]で抽出条件を入れるとうまくいきません。 抽出条件の所に [納品日]には、Is Null [部署]には、抽出したい部署名 [変更]には、Between #2010/04/01# And #2010/05/31# それぞれAndで組んで入れていますが、何も抽出されません。 [納品日]の、Is Null と [部署]の、抽出したい部署名 のふたつだけでやると、[納品日][部署]での抽出は動作します。 しかし、この二つに[変更]をプラスし、期間を追加するとダメなようです。 [変更]のように、判定式で作ったフィールドは、抽出条件に使ってはいけないのでしょうか? それとも抽出条件のAndは二つまでとか制限があるのでしょうか? 全く別の基本的な問題が原因だと思うのですが、教えて頂きたく。

このQ&Aのポイント
  • NEC LAVI A47のデスクトップで付属のマウスのホイールが効かないという問題について質問があります。
  • ご利用の製品はNEC LAVI A47のデスクトップで、接続方法は有線LANです。
  • 付属のマウスのホイールが効かない問題の解決方法を教えていただきたいです。
回答を見る

専門家に質問してみよう