繰り返し(各行)アクティビティで行削除する方法

データテーブルの「繰り返し(各行)」アクティビティ中で
条件にマッチした行を削除したいと考えています。
この場合、普通に1行目(昇順)からループを回して問題ないのでしょうか。
読込中の行を削除しても、問題なく次の行を読込み粛々と処理が進むのでしょうか?
直感的に最終行(降順)から処理をすれば問題なさそうなのですが、そんなことが出来るのでしょうか?
ご指導よろしくお願いいたします。

@196006

おっしゃる通り、途中で行を削除するのは問題が発生すると思います。
データテーブルを最終行から行うことで可能です。
ただ、実装したいことを考えると、データテーブルをフィルタリングでも可能かと思うのですが
いかがでしょうか?

もし複雑なことをしたくて後ろからループさせるならinvoke codeで記述すると思います。
For i As Integer = dt.Rows.Count -1 To 0 Step -1
実行したい処理
Next
のような感じで後ろから回すことも可能です。

その方法か、「繰り返し (後判定)」で実装ですね。

添え字にデータテーブルの行数(DT.Rows.Count) - 1を設定し、
「繰り返し (後判定)」アクティビティのConditionで、**Not 添え字.Equals(-1)**まで処理を行わせる。
「繰り返し (後判定)」アクティビティのBodyの中で、DT.Rows(添え字).Item(列名)など参照し、
行削除条件を満たしたら、「データ行を削除」アクティビティで削除。
その後代入アクティビティで、添え字=添え字 - 1として減算

★添え字操作とか、Condition条件の記述はウロですので、実装して調整してみてください<m(__)m>

繰り返し_各行_アクティビティで行削除する方法.zip (11.8 キロバイト)

ytakayama様
ありがとうございます。
やはりそうですか。
勉強させていただきました。

1 Like

HANACCHI様
いつもご指導ありがとうございます。
連続した2行の特定カラムを比較して、行削除といった内容なのでフィルタが難しいと思いました。
「繰り返し」を使うことになり、ご指導いただいた方法を参考にさせていただきました。
希望の動作をさせることが出来ました。

1 Like

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