こちら、現在携わっているキャンバスアプリの案件での、とあるテキストフィールドのOnChangeプロパティです。
(一部マスキングあり)
コードにするとこんな感じ。
// 初期化
Reset(drp_24_tekikaku_invoice_2);
// フォントカラー初期化
Set(varTextColor_11, Color.Black);Set(varTextColor_12, Color.Black);Set(varTextColor_13, Color.Black);Set(varTextColor_14, Color.Black);Set(varTextColor_16, Color.Black);
Set(varTextColor_17, Color.Black);Set(varTextColor_18, Color.Black);Set(varTextColor_19, Color.Black);Set(varTextColor_20, Color.Black);Set(varTextColor_21, Color.Black);
Set(varTextColor_22, Color.Black);Set(varTextColor_23, Color.Black);Set(varTextColor_24, Color.Black);Set(varTextColor_25, Color.Black);Set(varTextColor_26, Color.Black);
// 境界線カラー初期化
Set(varBorderColor_11, Color.Black);Set(varBorderColor_12, Color.Black);Set(varBorderColor_13, Color.Black);Set(varBorderColor_14, Color.Black);Set(varBorderColor_16, Color.Black);
Set(varBorderColor_17, Color.Black);Set(varBorderColor_18, Color.Black);Set(varBorderColor_19, Color.Black);Set(varBorderColor_20, Color.Black);Set(varBorderColor_21, Color.Black);
Set(varBorderColor_22, Color.Black);Set(varBorderColor_23, Color.Black);Set(varBorderColor_24, Color.Black);Set(varBorderColor_25, Color.Black);Set(varBorderColor_26, Color.Black);
// 申請部門コードによって参照するテーブルを切り替える
UpdateContext({varTableName:
Switch(
txt_5_Sinsei_bumon_code_2.Text,
"7***",'7***_hogehoge',
"0***",'0***_fugafuga'
)
});
// 別途取得している管理番号をキーに、部門用テーブルから該当する取引先コード-枝番のアイテムをコレクションに追加する
ClearCollect(MyCollection, LookUp(varTableName,管理番号=Value(cf_27_ID_2.Text)));
// 取得したコレクションに対して存在チェックをするために取引先コードと枝番を変数に格納する
Set(VarClientCode, txt_2_Torihikisaki_code_2.Text);
Set(VarBranch, txt_3_Edaban_2.Text);
// 取得したコレクションに該当するアイテムが存在するかチェック(必ず存在するが)
If(
CountRows(
Filter(MyCollection,
取引先コード = VarClientCode &&
枝番 = VarBranch)
) = 0 And Len(VarBranch) = 4,Notify("エラー: 取引先コードが存在しません。", NotificationType.Error));
// 各項目に表示する値をアイテムから変数に格納する
Set(txt11Furigana_2,LookUp(varTableName,管理番号=Value(cf_27_ID_2.Text),タイトル));
やりたい事に対してこれがベストな方法なのかは自信がないけど、まあ悪くはないと思う。
欲を言えば、varTableNameにセットするテーブルの値をSwitchで切り替えているけど、
ここだけテーブル名ベタ打ちしちゃっているから、もっとスマートに出来ないかなと思っている。
別の場所でテーブル名を変数に格納して、それを使おうとしたけどエラーになったので苦肉の策でこうした。詳しい人教えてきぼんぬ。
仕事の進め方として、ユーザー部門を巻き込んで一緒に設計とかをするスタイルなんだけど、Microsoft ListsとPower Automateはユーザにも少しずつやってもらえつつある。
が、キャンバスアプリで色々と制御しようとするとこういう関数を駆使する場面がどうしても出てくるので、いわゆる市民開発者にとってはここのハードルはかなり高いよなと思ったりする。
まあそれを可能にしていくのが自分のミッションであるわけだけど。
でもこうやって色々と試行錯誤しながら自分で手を動かして仕組みを構築していくのって本当に楽しいなと感じる。
社内の無駄な作業を減らしつつ、自分のスキルも高められて、かつこれでお賃金までもらえるんだからこんなに楽しい仕事ってないね。
入社して8か月経過したけど、ここまでストレスゼロだし。(自分で自分の首を絞めて苦しんだりする事はあるけど)
こういうのを天職と言うのだろうな。
さてもうひと頑張りしようかな。