• ベストアンサー

アクセス:DateVakueと抽出条件

クエリで年、月、日付の文字情報からDateValueで日付に変換し、ある条件のものだけを抽出しようとしています。しかし実行すると『抽出条件でデータ型が一致しません』というエラーが出ます。 抽出条件の所に日付を入れても自動では日付を表す# #が付かないため、ここは日付のフィールドではないような気がします。 で、手動で#を付けて<#2008/01/01#のように設定すると、5秒くらいは結果が表示されるのですが、すぐ同じエラーが表示されます。 (文字列で設定(<2008/1/1)しても同じエラーが出ます。) 何がおかしいのかご教示お願いします。

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

  • ベストアンサー
  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.3

テーブルの[year]フィールド、[month]フィールド、[ID]フィールド には、実際にどのような値が入っているのでしょうか。 IDの一部分を「日」にされているようですが、いまいちイメージが つきません。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

>『抽出条件でデータ型が一致しません』 抽出しようとしてるのが、DateValueの数式のフィールドの場合 <#2008/01/01# で抽出できるはずです。 抽出しようとしてるのが、DateValue(フィールド1)のフィールド1の場合 フィールド1の文字列(日付)は、テキスト型なので、<及び>の不等号での抽出はできません。

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.1

日付フィールドはテキスト型で 2016年1月1日 2016年2月1日 2016年7月1日 と登録されています。 それをDateValueで変換して、そこで<#2016/06/30#を 条件とすると、 2016年1月1日 2016年2月1日 が抽出されます。エラーにもなりません。 こういうことではないんですかね。

ticktak
質問者

補足

はい、少し違います。TEXTデータは日付の形をとっているのではなく、年、月、日と別れたものをこのような式で変換しています。 DateValue([year] & "/" & [month] & "/" & Mid([id],6,2)) この式は間違っていますか?

関連するQ&A

  • アクセス クエリー 抽出条件について

    アクセス クエリー 抽出条件について たとえば文字列で5桁の仕入先コードフィールドが有るとします。で1と3と5を除くレコードを表示させたいときは 抽出条件をどの様に設定したらよろしいでしょうか?

  • 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 と設定します。 通報する

  • ACCESSのクエリ:抽出条件で型が一致しません

    ACCESSでクエリを作ったのですが 実行すると、 「抽出条件で型が一致しません」のエラーが出ます 問題となっているヶ所は テーブルのフィールド定義がバイナリーになっています そして、クエリで   フィールド   テーブル   並べ替え   表示   抽出条件   または となっていますが、 この抽出条件に、1、を入れました テキスト型なら、"1" 数値系型なら、1、でいいのか、と思ったのですが バイナリ型は別の表現があるのでしょうか よろしくお願いします

  • ACCESS抽出条件でデータ型が一致しません

    ACCESSのクエリで抽出条件に"20140106"と入力しますと下記のエラーメッセージが出てきます。 教えて頂けないでしょうか? 抽出条件でデータ型が一致しません。(Error 3464) Find 系メソッドの抽出条件式で、比較する値のデータ型がフィールドのデータ型と一致していません。

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

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

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

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

  • アクセス クエリー抽出条件 今月初日から

    winXp access2003 クエリー デザインビューにおいて 日付フィールドを 今月の初日からで 検索したいのですが 抽出条件を >=""Year(Now())"/"Month(Now())"/"1"" >="Year(Now())"/"Month(Now())"/"1" これですと いずれも うまくいきません 抽出条件で データ型が一致しません とでます 宜しくお願い致します

  • クエリで日付の抽出条件

    アクセスのクエリで日付の条件抽出をしたいのです。シャープ(#)が日付のリテラル値ということまではつき止めたのですが、ここで問題発生です。 文字列には*や?のような便利な文字が使えるのに、日付で使おうとするとエラーになってしまいます。 例えば#01/05/2?# のように2001年5月20日~29日を抽出しろ、としても出来ません。 日付抽出には*や?のような文字はないんでしょうか? どうしてもないようなら関数でもしょうがないのですが、関数だと#01/1?/?3# (2001年10月~12月のうち、03、13、23日を抽出)みたいな複雑な命令が(簡単には)出来ないような気がするんです。 どなたかお助け下さい。

  • ACCESS クエリ 条件以外のレコードを抽出するには?

    クエリで、抽出条件(文字列)以外のレコードを全て抽出したいのですが、うまくいきません。 そのフィールドには空白もあり、 抽出条件を「Not In ("A","B")」とすると、 "A","B"以外の文字列が抽出され、空白のものは抽出されません。 「"A"や"B"でない、他の全てのレコードを抽出したい」という場合、どのようにすればよいのでしょうか?

  • ACCESS2000 クエリの抽出条件

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

専門家に質問してみよう