• ベストアンサー

2段階の絞込み

クエリ-を使って作業日と作業者の2つを絞り込んでフォームに 表示させようとしています。 作業者の抽出条件はForms![フォーム名]![テキストボックス名]にして 作業日も同じようにForms![フォーム名]![テキストボックス名]すると 作業日と作業者がきちんと表示されました。 これだと1レコードのみの表示になってしまうので「1人の作業者が200204月に作業した日全部」を表示するには作業日の抽出条件をどのように入力したらいいのでしょうか? いろいろやってみたんですが出来ませんでした。 このやりかただと出来ないのでしょうか? すみませんがよろしくお願いいたします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 期間指定のBETWEENを使用する方法(WHERE句のみ)。 WHERE (作業者 = 'A') AND (作業日 BETWEEN #2002/4/1# AND #2002/4/30#)

nazal
質問者

お礼

明日にでもちょっとやってみます。 また質問なんですけど#ってどんな意味があるんですか?

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

Like "200204*"を使用するか Left関数 を使用して Left([作業日],6)="200204" 上記の抽出条件をクエリに記述すればそのフィールドの値が左から6桁が200204の レコードを全て抽出できます。 (テキストの値に対してです。)

nazal
質問者

お礼

Left関数ですか? ほぇ~いろいろな方法があるんですねぇ! 勉強になります。 ありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

>また質問なんですけど#ってどんな意味があるんですか? #で括ることで、その間の文字列を日付文字列として認識します。 フィールドが日付型の場合は、#で括らないと、検索出来ません。 >因みにあいまい検索っぽくは出来ないんでしょうか? あいまい検索は、あくまで文字列に対するものです。 "200204*" というのは2002年4月の全てということではなく、"200204"という6文字で始まる文字列を検索するということです。 従って、この場合は、作業日フィールドのデータ型が文字列で、"20020401"のような形の入力になってなければいけません。(日付の区切り記号の"/"も入っていてはいけません。) この条件をクリアしていれば、 作業日 LIKE '200204*' のようなあいまい検索が使用出来ます。

nazal
質問者

お礼

なんどもすみません。 作業日フィールドは文字列なんでさっそくやってみます。 ありがとうございました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

作業日がDate型であればmaruru01さんの回答で良いと思います。 作業日がテキスト型であれば範囲の指示のところを BETWEEN "20020401" AND "20020430"に変えてください。 例えばAccessのクエリであれば作業日のフィールドの抽出条件に Date型であればBETWEEN #2002/4/1# AND #2002/4/30# テキスト型であればBETWEEN "20020401" AND "20020430" で抽出が出来ます。

nazal
質問者

お礼

回答ありがとうございます。 因みにあいまい検索っぽくは出来ないんでしょうか?

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

作業日を日付/時刻型として、 select * from T where T.作業者 = 'A' and T.作業日>= #2002/4/1# and T.作業日 < #2002/5/1#; とか。

nazal
質問者

お礼

す・すいません・・・ 質問のしかたがよくありませんでした。 できればあいまい検索みたいなかんじで出来ないでしょうか? たとえば200204*みたいな感じでフォームに入力すると200204月分のデータが 表示されるような?