【PowerApps】OptionSetValueとテキストの方は比較できません。を解決する方法!

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内で変動的に変えることができます!