gorby
(Extraordinary UiPath Forum Contributor 2024)
September 24, 2022, 9:45am
1
UiPath初心者です。
まずは添付画像をご覧ください。
DataTable変数「dtインプットデータ」を配列「arobjインプットデータ」に代入していますが、警告メッセージを見ると、UiPathは前者をObject変数と勘違いしているようです。
代入アクティビティの右辺で、dtインプットデータ.Rows(0).ItemArray
としているので、dtインプットデータ.Rows(0).ItemArray 全体でObject変数になってしまったのでしょうか?
この警告メッセージが出ないようにする方法をご教示ください。
You are trying to get the datarow right? @gorby
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
September 24, 2022, 10:36am
3
勘違いではなく、そのように設計されています。これは UiPath ではなく、.NET の仕様です。
(上記のページについて補足します。
DataTableから特定の行を選択したもの(dtインプットデータ.Rows(0)
)は、System.Data.DataRow
型になります。
この型が持つ情報(プロパティ)が .ItemArray
で、これが Object[]
型を返すことが書かれています)
(もう1点、補足します。
なぜObject[]
型なのかというと、DataTableの各列には任意の型を指定できるため、.ItemArray では元のデータがどのような型であってもいいように、すべてのデータの基本の型たるObject
型の配列になっているのだと思います)
arobjインプットデータ
を Object[]
型 にすること
dtインプットデータ.Rows(0).ItemArray.Select(Function(i) i.ToString).ToArray
単純に解決するのであれば、上記いずれかになると思います。
ただ、これらのデータを使って何をしたいのか、によってベターな解決策が見つかると思いますので、もう少し「実現したいこと」の視点から情報をいただければ幸いです。
@gorby
Your arobjインプットデータ:
is assigned as a string, but the dt.row(0).itemarray
is in array
so kindly change the variable type of arobjインプットデータ:
to an array.
gorby
(Extraordinary UiPath Forum Contributor 2024)
September 24, 2022, 11:28am
5
cheez_RPA:
ただ、これらのデータを使って何をしたいのか、
やりたいことは、下記の通りです。他人が作成したワークフローなので正確には理解していないのですが、
1.添付画像のExcelシート全体をDataTable変数「dtインプットデータ」にまるごと取得したあと、
arobjインプットデータカラム=dtインプットデータ.Rows(0).ItemArray
で1行目の”BMI計算” ”2都市間の所要時間”などの文字列をarobjインプットデータカラム(型はObject変数にしました)に取得します。
2.次に、おそらく2行目の”身長” ”体重”などのデータ項目名を
strカラム名=split(arobjインプットデータカラム(0).ToString,“_”)(0)
でstrカラム名に取得します。
さて、「arobjインプットデータカラム」をObject変数にしたら、strカラム名=split(arobjインプットデータカラム(0).ToString,“_”)(0)で、添付画像の警告メッセージが発生しました。
おそらく、「arobjインプットデータカラム」をObject型から配列に変更しなければならないと思いますが、変更方法をご教示ください。
what is the data type of that variable str… you shown if it is array of string
Remove the (0) from the right side of the value
gorby
(Extraordinary UiPath Forum Contributor 2024)
September 24, 2022, 11:51am
7
Correct!
variable str is exactly String.
However, situation did not change even if I removed (0) from right side.
Change Left side variable type into array