プロが教える店舗&オフィスのセキュリティ対策術

Access2000を使用しております。

クエリより抽出条件を元に値をとってくるということがしたいです。
抽出条件として日付を指定します。

以下はwhere以降で、BETWEENを使用しましたが「日付の構文エラー」とでて、抽出できませんでした。
他の方法はございますか?
(2006年10月のものだけ)

where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610#

よろしくお願いします。

A 回答 (7件)

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

この回答への補足

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

補足日時:2006/10/03 15:20
    • good
    • 0

LIKE関数じゃだめですかね?


LIKE "200610" & "*"

私はよく使っちゃうんですが…。

この回答への補足

LIKE "200610" & "*"

クエリの日付値は"#200610#" じゃないでしょうか?

また&ってどういう意味ですか?

すみません、素人でよくわかりません。

補足日時:2006/10/03 16:16
    • good
    • 0

Between #2006/10/01# And #2006/10/31#



では?

この回答への補足

ありがとうございます。

「1つ以上の必要なパラメータが値が設定されていません。」

というエラーがでます。

補足日時:2006/10/03 16:21
    • good
    • 0

WHERE (Year([クエリー名].[クエリーカラム名]) = 2006 AND Month([クエリー名].[クエリーカラム名]) = 10)


でもいいと思います。
    • good
    • 0

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

構文エラーです。

補足日時:2006/10/03 18:15
    • good
    • 0

NO.2です。



LIKE "200610" & "*" について

>クエリの日付値は"#200610#" じゃないでしょうか?
ごめんなさい。私もかじってるくらいなのでここいらははっきりしないのですが、簡単にデータ入れてクエリに条件式入れた時は"200610"という形で出来ました。

>また&ってどういう意味ですか?
& は前後の""の中身を繋げる役割です。
今回の場合、前の部分の"200610"は「2006年の10月」を指し、&以降の"*"は「どれでも」という意味なので2006年10月の*日をこれで抽出します。
もし2006年の毎月5日に入れたデータを抽出したい時は "2006" & "*" & "05" のような形になります。
    • good
    • 0

#3です。



>「1つ以上の必要なパラメータが値が設定されていません。」というエラーがでます。
>where (クエリー名.クエリーカラム名) BETWEEN #200610# AND #200610#

これはクエリーだと思っていましたが、違うのでしょうか?今何をされているのでしょう?
それによってwhere句の書き方もかわってきます。

クエリーをSQLで表示した場合。(抽出条件のみ)
WHERE (((テーブル名.フィールド名) Between #10/1/2006# And #10/31/2006#));

この回答への補足

はい、クエリーです。

その”クエリー名.クエリーカラム名”は
年月のデータ値のみです。

クエリー名.クエリーカラム名
200609
200609
200609
200610
200610
200610

上記のようにデータがはいっています。
200610分のものだけを抽出したいのです。

回答のとおりしましたが構文エラーです。

補足日時:2006/10/03 18:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!