# 複数ファイルのDataRowを積みあげてDataTableを作成したい

**URL:** <https://forum.uipath.com/t/datarow-datatable/775049>\
**Category:** フォーラム\
**Created:** [October 23, 2024, 5:56am UTC](https://forum.uipath.com/t/datarow-datatable/775049 "2024-10-23T05:56:43Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![gorby](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/gorby/32/543563_2.png) [@gorby](https://forum.uipath.com/u/gorby)\
**Post date:** [October 23, 2024, 5:56am UTC](https://forum.uipath.com/t/datarow-datatable/775049/1 "2024-10-23T05:56:44Z")

</div>

こんにちは  
UiPath Studio EnterPrise Edition 2022.4.3ユーザです。

`dt_merged=New Datatable()`

でDataTableインスタンス生成後、

`dr_merged=Enumerable.Empty(Of DataRow)`

でDataRowインスタンス生成しました。

その後、ForEachFileXアクティビティの中で下記の構文を繰り返して、dr\_mergedを積み上げてdt\_mergedを作成したつもりでしたが、dt\_mergedには一部のファイルのdr\_mergedしか入っていませんでした。いうまでもなくdt\_mergedのインスタンス生成は最初の1回しかやっていません。どうしてでしょうか。

`dr_merged=dr_merged.Concat(dt_merged.AsEnumerable)`

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [October 23, 2024, 6:29am UTC](https://forum.uipath.com/t/datarow-datatable/775049/2 "2024-10-23T06:29:03Z")

</div>

> [@gorby](#):
>
> dr\_merged=dr\_merged.Concat(dt\_merged.AsEnumerable)

この式の箇所にブレイクポイントを設定して、ローカルパネル等を使い入力が想定通りかの確認  
想定通りでは無いのであれば、その原因を探ってみてください

なお異なるDataTableから抽出したDataRowを束にしても一括ではDataTableには変換できませんので、標題のことが目的であるのでしたら、このアプローチはあまり良くないように思えます。

---

<div class="post-metadata">

**Author:** ![gorby](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/gorby/32/543563_2.png) [@gorby](https://forum.uipath.com/u/gorby)\
**Post date:** [October 23, 2024, 6:33am UTC](https://forum.uipath.com/t/datarow-datatable/775049/3 "2024-10-23T06:33:20Z")

</div>

> [@Yoichi](#):
>
> 異なるDataTableから抽出したDataRowを束にしても一括ではDataTableには変換できません

それではどのようなアプローチがお勧めでしょうか。いうまでもなく、積み上げるDataRowはすべて同じフォーマットです。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [October 23, 2024, 6:39am UTC](https://forum.uipath.com/t/datarow-datatable/775049/4 "2024-10-23T06:39:01Z")

</div>

1レコード単位で最終のDataTableに挿入する(AddDataRowアクティビティやImportRowメソッドを使って)か、  
LINQ等をつかって最終のDataTableに属するDataRowに変換・コレクションとして保持→最後にDataTableに変換する、  
あたりでしょうか。

---

<div class="post-metadata">

**Author:** ![gorby](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/gorby/32/543563_2.png) [@gorby](https://forum.uipath.com/u/gorby)\
**Post date:** [October 23, 2024, 6:53am UTC](https://forum.uipath.com/t/datarow-datatable/775049/5 "2024-10-23T06:53:19Z")

</div>

> [@Yoichi](#):
>
> この式の箇所にブレイクポイントを設定して、ロ

ご指示の箇所（下記）にブレイクポイントを設定して、ステップインで実行してみたら、`dr_merged=dr_merged.Concat(dt_merged.AsEnumerable)`  
最後にdt\_mergedがどうして期待通りにならないかはわかりませんが、  
dr\_mergedは期待通りにDataRowが積みあがっていることが判明しました。dr\_mergedを最後にDataTableに変換する構文があればご教示下さい。  
dr\_mergedの型はIEnumerable”\<”DataRow”\>”です。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [October 23, 2024, 7:08am UTC](https://forum.uipath.com/t/datarow-datatable/775049/6 "2024-10-23T07:08:00Z")

</div>

結果を格納するDataTableは定義していますでしょうか？そちらも共有ください。

---

<div class="post-metadata">

**Author:** ![gorby](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/gorby/32/543563_2.png) [@gorby](https://forum.uipath.com/u/gorby)\
**Post date:** [October 23, 2024, 7:15am UTC](https://forum.uipath.com/t/datarow-datatable/775049/7 "2024-10-23T07:15:20Z")

</div>

> [@Yoichi](#):
>
> 結果を格納するDataTableは定

社内ポリシーで職場PCから画像をUpできないので、文字列での共有となります。変数はすべてObject型です。

市 読み 人口 面積 人口密度 施行日  
銚子市 ちょうしし 54,417 84.12 646.9 1933.2.11  
市川市 いちかわし 497,394 57.44 8,659.37 1934.11.3  
船橋市 ふなばしし 647,105 85.62 7,557.87 1937.4.1  
館山市 たてやまし 43,586 110.05 396.06 1939.11.3  
木更津市 きさらづし 136,600 138.9 983.44 1942.11.3

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [October 23, 2024, 7:19am UTC](https://forum.uipath.com/t/datarow-datatable/775049/8 "2024-10-23T07:19:04Z")

</div>

いえ、そうではなく、結果のDataTableについてスキーマが定義されていて、変数名も決まっているようでしたら、その変数名を共有ください。

---

<div class="post-metadata">

**Author:** ![gorby](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/gorby/32/543563_2.png) [@gorby](https://forum.uipath.com/u/gorby)\
**Post date:** [October 23, 2024, 7:21am UTC](https://forum.uipath.com/t/datarow-datatable/775049/9 "2024-10-23T07:21:41Z")

</div>

> [@Yoichi](#):
>
> 変数名

下記になります。

str\_市, str\_読み, str\_人口, str\_面積, str\_人口密度, str\_施行日

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [October 23, 2024, 7:24am UTC](https://forum.uipath.com/t/datarow-datatable/775049/10 "2024-10-23T07:24:56Z")

</div>

結果を格納するDataTableの変数名をご教示ください。（スキーマ＝構造を定義済みである必要があります。）  
決まっていないなら、たとえば１つめのDataRowが属するDataTableと同じ構造で良いならそのように回答ください。

---

<div class="post-metadata">

**Author:** ![gorby](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/gorby/32/543563_2.png) [@gorby](https://forum.uipath.com/u/gorby)\
**Post date:** [October 23, 2024, 7:33am UTC](https://forum.uipath.com/t/datarow-datatable/775049/11 "2024-10-23T07:33:43Z")

</div>

> [@Yoichi](#):
>
> 結果を格納するDataTableの変数名

`dt_merged`となります。。。。。。。。。。。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [October 23, 2024, 7:51am UTC](https://forum.uipath.com/t/datarow-datatable/775049/12 "2024-10-23T07:51:11Z")

</div>

既にdt\_mergedは既出で目的があって使っていると思いますので、  
保守性などを考慮し、一旦ここでは結果はdtResult に格納するものとします。

```
dtResult = dt_merged.Clone()

```

としておいて

```
dtResult = dr_merged.Select(Function(r) dtResult.LoadDataRow(r.ItemArray,False)).CopyToDataTable()

```

---

<div class="post-metadata">

**Author:** ![gorby](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/gorby/32/543563_2.png) [@gorby](https://forum.uipath.com/u/gorby)\
**Post date:** [October 24, 2024, 5:18am UTC](https://forum.uipath.com/t/datarow-datatable/775049/13 "2024-10-24T05:18:32Z")

</div>

> [@Yoichi](#):
>
> `dtResult = dr_merged.Select(Function(r) `

こんにちは。  
ワークフローを実行したら、作成いただいた構文の部分で  
" 入力配列がこのテーブルの列数より長い値です。"

というエラーが出ます。原因分かりますでしょうか。

Build DataTableで列名を定義しているわけでもないのにこのエラーが出るのは不思議です。

---

<div class="post-metadata">

**Author:** ![Yoichi](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/yoichi/32/523754_2.png) [@Yoichi](https://forum.uipath.com/u/Yoichi)\
**Post date:** [October 24, 2024, 5:21am UTC](https://forum.uipath.com/t/datarow-datatable/775049/14 "2024-10-24T05:21:32Z")

</div>

> [@gorby](#):
>
> " 入力配列がこのテーブルの列数より長い値です。"
> 
> というエラーが出ます。原因分かりますでしょうか。

エラー内容の通りで、読み込んだデータの中で、列数が多いものがあるということかと思います。まずは読み込みデータを確認ください。

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/system/32/182466_2.png) [@system](https://forum.uipath.com/u/system)\
**Post date:** [October 27, 2024, 5:47am UTC](https://forum.uipath.com/t/datarow-datatable/775049/16 "2024-10-27T05:47:11Z")

</div>

Closed on October 27, 2024, 5:47am UTC

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