FC2ブログ

スポンサーサイト

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

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

こんな記事もありますよ


入力された内容をチェックしたい(4) (日付編)

どこまで続くのでしょうか…無駄に増えて、ついに4回目です。

前回は文字列編を行ったので、
今回のお悩みは…

実際に入力された値(日付)を比較したい

となっております… (^^;

正直、こんなに長くなるとは想像していませんでした…が、
始めたからには仕方ないです…がんばります…orz



毎回同じことを記述していますが、お約束事として…

今回も、コードではフォーム名は全て Me. で記述します。
また、利用するコントロールもテキストボックスとして、名前もTxt_Aとします。

…あ!それともう1つ…今回は日付を対象としているので基本的にTxt_Aの
書式は日付に設定されていることを前提にはすすめたいと思います。

では、日付編の始まり~はじまり~~

まず、最初に思いつくのが…
「指定した日付と同じかどうか…」でしょうか…
これは比較的簡単に考えてよさそうです。
If Me.Txt_A = #2010/4/30# Then
こんな感じでしょうか…
これで「Me.Txt_Aの日付が2010年4月30日だったら…」という感じで
確認できてそうです。
比較対象となる日付を # # で囲んであげることで、
Accessに日付であることを教えることになってくれてるようです。 ヽ(*'0'*)ツ

では、「今日の日付かどうか」を確認するには…
If Me.Txt_A = Date Then
…とこんな感じでよさげです。( ̄^ ̄) エッヘン!

上記の場合は、Date関数を利用することで、日付であることが
Access自体が理解しているので # #で囲む必要がないみたいです。

では次に「指定した日付より前かどうか…」というモノを考えてみませう。
これも単純に考えて
If Me.Txt_A < #2010/4/30# Then
'もしくは
If Me.Txt_A < Date Then
のようにすればばっちりんごです。
<> に変更すれば、「指定日より後かどうか」になってくれましゅね。〆(- -)メモメモ

では指定日に、何時から何時まで…のような範囲がある場合…
この場合もついでに考えてみたいと思います。
クエリなんかで範囲がある場合は「Between ○○ And XX」という書き方が
できるので…
If Me.txt_A = Between #2010/04/01# And #2010/04/30# Then
とできそうな気がします…が…
…エラーが出てしまいました…orz
どうやらだめみたいです。

(追記 2010.04.30
hatenaさんより Betweenを利用した下記のような記述方法をご教授いただきました
If Eval("#" & Me.txt_A & "# Between #2010/04/01# And #2010/04/30#") Then 
1つの処理に対して色々なアプローチがあることをいつも学ばせていただいてます。
(本当にありがとうございます。)


ではどうするか…今回の条件のように範囲内の値かどうかを調べるには
If Me.Txt > #2010/04/01# And Me.Txt_A < #2010/04/30# Then
…のようにAndで繋げた書き方をすれば、おっけりんぐです。
「Me.Txt_Aの日付は、2010/4/1より大きくて、2010/4/30より小さい場合」
…という考えかたですね…。( ̄▽ ̄;)b ぐっ!!

今回の例は、指定する日付がDate関数を除いて、固定した日付ばっかりでしたが、
Dateserial関数や、DateAdd関数等を利用することで色々とできるように
思います。

日付の操作に関する項目は、また別の機会に(^^ゞ

この入力した内容を…は、まだまだ続きそうです……□_ヾ(・_・; ) カタカタ…
…というよりも、色々考えてたらやたら長くなってしまいそうです。

とりあえず今回はこの辺で…
本日のお悩みを終了したいと思います。

まだまだ続きますが…とりあえず・・・

じゃ!(・・)/ シュタ ,。。。タタタッ。ヘ(;・・)ノ
↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コメントの投稿

非公開コメント

まいど、、、hatenaです。

> If Me.txt_A = Between #2010/04/01# And #2010/04/30# Then

これがエラーになるのは、= があるからです。Between自体が演算子なので、演算子を2つ重ねることはできません。

If Me.txt_A Between #2010/04/01# And #2010/04/30# Then

とすれば、通ります。これは、

If Me.txt_A >= #2010/04/01# And Me.txt_A <= #2010/04/30# Then

と同じ意味になります。

上のコメント、間違ってました。

うっかりしてました。
VBAのコード内では、 Betweeen ~ And ~ は使えないのでした。
Betweeen が使えるのは、クエリ内やコントロールソースなどの式のみでした。

VBAで無理矢理使うとなると、

If Eval("#" & Me.txt_A & "# Between #2010/04/01# And #2010/04/30#") Then

どうも失礼しました。

Re: まいど、、、hatenaです。

いつもご教授感謝です。

同じ処理なのに、様々なアプローチ方法があることを
いつも感じさせていただいています。
(無理やりとはいわれてますが・・・Between…使えてるところが
すごいです・・・(T‐T))

開発の効率や、コードの見易さ・・・そのようなことを
少しずつでも考えれるように、自分もなっていきたいです。

プログラムの基本的な考え方なんかも勉強しないといけないの
だろうな~と考えさせられる今日この頃・・・

時間も労力も全然足りてません…orz

Author's Profile ~自己紹介~

Genzo

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


~ 当ブログについて ~

~ Mail2Genzo  ~

Calender&Search かれんだーと検索

09 | 2018/10 | 11
- 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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。