サンプル: データベースのテーブルの行の計算

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  マッピングのデザイン > 変数の使用 >

サンプル: データベースのテーブルの行の計算

このサンプルで説明されているマッピングは、 <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\ フォルダー内の DB_UserList.mfd です。このマッピングは、ユーザーのレコードを "Users" という名前のデータベーステーブルから抽出し、 XML ファイルに書き込みます。データベースの列 "Username" には、個人の姓と名の両方が含まれています (例えば、 "Vernon Callaby")。 このマッピングの目的は以下のとおりです:

 

1."Users" テーブル内の各レコードのために、 XML ファイル内に新規の Person 要素を作成する。
2.データベース フィールド "Username" から抽出された値を XML ファイル内の個別のフィールド("First" と "Last")に分割する。
3.各レコードのために、データベース内に存在するレコードの全体の番号に対して比較される連番を検索し (例えば、 "4 件中の 1 件目"など) Details 要素にこの情報を書き込みます。

mf_map_DB_UserList

DB_UserList.mfd

上で説明されているとおり、最初の目的を達成するために、 ソース "Users" テーブルとターゲット XML ファイルの Person 要素 の間に接続が描かれます。これにより、ソーステーブル内の各レコードのために、ターゲット内に新規の Person 要素が作成されます。

 

フィールド "Username" の値が substring-beforesubstring-after 関数に与えられています。これらの2つの関数は、 スペース文字 (" ") の前後のテキストをそれぞれ抽出し、このマッピングの目的を達成します。

 

3つ目の目的を達成するために、マッピングは count 関数を使用します。集計関数の結果は、変数にパスされます。変数は、マッピング上に結果が保管され、各個人の "Details" 要素 をターゲット XML に書き込む際に使用することができます。効率性のために、データベースのレコードは1度のみ数えられるべきであり、変数のスコープは compute-when=once に設定されています (次を参照してください: 変数のコンテキストとスコープの変更)。


(C) 2019 Altova GmbH