PowerAppsで開発をしていて
型に互換性がないため比較できません。OptionSetValueとテキストの方は比較できません。
こんなエラーが出てきました。。
これを回避する方法を解説します!
エラーが出る原因
エラーが出てきた経緯
「Dataverse」の「選択肢(複数)」に
「商品カテゴリマスタ」を作りました。
この場合「うどん」「おでん」という選択肢を作りました。
そして「Dataverse」の「テーブル」に
「商品マスタ」を作り
「カテゴリ」列に紐づけました。
そしてアプリ側で
「カテゴリ」列にフィルターをかけて
「商品マスタ」テーブルのデータを引っ張ってこようとすると…
エラーが出てきてしまいました。
エラーが出る書き方
Filter(商品マスタ, カテゴリ = "うどん")
エラーの内容
これは「選択肢(複数)」の値と
「テキスト」の値は比較できません。
というエラーです。
単純に「選択肢(複数)」と「テキスト」は
「SetOptionValue型」と「テキスト型」で
型が違うので「=」などの比較ができないらしいです。
エラーを回避する方法
選択肢(複数)の中の値を直接読込む
例えば、先ほどダメだった書き方は
エラーが出る書き方
Filter(商品マスタ, カテゴリ = "うどん")
これに対し、エラーを回避する書き方は
エラー回避する書き方
Filter(商品マスタ, カテゴリ = [@商品カテゴリマスタ].うどん)
この様に書く事で
型の不一致がなくなりエラーが出なくなります!
Filter条件の選択肢(複数)の値を変動的に変えたい
エラー回避する書き方
Filter(商品マスタ, カテゴリ = [@商品カテゴリマスタ].うどん)
上記の書き方だと「うどん」しか条件に指定できない。
ここを「うどん」「おでん」など
変動的に変える為には
「うどん」のボタンを押した時(OnSelect)に
Set関数を使って select_category 変数に
選択肢(複数)内の「うどん」値をセットします。
Set関数
Set(select_category, [@商品カテゴリマスタ].うどん);
「おでん」のボタンにも同じように
select_category変数にセットさせます。
Set関数
Set(select_category, [@商品カテゴリマスタ].おでん);
そしてギャラリーのItemsに
Filter関数
Filter(商品マスタ, カテゴリ = select_category)
select_cateory変数を直接指定させます!
こうする事で
選択肢(変数)の値をFilter内で変動的に変えることができます!