-PR-
解決
済み

日付のチェックなのですが

  • すぐに回答を!
  • 質問No.95944
  • 閲覧数254
  • ありがとう数7
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 100% (8/8)

日付の入力チェックについて教えてください。
アクセス2000のVBでプログラムを作っているのですが、
二つのテキストボックスがあり日付をFrom、Toで入力してもらい
その入力された期間が1ヶ月以上だったらエラーとしたいのですがいい方法はないでしょうか?
入力形式は2001/01/01という形です。
月またがりの一ヶ月以内(2001/01/31~2001/02/10等)はエラーとはしません。
すみませんがどなたか良い方法をご存知でしたら教えて下さると助かります。
よろしくお願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル9

ベストアンサー率 48% (24/49)

DateAdd関数をよく使いますよ。
一ヶ月というので日にち換算するのは微妙だから
単純に一ヶ月加算するのがベストではないでしょうか?

入力したFromに一ヶ月加算して比較する方法です。
ポイントは DateAdd関数とFormat関数です。

参考ソースをのせました。
日付のチェックは 行っていません。
入れる場合は工夫してください。

Private Sub Command1_Click()

Dim sSDate As String
Dim sAddDate As String
Dim sEDate As String

On Error GoTo FncEnd

sSDate = Format$(Text1(0).Text, "yyyy/mm/dd")
sAddDate = Format$(DateAdd("m", 1, sSDate), "yyyy/mm/dd")
sEDate = Format$(Text1(1).Text, "yyyy/mm/dd")

If sAddDate <= sEDate Then
Call MsgBox("NG!!" & sSDate & " - " & sEDate, vbExclamation)
Else
Call MsgBox("OK!!" & sSDate & " - " & sEDate, vbInformation)
End If

FncEnd:
End Sub
お礼コメント
yuuhi

お礼率 100% (8/8)

Hk2001さんありがとうございます。
どうやらこの方法が一番ベストのようです!!
回答していただきありがとうございました。
とても助かりました。また何かあったらその時は宜しくお願いします<(_ _)>
投稿日時 - 2001-06-29 10:00:17
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 18% (351/1917)

力技であれば、 例:2001.5.1~2001.5.30 年を比べて同じであれば、 月を見て、月も同じであれば日を見る。 終わりから開始の日を引く、1ヶ月以上ならエラー 例:2001.5.15~2001.6.10 月が違うなら、その月の日にちを足す (31+15)-10 = 36 一ヶ月以上なのでエラー というようにしたら良いのでは? ...続きを読む
力技であれば、

例:2001.5.1~2001.5.30
年を比べて同じであれば、
月を見て、月も同じであれば日を見る。
終わりから開始の日を引く、1ヶ月以上ならエラー

例:2001.5.15~2001.6.10
月が違うなら、その月の日にちを足す
(31+15)-10 = 36
一ヶ月以上なのでエラー

というようにしたら良いのでは?
お礼コメント
yuuhi

お礼率 100% (8/8)

なんとかチェックできるようになりました。
アドバイスありがとうございました。
また何かありましたらよろしくお願いします≦(._.)≧
投稿日時 - 2001-06-29 09:54:52


  • 回答No.2
レベル7

ベストアンサー率 19% (4/21)

DATEDIFF関数ではダメですか? ...続きを読む
DATEDIFF関数ではダメですか?
お礼コメント
yuuhi

お礼率 100% (8/8)

DATEDIFFを使って戻り値が31より大きかったらエラーという事でしょうか?
さっそく実行してみます!!
アドバイスありがとうございました。<(_ _)>
投稿日時 - 2001-06-29 09:57:33
  • 回答No.4

#3.Hk2001さんの回答がベターだと思いますが、 ローカル変数 sAddDate と sEDate を String型 のまま比較しちゃっちゃってるところが気になりました。 実動作では恐らく問題ないし、結構平気でやっちゃいますけどね。 しかしY2Kのころとか、結構アバウトなロジック部分がおかしくなっちゃったりしたから、データ型は厳密に適用するに越したことはないってだけです。 あと99年ぐらいは ...続きを読む
#3.Hk2001さんの回答がベターだと思いますが、
ローカル変数 sAddDate と sEDate を String型 のまま比較しちゃっちゃってるところが気になりました。
実動作では恐らく問題ないし、結構平気でやっちゃいますけどね。
しかしY2Kのころとか、結構アバウトなロジック部分がおかしくなっちゃったりしたから、データ型は厳密に適用するに越したことはないってだけです。
あと99年ぐらいは大丈夫でしょう。
それと、DateAddはOSの日付によるので、OSのカレンダがバグってると狂います。
といってもわざわざ1ステップで済むところを自分でコーディングするほどヒマじゃないけど・・・。余計な話ですね。失礼。
お礼コメント
yuuhi

お礼率 100% (8/8)

余計な話なんてとんでもないです!!
>DateAddはOSの日付によるので、OSのカレンダがバグってると狂います。
そうなんですかー。知りませんでした。
貴重な情報ありがとうございました。
投稿日時 - 2001-06-29 10:04:09
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