数値による条件の分岐について

こんにちは
現在UiPathで以下のような条件分岐を作成しようとしています。

変数X=0のとき処理A
0<変数X<10のとき処理B
変数X=10のとき処理C

しかしフロースイッチで上記条件を実装しようとしても
caseに0<X<10とは入れられません。
分岐先が少なければifを重ねれば可能ではあるのですが
分岐先が多い場合どのようにすべきでしょうか?

1 Like

こんにちは!

条件は次のとおりです。
X> 0かつX <10

お役に立てれば。 ありがとうございました!

1 Like

こんにちは。
回答ありがとうございます。

フロースイッチの場合、条件に「X>0」を設定するとエラーになってしまいます。
データ型などの問題でしょうか?

変数Xが整数型であることを確認してください。
それが文字列の場合は、これを使用できます。
Convert.ToInt32(X)> 0

1 Like

Int型にしてもフロースイッチのCaseに「>0」を入れると、
有効な値ではありませんとのエラーが出てしまいます。
どこか設定が誤っているかと思うのですが
お手数ですが簡単なサンプルは頂けないでしょうか?

先ほどアップしたロボットに誤謬があったので再送します。

以下ロボットはどうでしょうか? 見てみてください。
フロースイッチ_20190529.xaml (9.8 KB)

こんにちは

お送りいただいたロボットを拝見したのですが、
以下のような作りになっておりました。
X=1のとき処理A
X=10のとき処理B
それ以外の時処理C

やはり数値に対して範囲を指定した分岐はできないのでしょうか?

@basashi5
こんにちは
フロースイッチで各Caseに式を設定するのはやはり厳しいようですね。
範囲指定ではないですが、"or"を用いた分岐に対して以下のような回答があります。

美的センスの欠片もない方法で恐縮ですが…
・フロースイッチのTypeArgumentをStringに設定
・条件式に「(X=0).ToString + ((0<X) andalso (X<10)).ToString + (X=10).ToString」を設定
・各Caseに以下の通り入力
X=0 :TrueFalseFalse
0<X<10:FalseTrueFalse
X=10 :FalseFalseTrue

以上のようにすれば、フロースイッチひとつで複数の分岐式に対応できます
※視認性はご勘弁ください

もしくはInvoke CodeでVB.NetのSelect Caseを用いることで範囲の分岐は可能ですが、
その後別のUiPath処理にそのまま繋げられないのが難点ですね…

Select Codeで条件分岐
⇒各ケースのNoを返す(1,2,3等)
⇒フロースイッチで改めてケースNoを基に分岐

という方法ならUiPath処理に繋げることも可能かと思われます。

ご参考になれば幸いです。

3 Likes

こちらサンプルです
Switch.xaml (19.7 KB)

こんにちは。私も以前同じような状況で、以下の方法で実装しました。

【1】Build Data Table
条件で使用するテーブルを予め作成する。

Start End Result
0 0 A
1 9 B
10 10 C

【2】上記のテーブルをFor each rowで回し、内部でIF判定する
If Start <= 変数X AND 変数X <= End
Then <Resultの値を保存しておく>
Break

【3】保存したResultの値をSwitchアクティビティで判定して分岐させる

一例ですがご参考になれば幸いです。

1 Like

nittobo5さん、akmariamさん
お2人のご回答を試したところどちらでも実現することができました。
結論としてはフロースイッチでは式を入れられないので
どうやってうまく代わりの処理を作るかというところになってしまうのですね。

丁寧なご回答ありがとうございました。

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