トップ回答者
dataview.rowfilterでdatetime型が正しくフィルタされない。

質問
-
Dim DTview as new dataview(me.dataset1.table("tablename"))
DTview.rowfilter = "CreationDay = #" & RefixDate & "#"
上記のフィルタで、DTview.Count が 0 に、なります。
ちなみに、
DTview.rowfilter = "CreationDay = #" & RefixDate.tostring("G") & "#"
としましたが、だめでした。
Debug.WriteLine(DTview.item(i).item("CreationDay ") & "," & RefixDate.tostring("G") )
の結果が以下の通りです。
2006/06/20 14:05:05,2006/06/20 14:05:05
2006/06/20 14:05:05,2006/06/20 14:05:05
2006/06/20 14:05:05,2006/06/20 14:05:05
2006/06/20 14:06:19,2006/06/20 14:05:05
2006/06/20 14:05:05,2006/06/20 14:05:05
2006/06/20 14:05:05,2006/06/20 14:05:05
2006/06/20 14:05:05,2006/06/20 14:05:05
2006/06/20 14:05:05,2006/06/20 14:05:05
2006/06/20 14:05:05,2006/06/20 14:05:05ちなみに、開発環境はVS2002です。
RowFilterでは、だめなのでしょうか?
よろしく、お願いします。
回答
-
trapemiya さんからの引用 DTview.rowfilter = "CreationDay >= #2006/06/20 14:05:05.00000# and CreationDay <= #2006/06/20 14:05:05.99999#"
trapemiyaさんありがとうございます。
上記の情報を元に、以下の様に書き換えた所、正常に取得出来ました。
DTview.RowFilter = "CreationDay >= #" & RefixDate.ToString("G") & ".00000" & "# " _
& "OR CreationDay <= #" & RefixDate.ToString("G") & ".99999" & "# "ミリ秒以下は、必要が無いので、これで大丈夫です。
VB側で、Datetime.Now() を渡した所、確かに、ミリ秒は、みごとに、".000"でした。
YouGun さんからの引用 DTview.RowFilter = String.Format("CreationDay = '{0}'", RefixDate)
YouGunさん、情報が不足して、申し訳ありませんが、
この方法も、試しましたが、だめでした。
ちなみに、(')ではなくて、(#)を使用したのは、以下のURLの内容に、
http://www.microsoft.com/japan/msdn/columns/data/data06142001.asp
「日付にはシャープ記号 (#) が必要です。」
と、記入してある事を、優先しました。
すべての返信
-
>という事は、ミリ秒を、なくしたデータで、取り込むしか、方法は、無いのでしょうか?
そういう方法もありだと思いますが、手っ取り早くは、
DTview.rowfilter = "CreationDay >= #2006/06/20 14:05:05.00000# and CreationDay <= #2006/06/20 14:05:05.99999#"
のような感じでいいんじゃないかと思います。
#2006/06/20 14:05:05#は、#2006/06/20 14:05:05.00000#と同じになるんじゃないかと思いますが、明確にそれを記述している文書を見つけられませんでした。datetime 型と smalldatetime 型
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/tsqlref/ts_da-db_9xut.asp2.4.6 日付リテラル
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbls7/html/vblrfvbspec2_4_6.asp -
trapemiya さんからの引用 DTview.rowfilter = "CreationDay >= #2006/06/20 14:05:05.00000# and CreationDay <= #2006/06/20 14:05:05.99999#"
trapemiyaさんありがとうございます。
上記の情報を元に、以下の様に書き換えた所、正常に取得出来ました。
DTview.RowFilter = "CreationDay >= #" & RefixDate.ToString("G") & ".00000" & "# " _
& "OR CreationDay <= #" & RefixDate.ToString("G") & ".99999" & "# "ミリ秒以下は、必要が無いので、これで大丈夫です。
VB側で、Datetime.Now() を渡した所、確かに、ミリ秒は、みごとに、".000"でした。
YouGun さんからの引用 DTview.RowFilter = String.Format("CreationDay = '{0}'", RefixDate)
YouGunさん、情報が不足して、申し訳ありませんが、
この方法も、試しましたが、だめでした。
ちなみに、(')ではなくて、(#)を使用したのは、以下のURLの内容に、
http://www.microsoft.com/japan/msdn/columns/data/data06142001.asp
「日付にはシャープ記号 (#) が必要です。」
と、記入してある事を、優先しました。