こんにちは
UiPath Studio 2024.10.4Community editionのユーザです。
dtに1行目を追加したいです。
Invoke methodアクティビティでInsertATメソッドを使う方法は知っていますが、Community Editionのバグでこの方法は使えないため、他の方法があればご教示ください。
こんにちは
UiPath Studio 2024.10.4Community editionのユーザです。
dtに1行目を追加したいです。
Invoke methodアクティビティでInsertATメソッドを使う方法は知っていますが、Community Editionのバグでこの方法は使えないため、他の方法があればご教示ください。
Hi @gorby
1. Build DataTable (New Table)
Output: newDT
Action: Create a new DataTable (newDT) with the same columns as the original DataTable (dt).
2. Add Data Row
ArrayRow: { "Value1", "Value2", "Value3"} (your values for the first row)
DataTable: newDT
3. Merge Data Table
Source: dt (original DataTable)
Destination: newDT
Or
By using Invoke Code activity
Regards,
おそらく、質問の内容としては以下のような状況を想定しています。
追加元のデータテーブル(dt_Src)と追加先のデータテーブル(dt_Dst)の2つがあります。
追加元の特定のデータ行(dr_Src)を、追加先のデータテーブル(dt_Dst)の0行目(最初の行)に挿入したいという内容だと思われます。
InvokeCodeを使用して、dt_SrcのDataRowをdt_Dstの0行目(最初の行)に追加する方法のサンプルコードを以下に示します。
dt_InvokeCodeInsertAt.xaml (13.4 KB)
InvokeCodeの中身
’ dt_Dstに新しいDataRowを作成
Dim dr_New As DataRow = dt_Dst.NewRow()’ ItemArrayでdr_Srcの値をコピー
dr_New.ItemArray = dr_Src.ItemArray’ コピーした行をdt_Dstの最初の位置に挿入
dt_Dst.Rows.InsertAt(dr_New, 0)
引数は以下のとおりです。
どうぞ、よろしくお願いします。
新規作成したDataRowを別のdtの1行目に挿入する構文はこう書くのですね。。
Invoke Codeアクティビティを使わなくても代入文で行けそうです。ありがとうございました。
DataRowCollection.InsertAtメソッドは戻り値がありませんので、代入アクティビティでは使えないと思います。最初のPOSTに書かれています通り通常はInvoke Methodを使いますが、これが使えないときのワークアラウンドは、既に出ていますがInvokeCodeを使う例
あるいは、一旦DataRowにばらしてから、Concatメソッド等で組み立てなおす方法が考えられます。
dt = dt.AsEnumerable.Take(pos).Concat({nrow}).Concat(dt.AsEnumerable.TakeLast(dt.RowCount-pos)).CopyToDataTable()
上記の例は3番目に挿入しています。
サンプル
Sample20240916-3a.zip (3.3 KB)
確認です。
dr_NewRow=dt.NewRow
でdr_NewRowを新規作成して
dt.Rows.InsertAt(dr_NewRow, 0)
でdr_NewRowをdtの1番目に挿入することはできませんか?
dt.Rows.InsertAt(dr_NewRow, 0)
でdr_NewRowをdtの1番目に挿入することはできませんか?
です。
InvokeMethodやInvokeCodeを使えば可能です。
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.