C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VB.NETの日付について


(過去ログ 20 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■8279 / inTopicNo.1)  VB.NETの日付について
  
□投稿者/ ナカムラ (3回)-(2007/09/27(Thu) 10:43:03)

分類:[.NET 全般] 

VB.NET
SQLSERVER2005
こんにちわ。質問させてください。

今VB.NETで日付の入力規制のところで悩んでいます。

日付を入力するテキストボックスは、書式設定をして「2007/09/03」の形で入力できるようになっています。
格納するテーブル列の型はDatetime型です。

このとき、「0001/01/01」などのありえない日付を入力すると、
DBに登録する際にはじかれてしまうため、登録前の入力規制で制限をかけたいのですが、

IsDate("0001/01/01") を書いても、trueが返ってきてしまいます。
0001/01/01は不正な日付とはみなされないのでしょうか?

また、このような場合はどうやって規制をかけたらよいでしょうか?


アドバイス、お待ちしております。
引用返信 編集キー/
■8286 / inTopicNo.2)  Re[1]: VB.NETの日付について
□投稿者/ 魔界の仮面弁士 (433回)-(2007/09/27(Thu) 11:36:08)
No8279 (ナカムラ さん) に返信
> 日付を入力するテキストボックスは、書式設定をして「2007/09/03」の形で入力できるようになっています。
書式設定した DateTimePicker では駄目ですか?
入力可能な日付範囲も制限できますし、結果も(文字列ではなく)日付型で得られますよ。

> このとき、「0001/01/01」などのありえない日付を入力すると、
西暦元年の1月1日、ですよね。

SQL Server の DATETIME は、1753年1月1日〜9999年12月31日(3.33 ミリ秒精度)ですが、
.NET Framework の DateTime は、1年1月1日〜9999年12月31日(100 ナノ秒精度)です。

> IsDate("0001/01/01") を書いても、trueが返ってきてしまいます。
> 0001/01/01は不正な日付とはみなされないのでしょうか?
正常な日付と判断されます。
VB.NET の Date 型は、.NET Framework の System.DateTime 構造体と同じなので、
その仕様にしたがって、西暦1年の日付を表す日付として判断されます。

> また、このような場合はどうやって規制をかけたらよいでしょうか?
Date.TryParse で日付変換し、さらにその日付の範囲が、
目的の範囲内に収まっているかどうかをチェックするとか。
引用返信 編集キー/
■8295 / inTopicNo.3)  Re[2]: VB.NETの日付について
□投稿者/ ナカムラ (5回)-(2007/09/27(Thu) 13:27:56)
魔界の仮面弁士 様
回答ありがとうございます。
"SQL Server の DATETIME は、1753年1月1日〜9999年12月31日(3.33 ミリ秒精度)"
で制限をかけることで、無事解決いたしました。

丁寧な回答、真にありがとうございました。






No8286 (魔界の仮面弁士 さん) に返信
> ■No8279 (ナカムラ さん) に返信
>>日付を入力するテキストボックスは、書式設定をして「2007/09/03」の形で入力できるようになっています。
> 書式設定した DateTimePicker では駄目ですか?
> 入力可能な日付範囲も制限できますし、結果も(文字列ではなく)日付型で得られますよ。
>
>>このとき、「0001/01/01」などのありえない日付を入力すると、
> 西暦元年の1月1日、ですよね。
>
> SQL Server の DATETIME は、1753年1月1日〜9999年12月31日(3.33 ミリ秒精度)ですが、
> .NET Framework の DateTime は、1年1月1日〜9999年12月31日(100 ナノ秒精度)です。
>
>>IsDate("0001/01/01") を書いても、trueが返ってきてしまいます。
>>0001/01/01は不正な日付とはみなされないのでしょうか?
> 正常な日付と判断されます。
> VB.NET の Date 型は、.NET Framework の System.DateTime 構造体と同じなので、
> その仕様にしたがって、西暦1年の日付を表す日付として判断されます。
>
>>また、このような場合はどうやって規制をかけたらよいでしょうか?
> Date.TryParse で日付変換し、さらにその日付の範囲が、
> 目的の範囲内に収まっているかどうかをチェックするとか。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -