Udemy 新コース: 作って学ぶPower BI!

PowerAppsのLookUp関数でよくあるエラー(Object reference not set to an instance …)の対処方法

画面上でエラーはこんな風に表示されるやつのことです。

 

画面では文字が小さいと思いますので、文字も起こしておきます。返ってくるエラー文はこちらです。

エラー文

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状態の時を、「現在読み込み中・・・」などのようなメッセージを表示してもよいかもしれません。

 

本日はここまでです。

ご参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です