RowFilter で日時を条件に DataView から行選択・・・でハマった(^^;

VB.NET の話。

最終的にソートをしたいので、DataSet から

Dim dv As DataView = ds.hoge_table.DefaultView

という具合に DataView を作成し、その中からある日時のデータ(行)だけ抜き出そうとした。
抜き出した後にソートしたいわけね。

具体的には、send_time というカラムに 2014/09/03 17:51:29 と入っている行を抜く。

そこで、

dv.RowFilter = "send_time=#" & hoge_time & "#"

としてみたが、抜き出した行数 0 なのである。(hoge_time 変数には 2014/09/03 17:51:29 という時間が DateTime 型で格納されている)

イミディエイトウィンドウで RowFilter の内容と、データを(試しに200件目のデータを)確認すると、

?dv.RowFilter.ToString
"send_time=#2014/09/03 17:51:29#"
?ds.hoge(200)(68).ToString
"2014/09/03 17:51:29"

と、どっちも 2014/09/03 17:51:29 やないけ!!?
なんで抜けんの?

・・・と少々ハマったが、どうやら DataSet に入っている日時はミリ秒まで格納されているらしい。
ToString では表示されないけど。

なので、秒までの時間でマッチングさせようとすると、

dv.RowFilter = "send_time >= #" & hoge_time.ToString & ".00000# Or send_time <= #" & hoge_time.ToString & ".99999#"

としないといけないようだ。
これで、RowFilter は、

?dv.RowFilter.ToString
"send_time >= #2014/09/03 17:51:29.00000# Or send_time <= #2014/09/03 17:51:29.99999#"

こうなって、無事マッチングした行が抜き出せたのである。

面倒くせぇ~!!(^^;

なんか、他に方法があるのかもしれないが、結局見つけ出せず。
「もっとスマートな方法があるぜ!」という .NET マスターは、ぜひここにコメントを!(笑)

トラックバック(0)

このブログ記事を参照しているブログ一覧: RowFilter で日時を条件に DataView から行選択・・・でハマった(^^;

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/3089

コメントする

このブログ記事について

このページは、shinodaが2014年9月 3日 22:00に書いたブログ記事です。

ひとつ前のブログ記事は「いや、俺たちはJRに迷惑なんかかけてねえよ!・・・という話」です。

次のブログ記事は「VB.NET で、文字列をバイト数指定でぶった切る」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら