2023/03/19

コード → 名称変換 を汎用的に!

Notes では、ダイアログリストフィールドなどのキーワードフィールドを中心に別名を使用します。 

フォームの場合、フィールドの設定で別名を名称に変換してくれて便利なのですが、ビューの場合はそうはいきません。ビューの列式で変換するか、文書内に別名のほかに表示用の名称を持たせる必要があります。 

こんな時によく使い方法を紹介します。

区分(Type)という名称で『ダイアログ』形式の選択のフィールドを作成するとします。

まず、準備作業として、選択肢と別名を保持するフィールド、Type_Lst を作成し、フィールドの値としてセットします。

"質問|1":
"要望|2":
"障害|3"

続いて、Type フィールドの選択肢の設定を『式で選択肢を設定』にし、以下の式を設定します。

@GetField(@ThisName + "_Lst")

最後に、選択した区分の名称を保存する、Type_Name フィールドを『計算結果』として作成、以下の式をセットします。

REM {ベースフィールド名取得};
xFld := @LeftBack(@ThisName; "_");

REM {変換したいコードをセット};
xCD := @GetField(xFld);

REM {変換する値を別名形式のリスト値で指定};
xLst := @GetField(xFld + "_Lst");

REM {--------------------------------};
REM { ※ 以下は変更しないこと!};

REM {CDと名称を準備};
xFm := @Trim(@Right(xLst; "|"));
xTo := @Trim(@Left(xLst; "|"));

REM {CDを名称に変換};
@Replace(xCD; xFm; xTo)

例によって、内部のコードは可能な限り改変無用のにしています。フィールド名のコントロールと選択肢フィールドの式の調整だけで、応用が可能です。

選択肢フィールドについて将来選択肢の変更を考えた場合、作成当時の選択肢を保持ておきたいなら『作成時の計算結果』、変更を反映し新しい選択肢を有効にしたければ『計算結果』にすればよいかと思います。

0 件のコメント:

コメントを投稿