Excel1行すべて空文字の場合は処理を1行分スキップしたい。

UiPath Studio 2023.6.1 Community Editionを利用中の初心者です。

ExcelからRead RangeXアクティビティでDataTableにデータ取得し、DataTableからDataRowを1件ずつ取り出して、Webページにデータ入力するWFを作成中です。
一部が隠れている代入文2つは下記の通りです。
※int_TransactionNumberの初期値は1です。

dr_TransactionItem = dt_TransactionData.Rows(int_TransactionNumber)
dr_TransactionItem = dt_TransactionData.Rows(int_TransactionNumber + 1)

Excel1行すべて空文字の場合はこのアルゴリズムで、1行分の処理をスキップしたいのですが、実現できますでしょうか?

@gorby

You condition shpuld be like this(in hope transactionnumber starts from 1…if it starts from 0 then in condition remove equals and in next statement remove -1)

Int_TransactionNumber <= dt_TransactionData.Rowcount

And on then side use dr_TransactionItem = dt_TransactionData.Rows(int_TransactionNumber-1) (if transactionnumber starts from 0 then remove -1)

And on else side use dr_Transactionitem = Nothing

Second if condition is not needed

Hope this helps

Cheers

1行がすべて空文字ということは、その行に含まれるすべてのセルの値を結合した文字列も空文字である、と推測して、下記のような条件式が組めるかと思います。

String.IsNullOrEmpty(String.Join("", dr_TransactionItem.AsEnumerable.Select(Function(c) c.ToString)))

※手元で確かめていないので誤りがあるかもしれませんがご容赦ください。

Hi, Thank you for your reply.
However, it seems you did not answer my question properly…
What I want to know is whether my algorithm is correct or not.
I imagined the next sentence could be used in case String.Empty are fully filled in one Excel line.
Am I correct?

dr_Transactionitem Is Nothing

Regards,
Gorby

回答ありがとうございます。
dr_Transactionitem Is Nothing
ではUiPathが"Excel 1行が空文字の場合"という認識をしてくれないのでしょうか?

@gorby

Your if condition will never go inside the assign when there is no row…so your assign is never failing…there is no point of having second if condition at all…

day your table has 3 rows…then your first if condition will be true for 3 times and your assign will assign each row and never the second if will be true because everytime there is a row…
4th time when it comes there the first if condition is false as transactionnumber is 4 and rowcount 3…so it wont move inside also…so effectively your second if condition is neevr executed becasue dr_transactionitem will never be empty

you can try creating a table with 2 rows and try assign with dt.Rows(2) and it would throw error …as rows are only two and index will be 0 or 1 and not 2

cheers

ご紹介いただいたコードを条件文に貼ってみましたが、コンパイルエラーとなりました。(添付画像参照)修正方法をご教示いただけますと助かります。

コードについては下記で動作するか試していただければと思います。

String.Join("", dr_TransactionItem.ItemArray.Select(Function(c) c.ToString))

上記コードですと、行が存在しないケース(ex. 10行しかないテーブルの11行目を指定した)でしたら判定されるかもしれませんが、今回のご要望は「行のデータは存在するが、その中身(値)となる各列が空文字である場合」を対象とされていると読みました。その場合、行は存在するので Nothing にはならないため、上記条件でご要望の分岐にならないかと思います。
お手間でなければ一度ご自身で、例示した条件のデータを作成した上でお試しいただくのがよろしいかと思います。

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