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 マスターは、ぜひここにコメントを!(笑)
コメントする