初めまして。
2つのexcelからデータテーブルを作りました。dt1,dt2としたら、
dt1 には”ID"”Code"のColumnがあり、dt2には、”ID",”Code"、”name"があります。
dt1が正しいデータを持っているデータテーブルなので、dt1を元に、dt2をupdateもしくはmergeしたいですが、私が使っているuipathにはjoin data table activityがありません。
また、forumにある様々な方法で試してみましたが、エラーが発生し、失敗しました。
参考に、実現したいものをクエリーで作成してみました。
急いでいるので、だれか助けてください。
<参考>
Update dt2
Set ID = (Select ID From dt1 where dt2.code=dt1.code
Insert
Inset Into dt2 (ID,Code)
Select ID,Code From dt1 where dt2.code != dt1.code
balupad14
(Balamurugan)
December 13, 2018, 2:25pm
2
Hi @30ab42842da83aef823e ,
This will help you to fix you problem.
UiPath.Core.Activities.JoinDataTables Combines rows from two tables by using values common to each other, according to a Join rule, which is specified in the JoinType property. Properties Common DisplayName - The display name of the activity. Input...
Make sure that you have the below version or higher.
https://www.uipath.com/product/release-notes/uipath-v2018.3.1
Regards
Balamurugan.S
Hi, @balupad14 thank you so much for your reply,
but I am not able to use the 2018.3 version.
What could I do in this case?
1 Like
balupad14
(Balamurugan)
December 13, 2018, 2:31pm
4
Hi @30ab42842da83aef823e ,
It may help you.
Trevor Napier
June 27, 2016 21:44 NONE
So I know going through VB/C# you can use LINQ to join two tables IE
Dim query = From tl1 In InputTableOne.AsEnumerable() _
Join tl2 In InputTableTwo.AsEnumerable() _
On tl1.Field(Of Integer)(“Customer_ID”) Equals _
tl2.Field(Of Integer)(“Customer_ID”) _
Select New With _
{ _
.ID = tl1.Field(Of Integer)(“Customer_ID”), _
.Customer_Name = tl1.Field(Of String)(“Customer_Name”), _
.Order_ID = tl2.Field(Of Integer)(“Order_ID”), _
.Order_Item = tl2.…
Regards
Balamurugan.S
kyd_has
December 14, 2018, 6:38am
5
LINQでやるなら
result = From tl1 In dt1.AsEnumerable _
From tl2 In dt2.AsEnumerable.Where(Function(m) m.Field(Of String)("code") = tl1.Field(Of String)("code")).DefaultIfEmpty() _
Select New With _
{ _
.id = tl1!id, _
.code = tl1!code, _
.name = If(tl2 Is Nothing, "", tl2!name) _
}
で大丈夫だと思いますが、結果がIEnumerableになってしまいます。
※結果をどう使いたいか次第ですが、結果をループで処理するならこれでもよいのですが。。
ここは泥臭いかもしれませんが、ループで処理した方がメンテするのも楽かと思います。
※私ならそうします。
fourmで以前教えて頂いたexcel串刺し計算に関してです。
複数のファイルの読み込み各cellを足し算していくものです。
WFは、
1 計算対象となるexcelを指定フォルダに保存
2 assign :指定フォルダからファイルを読み込む
targetlFiles = IO.Directory.GetFiles(VpathName + VSubPath, “*.xlsx”)
targetlFilesの型はstring
3 for each でexcelファイルを1件ずつ読む
4 excel appliationで順番に読む
5 for eachでシートを読む for each sheetname in WB02.GetSheets()
6 この後の処理は
5列31行のデータ合計151回
read cell でシート名とcellを指定
null値の確認
if String.IsNullOrEmpty(vc03) or String.IsNullOrWhiteSpace(vc03)
else
assgin VC03_int = Decimal.Pars…
が参考になるのでは。
1 Like