• ベストアンサー

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

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

  • yuuhi
  • お礼率100% (8/8)

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

  • ベストアンサー
  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.3

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
質問者

お礼

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

その他の回答 (3)

noname#5067
noname#5067
回答No.4

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

yuuhi
質問者

お礼

余計な話なんてとんでもないです!! >DateAddはOSの日付によるので、OSのカレンダがバグってると狂います。 そうなんですかー。知りませんでした。 貴重な情報ありがとうございました。

  • Tetsuro_M
  • ベストアンサー率19% (4/21)
回答No.2

DATEDIFF関数ではダメですか?

yuuhi
質問者

お礼

DATEDIFFを使って戻り値が31より大きかったらエラーという事でしょうか? さっそく実行してみます!! アドバイスありがとうございました。<(_ _)>

  • coolguys
  • ベストアンサー率18% (351/1917)
回答No.1

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

yuuhi
質問者

お礼

なんとかチェックできるようになりました。 アドバイスありがとうございました。 また何かありましたらよろしくお願いします≦(._.)≧

関連するQ&A

  • 日付のエラー

    aspx(vbscript)でプログラムを作っています。 ある申請書を作っているのですが、その中で テキストボックスに日付を入力して、その日付が[今日]より 前だとエラーになるというコードを作りたいのですが、 If Trim(textbox1.value) <>"" and Datevalue(textbox1.value) < Date Then msgbox "日付が違います。" End If としたのですが、テキストボックスに何も入力しないとエラーになって動いてくれません。テキストボックスに入力すればちゃんと動きます。 この項目は必須項目ではないのでテキストボックスに入力せずに申請する場合もあるので困っています。どのようにすればちゃんと動作してくれるのでしょうか。  

  • VB 日付範囲チェック

    VBで日付の比較チェックをしたい 日付項目が2つあるとする 1年を越える日付が指定されましたらエラーを飛ばしたい DateAdd ,diffなどを使ってやっているがうまくいきません どうしたらいいですか? おねがいします 2003/01~2003/12はok 2003/01~2004/01ならエラーを飛ばす 形式は"yyyy/mm"

  • EXCEL 入力された日付のチェック

    EXCELのある列に、日付が「2006/5/26」という形式で入力されます。 ですが、入力間違いで、本来ない年月日を入力した場合、エラーとしたいのですが、どのようにするのが、一番効率よいでしょうか。 VBAでプログラムを記述していますので、VBAの記述で教えて頂けますでしょうか。 よろしくお願いします。

  • iアプリJavaで日付チェック

    Doja4.0でiアプリを開発中ですが、日付チェックの方法がわからなくて困っています。 テキストボックスで年、月、日を入力する画面なのですが、 入力された日付が正しいかチェックする方法を教えてください。 お願いします。

    • ベストアンサー
    • Java
  • アクセスでの日付入力

    ACCESSで手間のかかる日付入力を出来るだけ簡単に入力できたらと考えています。 カレンダーコントロールを使用すると、日付入力のテキストボックスの数分カレンダーコントロールが必要になってしまうので、出来れば今日の日付を常に表示してボタンを使って前後の日付に変更出来るようにしたいと思っているのですが。 もしくは、コンボボックスのように矢印をクリックすると、カレンダーが出てくるのでも良いのですが。 何か良い方法があれば教えて下さい。

  • PHPで日付の入力内容をチェックするには

    PHP初心者です。 テキストボックスに入力された発売日をチェックしてMySQLのDATATIME形式の発売日のフィールドにデータを突っ込むプログラムを組んでいるのですが 1、DATATIMEは4-2-2の形式なので、この通りかチェックしたい 2、発売日が不明な場合は空欄でもOKにしたい 3、入力はされているが4-2-2の形式以外の場合はエラーメッセージを出したい 4、入力された数値が4-2-2の形式でも存在しない日付の場合もエラーメッセージを出したい 以上のことを踏まえて if ($_POST['sale'] == '') { $error['sale'] = 'black'; <input type="text" name="sale" size="10" id="sale"> <?php $sale = mb_convert_kana($_REQUEST['sale'], 'a', 'UTF-8'); if (preg_match("/^\d{4}\-\d{2}\-\d{2}$/", $sale)) { echo htmlspecialchars($_POST['sale'], ENT_QUOTES, 'UTF-8'); } else if ($error['sale'] == 'blank') { echo htmlspecialchars($_POST['sale'], ENT_QUOTES, 'UTF-8'); } ?> 1、2までは何となくできたのですが3のエラーメッセージを出す場合CSSで文字の色を変えたいので <p class="error">* 発売日は 空欄 もしくは 2010-01-01 の形式でご記入ください</p> HTMLでこれを入れる場合、どのようにプログラムを組めばよいのでしょうか? 単純に考えれば if ( ) { } else if ( ) { } else { } みたいな感じになると思うのですがそうするとPHPの中にHTMLを記述しないといけなくなります。 自分はまだPHPの中にHTMLを記述する方法は知りません。 また、4の機能も付ける場合どのようにプログラムを組めばよいかわかりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • システム日付の表示方法

    VB6.0でシステム日付をテキストボックスに"XXXX年XX月XX日"の形で表示したいのですが、どうしたらいいのでしょうか? テキストボックスのオプションでDataFomatを上記の設定にしてのですが、プログラムよりシステム日付を取得すると、2004/10/26と表示されてしまいます。 取得の仕方がおかしいのでしょうか? 初歩的で申し訳ありませんがよろしくお願いします。

  • アクセスにて、フォームのテキストボックスの値をテーブルにコピーしたい

    初めて質問させていただきます。宜しくお願いします。 アクセスで、 ===フォーム上にある非連結テキストボックスに、日付を入力し、コマンドボタンをクリックすると、テーブルにある日付のデータをクリアし、その後フォーム上のテキストボックスに入力した日付を挿入===の方法を教えていただきたいと思います。 CurrentDb.Execute "DELETE * FROM T_設定日;" CurrentDb.Execute "INSERT INTO T_設定日(設定日) VALUES ('Me![年月日]');" 上記でやってみたところ、データのクリアはされるのですが、その後、テキストボックスに入れた日付は入りません。エラーは出ません。 アクセス初心者で、分かりにくい説明と思いますが、宜しくお願いします。

  • エクセル日付データーの一致方法?

    エクセルVBAにて、 元データーに日付形式(2007/8/1~2007/8/31)で 作成されているセルを  入力用フォームのテキストボックス1で日付入力 (入力書式は8/6のようにスラッシュで入力希望)してループ処理にて 一致した日付の隣のセルにテキストボックス2で入力した 数値を入力したいのですが どのようなコードもしくは設定を行えばよろしいでしょうか?

  • 日付入力

    テキストボックスにYYYY/MM/DDの形式で入力します。 入力中に、YYYYが入力されたら自動的にスラッシュを付け加えて、またMMと入力したらスラッシュが自動的に入るようにしたいです。その過程で、日付のチェックも同時に行ないたいです。 どう書けばよいのでしょうか。ぜひ教えてください。お願いします。