はじめに
複数のエンティティをまたいでデータを扱う際に便利な「エンティティ内部連結」機能ですが、連結された属性の項目のデータ型を変更する場合には、少し注意が必要です。
本記事では「連結した項目のデータ型を変更しようとしても、元に戻ってしまう」という現象の原因と、正しい対応方法についてご紹介します。
困った現象
他のエンティティから連結した項目「製造日」がデータ型「文字列」になっていたから「日付時刻」に変更したい!
ところが次のような経験はないでしょうか。
「項目のデータ型を変えるには項目設定」と考え、項目を右クリック → [項目設定] からデータ型を変更し、[適用する] を押したところ……


\データ型が「文字列」に戻ってしまった!/

この現象の理由
この現象は不具合ではなく、連結項目のデータ型は「連結元(参照先)」の設定が優先されるという仕様によるものです。そのため、連結先(表示している側)でデータ型を変更しても、連結元のデータ型の設定が変わっていない場合は、元の型に戻ってしまいます。
対応方法(正しい設定手順)
手順1
連結項目を配置しているパネルを右クリックし[連結エンティティ]→[連結先] からデータ型を変更したい連結元エンティティを選択します。

手順2
連結元エンティティの入出力コンテキストが表示されるので、ここで連結されている対象項目のデータ型を変更します。(例:文字列 → 日付時刻)

手順3
[適用する] を選択し、元のパネル(連結項目を設定している画面)に戻ります。
手順4
連結項目のデータ型が、設定した型に自動的に反映されていることを確認します。

あとは、必要に応じて表示形式や部品種類などを調整し、[適用する] を選択すれば完了です。
なお、コンテキサーではデータソース(データベースやcsvファイルなど)からコンテキストを作る際、最初はデータ型が“文字列”としてコンテキストが作成されます。
今回のケースのように、日付として扱いたいデータ項目は、データソースから作成した後にデータ型を“日付時刻”に変えておけば、今回のようなトラブルを防ぐことができます。
まとめ
・連結項目のデータ型は、連結元の設定が最優先
・表示側で変更しても、元に戻る場合は仕様によるもの
・データ型を変更したい場合は、必ず連結元エンティティ側で設定する
この仕様を理解しておくことで、データ連結時の「なぜか反映されない」といったつまずきを防ぐことができます。
ぜひ、同様のケースでお困りの際に参考にしてみてください。
今回のような内容を丁寧に解説し、また実際にコンテキサーで手を動かす実習を含む「ユーザートレーニング」というプログラムをご用意しております、詳細はお問い合わせください。

