FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


フォームやレポートでフィルターをかけたい(日付編)

今回のお悩みは・・・

以前、 「フォームやレポートでフィルターをかけたい(文字列編)」」って
ありましたが、

あれと同じようにしたんだけど、項目が日付だと動かないんですよ~ ( ̄Д ̄)
どうすればいいんでしょ~?

つまり・・・

フィルターの条件の書き方を知りたい(日付編)

というわけ・・・なんでしょうね・・・きっと・・・(´Д`)



そんなわけで、今回も以前と似たようなデータ・・・

日付
会社名

売上金額

2010-2-3
AAA
5,000
2010-3-4
BBB
4,200
2010-3-23
AAB
3,000
2010-4-1
CCC
6,000
2010-5-2
CCC
1,500
2010-5-2
BBB
2,800
2010-6-18
DAD
3,300

これを利用したいと思います。

このデータが、フォーム(Frm_A)に表示されていて、それぞれのコントロール名は、
テーブルのフィールド名と同じということにします。

そしてまず、フィルターを利用するにあたっての基本ですが、
フォーム名.Flter = "フィルター対象コントロール名 = 条件" 
フォーム名.FilterOn = True
という記述方法だった・・・と・・・思います・・・。

文字列の抽出に関しては、条件を'(シングルクォーテーション)で囲むというのが基本でしたが、
今回は、抽出対象が文字列ではなく日付になるわけです。

じゃ~日付は何で囲むのか・・・というと・・・#(シャープ)で囲んじゃえば、おっけ~です。( ̄▽ ̄;)b

以上のことを踏まえて、これから色々な条件で考えてみたいと思います。
(だから、前置きが長いんだって・・・(-_-) )

まず最初の条件は「2010年5月2日のデータだけ」という風に、条件が固定されている場合の
書き方から始めていきませう。

上記のように日付が固定されている場合は
Forms!Frm_A.Filter = "日付 = #2010-5-5#"
という記述方法になります。

日付の前後には#をつけて、その間の値が日付であることをAccessに
教えていることになります。

もし#をつけていない場合、Access自体が「2010-5-2」が何であるかを
認識できなくなり、うまく抽出しなくなるので注意してください。

そして上記の記述で得られる結果は、
日付
会社名

売上金額

2010-5-2
CCC
1,500
2010-5-2
BBB
2,800

となる・・・はずです・・・(-。-) ボソッ

上記が、日付を利用したFilterの基本的な記述になりますが、
実際には日付を固定せずに、色々な条件が必要になると思います。

例えば、フォーム上のコントロール(仮にTxt_1)に、入力した日付以降の
データを抽出したい・・・というような場合。

このような場合は、コントロールに入力された値を利用する形に
なるので、Filterの条件の書き方は、
Forms!Frm_A.Filter = "日付 >= #" & Forms!frm_A.Txt_1 & "#"
と記述すれば、おっけ~となってくるわけです。

あくまでTxt_1に入る値は日付なので、その前後に#がつく形に
なっていることに注意しちゃってください。m(_ _)m

もし、Txt_1に入力した日付が 2010-5-2 とするなら
結果は
日付
会社名

売上金額

2010-5-2
CCC
1,500
2010-5-2
BBB
2,800
2010-6-18
DAD
3,300

となっている・・・はずです・・・( ̄  ̄ゞ

上記では指定した日以降としましたが、
仮に指定した日付限定であれば
Forms!Frm_A.Filter = "日付 = #" & Forms!frm_A.Txt_1 & "#"
指定した日付以前ということであれば
Forms!Frm_A.Filter = "日付 <= #" & Forms!frm_A.Txt_1 & "#"
とすれば、きっと動作するんじゃないかな~~と期待してます。

では今回の最後の例として、何時から何時まで・・・というように
範囲を指定してレコードを抽出する場合の条件の書き方を
がんばってみたいと思います。

この条件のように、開始日から終了日まで・・・といった期間(範囲)を
指定して抽出したい場合には Between を利用します。

・・・で・・・今回は期間を指定するわけですから、

開始日を入力するコントロール名をTxt_1、
終了日を入力するコントロール名をTxt_2としませう。

この場合の記述方法は・・・
Forms!Frm_A.Filter = _
"日付 Between #" & Forms!frm_A.Txt_1 & "# And #" & Forms!frm_A.Txt_2 & "#"
とすれば動作してくれる・・・と、思われます。

ここで、開始日を2010-04-01、終了日を2010-06-01とした場合の結果は
日付
会社名

売上金額

2010-4-1
CCC
6,000
2010-5-2
CCC
1,500
2010-5-2
BBB
2,800

になりますね・・・きっと・・・多分・・・(-。-) ボソッ

先ほども記述しましたが、期間(範囲)を指定する場合には
Between ○○ And □□ というような記述を行います。

英語でいうところの、○○と□□の間・・・
・・・と、いう意味だったんじゃないかな~~~・・・と思いますが、
英語が赤点だった自分には全く自信がありしぇん・・・orz
 
・・・トリアエズ \(・_\) ソレハ (/_・)/コッチニオイトイテ・・・

開始日・終了日共に、やはり 日付データと認識させるため
# で囲まれていることに注意してもらえれば、ちょっぴり幸せ。 (。-_-。)ポッ

そして、結果を見た場合ですが、
指定した日も含まれていることもちょっとポイントに
なったり、ならなかったりです。

ちなみに、上記の開始日と終了日を指定する場合ですが、
Betweenを使わずに
Forms!Frm_A.Filter = _
"日付 >= #" & Forms!Frm_A.Txt_1 & "# And 日付 <= #" & Forms!Frm_A.Txt_2 & "#"
というような書き方もできますが・・・
見た目やさしく、理解もしやすいBetweenを利用するほうを
お勧めします・・・(・・・じゃ、書くなよ・・・(-。-) ボソッ)

とりあえず、日付で利用される主な抽出条件は
こんな感じではないでしょうか?

え?もっと複雑?
そんなこと言われても・・・自分の頭ではこの辺が限界ですよ・・・(T_T)ホロホロ
これぐらいで今回は、勘弁してくださいよ~~orz

そんなわけで・・・
難問が降りかかる前に・・・・・・(・・)/ シュタ 。。。タタタッ。ヘ(;・・)ノ


補足・・・(蛇足とも言いますが・・・)
Betweenを使わない方法を記述しましたが、これは
条件を2つ組み合わせた書き方になっています。

今回は2つとも日付コントロールを対象に条件を重ねていますが、
日付と会社名など組み合わせることも可能になります。

また今度、このような条件の書き方を色々と試してみたいな~・・・と
いう伏線を込めて、ちょっと書いてみたり、みなかったり・・・
↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コメントの投稿

非公開コメント

Author's Profile ~自己紹介~

Genzo

Author:Genzo
PCは一応自作できるレベル。
ワード・エクセルなら基本的に
扱えるレベル。
プログラム・・・?ん?
VBA・・・?ん?ん??
それって美味しいですか?


~ 当ブログについて ~

~ Mail2Genzo  ~

Calender&Search かれんだーと検索

07 | 2018/08 | 09
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

Access2Genzo内で検索

Category ~かてごりー~

Comments Tree ~こめんとつりー~


Link ~りんく~

ブロとも申請フォーム

Counter ~かうんた~

Since 2010/08/01:

Online:

タグクラウド

最新トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。