- ベストアンサー
ACCESS条件別抽出
Access2000を使用しております。 クエリより抽出条件を元に値をとってくるということがしたいです。 抽出条件として日付を指定します。 以下はwhere以降で、BETWEENを使用しましたが「日付の構文エラー」とでて、抽出できませんでした。 他の方法はございますか? (2006年10月のものだけ) where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610# よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 >「1つ以上の必要なパラメータが値が設定されていません。」というエラーがでます。 >where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610# これはクエリーだと思っていましたが、違うのでしょうか?今何をされているのでしょう? それによってwhere句の書き方もかわってきます。 クエリーをSQLで表示した場合。(抽出条件のみ) WHERE (((テーブル名.フィールド名) Between #10/1/2006# And #10/31/2006#));
その他の回答 (6)
- H-black
- ベストアンサー率35% (26/73)
NO.2です。 LIKE "200610" & "*" について >クエリの日付値は"#200610#" じゃないでしょうか? ごめんなさい。私もかじってるくらいなのでここいらははっきりしないのですが、簡単にデータ入れてクエリに条件式入れた時は"200610"という形で出来ました。 >また&ってどういう意味ですか? & は前後の""の中身を繋げる役割です。 今回の場合、前の部分の"200610"は「2006年の10月」を指し、&以降の"*"は「どれでも」という意味なので2006年10月の*日をこれで抽出します。 もし2006年の毎月5日に入れたデータを抽出したい時は "2006" & "*" & "05" のような形になります。
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 ※なお、みんな日付型であることを前提に回答しています。
補足
ご丁寧な回答ありがとうございます。 クエリテーブルの上記でいう”売上日”は 年月のデータ値のみです。 売上日 200609 200609 200609 200610 200610 200610 構文エラーです。
- ese_ee
- ベストアンサー率48% (68/139)
WHERE (Year([クエリー名].[クエリーカラム名]) = 2006 AND Month([クエリー名].[クエリーカラム名]) = 10) でもいいと思います。
- 5qoo
- ベストアンサー率48% (20/41)
Between #2006/10/01# And #2006/10/31# では?
補足
ありがとうございます。 「1つ以上の必要なパラメータが値が設定されていません。」 というエラーがでます。
- H-black
- ベストアンサー率35% (26/73)
LIKE関数じゃだめですかね? LIKE "200610" & "*" 私はよく使っちゃうんですが…。
補足
LIKE "200610" & "*" クエリの日付値は"#200610#" じゃないでしょうか? また&ってどういう意味ですか? すみません、素人でよくわかりません。
- H-black
- ベストアンサー率35% (26/73)
日付の条件を BETWEEN #20061001# AND #20061031# ってしてもだめなんでしょうか?
補足
はい、構文エラーとでます。
補足
はい、クエリーです。 その”クエリー名.クエリーカラム名”は 年月のデータ値のみです。 クエリー名.クエリーカラム名 200609 200609 200609 200610 200610 200610 上記のようにデータがはいっています。 200610分のものだけを抽出したいのです。 回答のとおりしましたが構文エラーです。