画面上でエラーはこんな風に表示されるやつのことです。
画面では文字が小さいと思いますので、文字も起こしておきます。返ってくるエラー文はこちらです。
The requested operation is invalid. Server Response: An error has occurred. Object reference not set to an instance of an object. clientRequestId: xxxx-xx-xx-xx-xxx
結論から言うと、IsBlank関数でLookUpに使う参照データがBlankなのか確認して、Blankでない場合にLookUpするという処理をIf文で書いてやればよい、という話です。
目次
原因
問題の関数は以下のようなものです。
PowerAppsキャンバスアプリ上のドロップダウンリストで選択したVendor nameとFinance and OperationsのVendorsV2 データエンティティ内のNameフィールドと一致するVendorにおけるVendor Accountを返す、という関数です。
LookUp(VendorsV2,Name=VendorNameDropdown.Selected.Value,'Vendor account')
実はVendorNameDropdownというドロップダウンリストもFinance and OperationsのVendorsV2データエンティティのデータを取得しに行っています。
このデータがBlankになると、Nameと比較すべきデータがBlankとなってエラーになります。
以上のように、素早くデータを取得できるようなローカルのデータを使った処理であれば問題ないのですが、クラウド上のデータを取りに行く初回起動時など読み込みに時間がかかっていると、先に処理された関数がデータがまだ取得できていないのに実行されます。
すると、読み込み時にエラーを返すが、それ以降は問題なく処理できるという状況になります。
対策
根源はVendorNameDropdownが初回読み込み時にblankとなっていることのため、blank状態のときは何もしない、blankでは無くなったらLookUp関数を実行する、というようにIf文を書きます。
例えば以下のように書くことができます。
If(IsBlank(VendorNameDropdown.Selected.Value),"",LookUp(VendorsV2,Name=VendorNameDropdown.Selected.Value,'Vendor account'))
そのほかにblank状態の時を、「現在読み込み中・・・」などのようなメッセージを表示してもよいかもしれません。
本日はここまでです。
ご参考になれば幸いです。