「データテーブルをフィルタリング」のContainsについて

フィルタリングの”操作”にあるcontainsは"含まれる"という意味ではないのでしょうか?

まず、やりたいことは読み込んだデータの中からフィルタリングアクティビティを使って来月のデータだけを取得したいです。

セルに入っている情報は、「2019/12/31」や「2020/01/15」などで、日付はバラバラなので「2020/01」までが含まれれば対象としたいです。

しかし、

列名 contains DateAdd(DateInterval.Month, 1, DateTime.Now).ToString(“yyyy/MM”)

このようにフィルタリングに指定すると、データがなくなってしまいます。
どうしたら2020/01/01~2020/01/31までのデータを取得できるようになりますでしょうか。

対象とする列の属性がDateTime型と認識されているのであれば、文字列としての評価はむつかしいと思いますので、該当日付の朔日と晦日を求めて、サンドイッチした評価でフィルタ掛けてあげると、あとあとの拡張性もよくなると思います。

ありがとうございます。

ちなみに、このフィルタリングでは
2020/1/1 <= 日付 >= 2020/1/31
このような指定をしたい場合、どのように設定したら良いでしょうか。

starts withやends withがあてはまりますか?

image

最小日付は、Y,M,1で求められますね?
最大日付は、YMD.AddMonths(1).AddDays(-1)で求められますね。
⇒翌月の一日前って事で(^^♪

「代入」を使用して、dtmMinDateTime=new DateTime(2019,1,1)最小日付を設定します。
同じく dtmMaxDateTime=new DateTime(2019,1,31)最大日付を設定します。

フィリングで 日付 >= dtmMinDateTime And
日付 <= dtmMaxDateatimeを設定すれば、
対象データ取得できます。

ありがとうございます。
もともと来月の1日~月末を求めたいのですが、

DateAdd(DateInterval.Month, 1, DateTime.Now)

ここにどう合体させれば良いでしょうか。
重ねての質問になってしまいすみません。

DateTime.Now.addmonth(1)で来月取得できます。

こんにちは

データテーブルをフィルタリングアクティビティって日付のフィルタリングうまくいかないような....

上記無理そうなら、代入アクティビティで以下お試しください。

 dt = dt.Select("[列名] >= #"+new DateTime(now.AddMonths(1).Year,now.AddMonths(1).Month,1).ToString("yyyy/MM/dd")+"# and [列名] < #"+new Datetime(now.AddMonths(2).Year,now.AddMonths(2).Month,1).ToString("yyyy/MM/dd")+"#").CopyToDataTable
1 Like

最小日付 = New DateTime(日付.Year, 日付.Month, 1)
最大日付 = 最小日付.AddMonths(1).AddDays(-1)

こんな感じですね。

ありがとうございます。
Addmonthsを使うと、「GenericValueのメンバーではありません」というようなエラーになってしまいます。
Datetime()の中であれば使えているような気がするのですが、、

※追記※
逆にもともとデータに入っている日付を取得してみると、

09/30/2019 00:00:00

このようなデータになっていました。
このため「2020/1/31」などフィルターで指定すると該当がなくなってしまうのかもと思いました。

となると、一度datetime.parseして日付型に変換して…

それと、yyyy/mm/didになっていないのは方言で、ロボットの動作環境が日本語になっていないからです。ですので日付型の世界では、正しくフィルターされますよ

1 Like

なるほどですね。
ありがとうございます。

解決したのですが、、、
「.ToString」をつけてしまっていたことが原因で、消したことでフィルタリングに成功しました、、。

色々と勉強をさせていただきありがとうございました!!

苦労しましたね!この苦労は忘れないでしょうから、次に繋げていきましょう!!

まずはよかった!!

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.