• ベストアンサー

ACCESS条件別抽出

Access2000を使用しております。 クエリより抽出条件を元に値をとってくるということがしたいです。 抽出条件として日付を指定します。 以下はwhere以降で、BETWEENを使用しましたが「日付の構文エラー」とでて、抽出できませんでした。 他の方法はございますか? (2006年10月のものだけ) where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610# よろしくお願いします。

  • fm0606
  • お礼率13% (100/761)

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

  • ベストアンサー
  • 5qoo
  • ベストアンサー率48% (20/41)
回答No.7

#3です。 >「1つ以上の必要なパラメータが値が設定されていません。」というエラーがでます。 >where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610# これはクエリーだと思っていましたが、違うのでしょうか?今何をされているのでしょう? それによってwhere句の書き方もかわってきます。 クエリーをSQLで表示した場合。(抽出条件のみ) WHERE (((テーブル名.フィールド名) Between #10/1/2006# And #10/31/2006#));

fm0606
質問者

補足

はい、クエリーです。 その”クエリー名.クエリーカラム名”は 年月のデータ値のみです。 クエリー名.クエリーカラム名 200609 200609 200609 200610 200610 200610 上記のようにデータがはいっています。 200610分のものだけを抽出したいのです。 回答のとおりしましたが構文エラーです。

その他の回答 (6)

  • H-black
  • ベストアンサー率35% (26/73)
回答No.6

NO.2です。 LIKE "200610" & "*" について >クエリの日付値は"#200610#" じゃないでしょうか? ごめんなさい。私もかじってるくらいなのでここいらははっきりしないのですが、簡単にデータ入れてクエリに条件式入れた時は"200610"という形で出来ました。 >また&ってどういう意味ですか? & は前後の""の中身を繋げる役割です。 今回の場合、前の部分の"200610"は「2006年の10月」を指し、&以降の"*"は「どれでも」という意味なので2006年10月の*日をこれで抽出します。 もし2006年の毎月5日に入れたデータを抽出したい時は "2006" & "*" & "05" のような形になります。

noname#22222
noname#22222
回答No.5

WHERE節では、キーワード BETWEENと ANDを使って特定の範囲の値を検索するように条件を設定することができます。   WHERE <列名>     [NOT] BETWEEN <式> AND <式>   strS_Date = "#" & GetDate(dteHizuke, 当月, 初日) & "#"   strE_Date = "#" & GetDate(dteHizuke, 当月, 末日) & "#"   strWhere = "売上日 BETWEEN " & strS_Date & " AND " & strE_Date 式ということは、ワイルドカードを組み込めないことを意味します。 ですから、明示的に開始日と終了日を指定する必要があります。 No3さんのやり方ですとエラーが発生しないのは、このルールに則っているからです。 仮にエラーが発生したのであれば、列名の書き忘れなどのミスと考えられます。 なお、月の初日と末日は、GetDate()で簡単に求めることが可能です。 Public Function GetDate(ByVal Now As Date, _             ByVal Move As Integer, _             ByVal Hiduke As Integer) As Date                GetDate = DateSerial(DatePart("yyyy", Now), _              DatePart("m", Now) + Move - (Hiduke = 99), _              Hiduke * Abs(Hiduke <> 99)) End Function ? GetDate("2006/10/10", 0, 1) 2006/10/01 ? GetDate("2006/10/10", 0, 99) 2006/10/31 ? GetDate("2006/10/10", 1, 1) 2006/11/01 ? GetDate("2006/10/10", 1, 99) 2006/11/30 ※なお、みんな日付型であることを前提に回答しています。

fm0606
質問者

補足

ご丁寧な回答ありがとうございます。 クエリテーブルの上記でいう”売上日”は 年月のデータ値のみです。 売上日 200609 200609 200609 200610 200610 200610 構文エラーです。

  • ese_ee
  • ベストアンサー率48% (68/139)
回答No.4

WHERE (Year([クエリー名].[クエリーカラム名]) = 2006 AND Month([クエリー名].[クエリーカラム名]) = 10) でもいいと思います。

  • 5qoo
  • ベストアンサー率48% (20/41)
回答No.3

Between #2006/10/01# And #2006/10/31# では?

fm0606
質問者

補足

ありがとうございます。 「1つ以上の必要なパラメータが値が設定されていません。」 というエラーがでます。

  • H-black
  • ベストアンサー率35% (26/73)
回答No.2

LIKE関数じゃだめですかね? LIKE "200610" & "*" 私はよく使っちゃうんですが…。

fm0606
質問者

補足

LIKE "200610" & "*" クエリの日付値は"#200610#" じゃないでしょうか? また&ってどういう意味ですか? すみません、素人でよくわかりません。

  • H-black
  • ベストアンサー率35% (26/73)
