テーブルの並び替え

テーブルの並び替えは、テーブルの編集(更新)後では有効にならないのでしょうか?

例えば、以下のExcelデータを取込、データ行分を繰り返しながらテーブルにセットします。
セットが完了後、そのセットした項目を並べ替え(昇順)にします。
しかし昇順にならず、最初のテーブルの並びのままです。

例)
(1)Excel取込後、テーブルに出力
image

(2)「金額」の列に値セット
テーブルのイメージ
image

(3)「金額」の項目で昇順にしたい。
”テーブル並び替え” を使って項目名:”金額”、並び順:”昇順” に設定。

(4)テーブルの出力 Excelで出力した結果
image
上記のように「金額」で昇順にならない。★NG

更に、上記Excelをテーブルに取込→テーブルの並び替え→テーブルの出力
にすると正しく並び替えられた結果になります。
どのように改善すべきでしょうか?

以上、よろしくお願い致します。

@OTSUKATO さん、

Sort Data Table を使ってみてください。

ご参考のため
Ascending_table.zip (25.0 KB)

ご回答、誠にありがとうございます。

頂いたファイル(Main.xaml)並び替えの部分が、「このアクティビティは存在しないか、正常にロードできませんでした」となりエラーとなりました。
→バージョン違いかもしれません。

また、この部分を”データテーブルを並び替え”設定をしなおし、ファイルのパスを変更して実行したら、Wite Rangeで「オブジェクト参照がオブジェクトインスタンスに設定されていません。」でエラーとなりました。
→原因不明。

もともとの質問です。
「入力ファイルの金額は空白でデータテーブルに保存します。
その後、金額に値設定を、この金額の項目を昇順し出力したい。」です。
入力ファイルの取り込みはデータテーブルに保存した後で、金額の値は、データテーブルへセットします。
並び替えは、もちろんデータテーブル内で行い、このデータテーブルをExcelで出力します。

並び替え方法は、Natapong様と同様の方法だと思われます。
*先頭に記載した、「このアクティビティは存在しないか、正常にロードできませんでした」となったため詳細はわかりかねます。

なぜ、並び替えができないのでしょうか?

以上、よろしくお願い致します。

OTSUKATO様のStudio versionは何でしょうか?

「オブジェクト参照がオブジェクトインスタンスに設定されていません。」を調査のため、 作成したWork flowを写真撮って、ここにご共有させていただいてもよろしいでしょうか。

こんにちは。

的外れでしたらすみません。
「テーブル並び替え」のプロパティで「出力」のデータテーブルを
設定してますでしょうか。

Natapongさんのワークフローで出力の変数を削除して入力のみにすると
「オブジェクト参照~」のエラーも出るのでそんな気がしました。

バージョン:Studio 2018.4.5

以上、よろしくお願い致します。

@OTSUKATO さん

OTSUKATO さんのバージョンが開けるように、activity version を修正しました。
Ascending_table.zip (23.9 KB)

参考できるのため、ちょっと Workflow 修正しました。
1.今回のWorkflow はまず金額が空白にします。
image
2.実行したあと、Input dialog を出て、金額を入力します。
image
3.入力した金額を読み込んだdatatableを保存します。
image
4.「Sort data table 」で、金額 を並び替えます


5. 出力結果を確認します。
image

よろしくお願いいたします。

Natapong様

返信ありがとうございます。
また、ご返事が遅くなり申し訳ございません。
(コロナウィルスの影響で自宅待機・在宅勤務など諸事情により)

サンプルご丁寧にありがとうございました。

社内で使用しているバージョン:Studio 2018.4.5
では、「プロジェクトのバージョンの検出中にエラーが発生しました」とエラーになってしまいました。

自宅のPCでお試し版 バージョン:Studio 2020.2.0_beta.108
では動作しました。
こちらで実行してみましたが、昇順になりません。
原因は、金額の値がテキスト形式だからです。
Natapong様の例では、金額が一桁の場合は昇順になっていますが、金額は一桁ではない場合もあります。
文字列の昇順にはなります。

【解決策】
InputValueを代入する際 ”表示名:Assign(Save value to datatable)”の箇所を、以下の順で変更。

1)カンマ(,)編集での入力もあり得ますので、これは削除する置換編集を入れました。
2)数値変更 int32.Parse(InputValue) で代入にしました。
※もともと文字列で入力した場合も考慮し、この数値変更は、トライキャッチの中に記載
トライ :数値変更ありのint32.Parse(InputValue) を代入
キャッチ:数値変更なしのInputValue を代入

上記へ変更後、正常に動作致しました。
もともとデータテーブルの型を数値型にでき、かつカンマ編集した値も数値とできれば良いのでしょうが、、
もっと良い方法があれば良いです。

一旦解決と致します。

誠にありがとうございました。

1 Like

こんにちは

以下で金額列の数値文字列を昇順ソートできます。(カンマが含んでいても大丈夫です)元のデータテーブルをdtとしています。Assign(代入)アクティビティを使用ください。

dt = dt.AsEnumerable.OrderBy(function(r) int32.Parse(r("金額").ToString(),System.Globalization.NumberStyles.AllowThousands)).CopyToDataTable()
2 Likes

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