gorby
(gorby)
1
こんにちは
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)
Yoichi
(Yoichi)
2
この式の箇所にブレイクポイントを設定して、ローカルパネル等を使い入力が想定通りかの確認
想定通りでは無いのであれば、その原因を探ってみてください
なお異なるDataTableから抽出したDataRowを束にしても一括ではDataTableには変換できませんので、標題のことが目的であるのでしたら、このアプローチはあまり良くないように思えます。
gorby
(gorby)
3
それではどのようなアプローチがお勧めでしょうか。いうまでもなく、積み上げるDataRowはすべて同じフォーマットです。
Yoichi
(Yoichi)
4
1レコード単位で最終のDataTableに挿入する(AddDataRowアクティビティやImportRowメソッドを使って)か、
LINQ等をつかって最終のDataTableに属するDataRowに変換・コレクションとして保持→最後にDataTableに変換する、
あたりでしょうか。
gorby
(gorby)
5
ご指示の箇所(下記)にブレイクポイントを設定して、ステップインで実行してみたら、dr_merged=dr_merged.Concat(dt_merged.AsEnumerable)
最後にdt_mergedがどうして期待通りにならないかはわかりませんが、
dr_mergedは期待通りにDataRowが積みあがっていることが判明しました。dr_mergedを最後にDataTableに変換する構文があればご教示下さい。
dr_mergedの型はIEnumerable”<”DataRow”>”です。
Yoichi
(Yoichi)
6
結果を格納するDataTableは定義していますでしょうか?そちらも共有ください。
gorby
(gorby)
7
社内ポリシーで職場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
Yoichi
(Yoichi)
8
いえ、そうではなく、結果のDataTableについてスキーマが定義されていて、変数名も決まっているようでしたら、その変数名を共有ください。
gorby
(gorby)
9
下記になります。
str_市, str_読み, str_人口, str_面積, str_人口密度, str_施行日
Yoichi
(Yoichi)
10
結果を格納するDataTableの変数名をご教示ください。(スキーマ=構造を定義済みである必要があります。)
決まっていないなら、たとえば1つめのDataRowが属するDataTableと同じ構造で良いならそのように回答ください。
gorby
(gorby)
11
dt_merged
となります。。。。。。。。。。。
Yoichi
(Yoichi)
12
既にdt_mergedは既出で目的があって使っていると思いますので、
保守性などを考慮し、一旦ここでは結果はdtResult に格納するものとします。
dtResult = dt_merged.Clone()
としておいて
dtResult = dr_merged.Select(Function(r) dtResult.LoadDataRow(r.ItemArray,False)).CopyToDataTable()
gorby
(gorby)
13
こんにちは。
ワークフローを実行したら、作成いただいた構文の部分で
" 入力配列がこのテーブルの列数より長い値です。"
というエラーが出ます。原因分かりますでしょうか。
Build DataTableで列名を定義しているわけでもないのにこのエラーが出るのは不思議です。
Yoichi
(Yoichi)
14
エラー内容の通りで、読み込んだデータの中で、列数が多いものがあるということかと思います。まずは読み込みデータを確認ください。
system
(system)
Closed
16
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.