- - PR -
datetimeの比較について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-16 16:03
たびたび、質問があり、すいません。
日付の比較について教えていただきたいのですが、 以前は、 データセットの日付の列に データセット名.Tables("テーブル名").Columns("hiduke1").Expression = "ISNULL(hiduke,#1900/01/01#)" としてNullを1900/01/01として扱い、 Dim hiduke3 As DateTime = Format(DTPstart.Value, "yyyy/MM/dd") Dim hiduke2 As DateTime = Format(DTPfinish.Value, "yyyy/MM/dd") Dim i As Integer For i = 0 To データセット名.テーブル名.Rows.Count - 1 Step 1 If データセット名.テーブル名.Rows(i)("hiduke1") >= hiduke1 And データセット名.Tsdaidata.Rows(i)("hiduke1") <= hiduke2 Then データセット名.テーブル名.Rows(i)("shuukei2") = False Else データセット名.テーブル名.Rows(i)("shuukei2") = True End If Next として、shuukei2のチェックボックス(Boolean)をON.OFFしてきました。 (DTPstartとDTfinishはデイトタイムピッカーです) が ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.ja/cpref2/html/T_System_DateTime.htm これを読むと、このままでは比較<=や>=ができないです。 実際にできませんでした。 .NET Framework2.0では、どのように記述を変えればよろしいのでしょうか? よく読みましたが、わかりません。よろしくお願い致します。 | ||||
|
投稿日時: 2006-02-16 16:17
両方Datetimeにして CompareTo を使います。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatetimeclasscomparetotopic.asp | ||||
|
投稿日時: 2006-02-16 16:18
諸農です。
比較対象の両方がDateTime型のオブジェクトであるなら DateTime.CompareTo()で比較できると思います。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2006-02-16 16:19
暗黙の型変換があるくらいなので、その類なんでしょうか。 投稿内容からは比較しようとしている型がわからないんですが... 日付は DateTime のままで比較した方が良いでしょう。 DateTime 構造体は IComparable インターフェイスが実装されているので、 そのままで安全に比較できると思いますけどね。(型が違えば別問題) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-16 18:15
じゃんぬねっと様、
System.InvalidCastException はハンドルされませんでした。 Dim hiduke1 As DateTime = DTPstart.Value Dim hiduke2 As DateTime = DTPfinish.Value にしてみましたが、できませんでした。 データセット名.Tables("テーブル名").Columns("hiduke1").Expression = "ISNULLの hiduke1もSystem.DateTimeです。エラー内容は Message="演算子 '>=' は 型 'DBNull' と 型 'Date' に対して定義されていません。" とでます。 DateTime.CompareTo()を勉強して挑戦してみます。 | ||||
|
投稿日時: 2006-02-16 18:37
DBNull チェックしましょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-16 19:26
じゃんぬねっと様
先ほどのコードの中の データセット名.Tables("テーブル名").Columns("hiduke1").Expression = "ISNULL(hiduke,#1900/01/01#)" でNULLのチェックにならないですか? Nullはあるので、そこを別の日付に置き換えと考えているのですが・・・ | ||||
|
投稿日時: 2006-02-16 19:39
CompareToで無事できました。ありがとうございます。
|
1