回答No.1

日付の条件を BETWEEN #20061001# AND #20061031# ってしてもだめなんでしょうか?

fm0606
質問者

補足

はい、構文エラーとでます。

関連するQ&A

  • 指定した値の範囲内の列を抽出

    Access2000を使用 前回答えてもらったとおり指定した1つの値からはデータの抽出成功しました。 で今回も同じような内容で、指定した値(月初から今日の日付)までの値を抽出するようなSQL文がわかりません。 以下はwhere以降で、BETWEENを使用しましたが抽出できませんでした。 他の方法はございますか? where (クエリー名.クエリーカラム名) BETWEEN #" & Format(Date - mday + 1, "yyyy/mm/dd") & "# AND #" & Format(Date, "yyyy/mm/dd") & "#" よろしくお願いします。

  • ACCESS2000でクエリを抽出条件で抽出

    VBA上でクエリの抽出データを取得してファイルに書き込むというプログラムを書いております。 抽出条件として、今日の日付のレコードを取得したいのですが型が一致しませんとエラーになります。 strSQL = "SELECT * FROM " & (クエリー名)& " where (クエリー.カラム名)='" & Format(Date, "yyyy/mm/dd") & "'" クエリーのカラム名は全角漢字です。 どこがおかしいのでしょうか? よろしくお願いいたします。

  • Access2000:クエリに値(抽出条件値)を返す

    クエリに抽出条件として、 Between [いつから?(例:200504)] And [いつまで?(例:200504)] と指定してあります。 マクロに登録されたクエリを実行すると必要パラメータとしてダイアログがたちあがるものです。 これを自動的にVBAで日付を算出し、上記クエリに値を返すことをしたいのですが記述方法がわかりません。 VBAで作成した関数の戻り値を上記クエリの抽出条件の欄に返す方法はありますか? よろしくお願いいたします。

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

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • クエリの抽出条件

    アクセス2003/2007のクエリの抽出条件について テーブル名:履歴 フィールド1:名前 フィールド2:履歴No フィールド3:履歴の内容 フィールド4:日付 とあります。 履歴Noは0の人、1~3まである人、1~10まである人と様々。 指定した名前毎に「履歴Noの最大値から3レコードを抽出してレポートにしたいです。 下記のようにしてみました。 Between Val(DMax("履歴No","履歴"))-2 And Val(DMax("履歴No","履歴")) これでは抽出出来ませんでした。 試しに Between 3-2 And DMax("履歴No","履歴") と直接引き算の式を入れると抽出されました。 ※Valはあってもなくても同じでした。 「履歴Noの最大値から3レコードを抽出」をうまく出来る方法は無いでしょうか。 よろしくお願いします。

  • ACCESS クエリにて日付で抽出する方法

    宜しくお願い致します。 アクセスにて出荷管理票を作っています。 その過程で下記のクエリを作成しました。 [商品名][出荷先][出荷日][個数] 上記のクエリで[出荷日]に抽出条件を指定したいのです。 抽出条件は【1月分または7月分】です。 Between … And …を使うと Between #2009/01/01# And #2009/01/31# または Between #2009/07/01# And #2009/07/31# となるのですが、2009年というのは指定したくないのです。 2007年でも2008年でもまた2010年でも抽出したいのですが、何か方法はないでしょうか?

  • ACCESSの抽出条件について教えて下さい

    ACCESSの抽出条件について教えて下さい 2011/04/01以降になっているもの or 2010/03/31以前になっているもの という条件をACCESSで作ることは可能でしょうか? ちなみに2010/04/01~2011/3/31(2010年度)のもの というのは Between #2010/04/01# And #2011/03/31# で作成ができました。 このような感じで作成したいのですが・・・

  • フォームからクエリの抽出条件を入力する方法

    既存のデータベースより複数のテーブルを結合し、必要なカラムだけを表示させるようなクエリを作成しました。 他の人でも操作ができるように、フォームを作成し、テキストボックスにて抽出条件を指定し、クエリやレポートを出力するような形にしたいと思っています。 このクエリの抽出条件をフォームより指定する方法で悩んでいます。 現在、作成したクエリの抽出条件の中に [Forms]![フォーム名]![テキストボックス名] と入力し、フォームのテキストボックスで抽出条件を記入してクエリを実行させているのですが、これでは複雑な条件 (Between~ や 条件1 or 条件2 等の指定) を入れると「直前の操作はキャンセルされました」とポップアップが出てしまい、思うとおりにうごきません。 フォーム内でこのような抽出条件範囲の指定ができるようにするにはどうしたらよろしいでしょうか? よろしくおねがいします。

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

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

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

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

専門家に質問してみよう