2つのデータテーブルを結合する「データテーブルをマージ」アクティビティについてご紹介します。
1. アクティビティのプログラム名
RCA.Activities.Core.MergeDataTable
2.説明
Studio バージョン 2.0.2.0まで
クイックアクセス: 「ツールボックス」 > 「データテーブル」 > 「データテーブルをマージ」
Studio バージョン 2.0.3.0から
クイックアクセス: 「ツールボックス」 > 「コア」 > 「データテーブル」 > 「データテーブルをマージ」
2つのデータテーブルを結合するアクティビティです。
※動作を確認したコボットStudioのバージョン:2.2.0.2
※バージョンによって文言などが一部異なる場合がございます
3.プロパティ
プロパティ項目 | プロパティ名 | 入力欄 | 説明 |
---|---|---|---|
オプション | スキーマがない時の動作 | ドロップダウン選択 | マージしたいテーブルの列定義が異なる場合のマージ方法を選択。 「Add」…「ソース」「マージ先」に存在するすべての列で構成される。 「Ignore」…「ソース」のみに存在する列は無視する。 「Error」…「ソース」「マージ先」の列定義が異なる場合はエラー。 「AddWithKey」…「ソース」「マージ先」に存在するすべての列に主キー情報を追加し列定義を構成。 |
その他 | パブリック | チェック項目 | チェックを入れるとログにデータが書き込まれるので、ログ上からデータが閲覧できるようになる。 ※機密情報を取り扱う際には、十分ご注意くださいますようお願いいたします (詳細は「プロパティ項目「パブリック」について」を参照) |
表示名 | 値を入力(String型) | デザイナーパネルのアクティビティ名に反映される。 | |
入力 | ソース | 値を入力 (DataTable型) | 「マージ先」のデータテーブルにマージされるデータテーブルを指定。 |
マージ先 | 値を入力 (DataTable型) | 「ソース」のデータテーブルのマージ先データテーブルを指定。 |
4.使い方(列定義が同じ場合)
マージしたい2つのデータテーブルが同じ列定義の場合、上の説明のように、「マージ先」のデータテーブルの後ろに「ソース」のデータテーブルが追加されます。
「データテーブルをビルド」で作成したデータテーブルに、同じ列定義のデータテーブル「addRateData」を結合しましょう。
●「データテーブルをビルド」で作成したデータテーブル「rateTable」
●結合したいデータテーブル「addRateData」
アクティビティ「データテーブル > データテーブルをマージ」を、ツールボックスからデザイナーパネルにドラッグ&ドロップで配置します。
プロパティの「入力 > ソース」に、追加データとなるデータテーブルの変数「addRateData」を指定します。プロパティの「入力 > マージ先」に、追加先データテーブルの変数「rateTable」を入力します。
「ホーム > スタート」をクリック、または、「F5キー」押下で実行すると、データテーブル「rateTable」に「addRateData」のデータが追加されます。
※データテーブルを出力し確認する場合は、「データテーブルを出力」で文字列に変換し「1行を書き込む」で出力パネルに表示したり、「行ごとに処理」でメッセージボックスに表示してください。
※例では、マージ先に指定した「rateTable」をデータテーブルに出力することにより、元々の「rateTable」にソースに指定した「addRateData」が結合された内容が出力されています。
5.使い方(列定義が異なる場合)
マージしたい2つのデータテーブルの列定義が異なる場合、オプション「スキーマアクションがない時の動作」のプロパティ値により、マージ後の列定義が変わります。
以下は、「マージ先」データテーブルと「ソース」データテーブルの、プロパティ値別マージ結果になります。(※プロパティ値「AddwithKey」についてここではふれません。列の定義は「ソース」「マージ先」に存在するすべての列と主キー情報です。)
●「マージ先」データテーブル
社員番号 | 氏名 | 部署名 |
0001 | コボット001 | 経理 |
●「ソース」データテーブル
社員番号 | 氏名 | 勤務地 |
0002 | コボット002 | 本社 |
・プロパティ値が「Add」の場合
「ソース」「マージ先」に存在するすべての列が定義されます。追加された列の値は、規定値が設定されている列の場合は規定値で補完され、規定値が設定されていない場合はNullで補完されます。そのため、Null値を許可せず、かつ、規定値の指定がない列を補完する場合エラーとなります。
社員番号 | 氏名 | 部署名 | 勤務地 |
0001 | コボット001 | 経理 | |
0002 | コボット002 | 本社 |
・プロパティ値が「Ignore」の場合
「ソース」のみに存在する列(この場合は「勤務地」)は無視されます。「ソース」に定義されていない列の値は、規定値が設定されている列の場合は規定値で補完され、規定値が設定されていない場合はNullで補完されます。そのため、Null値を許可せず、かつ、規定値の指定がない列を補完する場合エラーとなります。
社員番号 | 氏名 | 部署名 |
0001 | コボット001 | 経理 |
0002 | コボット002 |
・プロパティ値が「Error」の場合
「マージ先」と「ソース」の列定義が異なる場合、マージされずエラーとなります。この例では、エラーとなります。