Power Appsでキャンバスアプリを作っていると、突然画面上部に現れる赤帯メッセージ「ネットワークからデータを取得中にエラーが発生しました」。
今回は、With関数やLookUpを使って、リレーションの「親の親(3階層目)」のデータを参照しようとした時にこのエラーが発生。
実はこれ、単なる通信エラーじゃなくて、内部的には「Could not find a property named…」という「プロパティが見つからない」エラーが発生していた。
この記事では、この厄介なエラーの発生条件と、ShowColumns関数を使って明示的に列を指定して解決するテクニックを解説。
この記事はこんな人向け
- With関数内でLookUpを使用したら「ネットワークからデータを取得中にエラーが発生しました」と出た
- モニター(エラーログ)を見たら Could not find a property named という英語のエラーが出ている
- Dataverseで「孫 → 子 → 親」のような多階層のリレーションを辿りたい
【現象】Dataverse参照時に「ネットワークからデータを取得中にエラーが発生しました」が発生
キャンバスアプリでDataverseのリレーションを扱っているとたびたびこのエラーが出る。
このエラーは「データ取得中に何かしらのエラーが発生した」というざっくりとしたエラーメッセージなので、原因はさまざま。
今回は確実にエラーが発生する1例があったので、その対処方法をメモ。
【シナリオ】With関数とLookUpで多階層リレーション(親の親)を取得する
こんな感じのテーブルとリレーションがDataverse上にあったとき、


「食事履歴」を画面上で選択したら、その「キャットフード」の「企業名(3階層親)」を画面に表示する、ということをやってみる。


ざっくり画面を作るとこんな感じ。


「食事履歴」から「企業」まで一気にアクセスしようとすると、「多対一リレーションの未サポート」エラーが発生するので、LookUpでレコードを順次取得していく。


Power Apps 「多対一のリレーションシップの複数レベルの展開はサポートされていません」対処|Dataverse
キャンバスアプリで「多対一のリレーションシップの複数レベルの展開はサポートされていません」というメッセージが出たので、その原因と対処方法をメモ。親レコードへのアクセスキャンバスアプリでDataverseを扱うとき、「.(ドット)」でつなぐこ...
エラーが再現するPower Fx式(コード例)
順次レコードを取得するため、こんな感じで単純にWith関数で順次レコードを取得しようとすると、表題のエラーが発生する。


【解決策】ShowColumns関数で取得する列(論理名)を明示的に指定する
先に対処方法を書くと、こんな感じでShowColumns関数を使用して式内で使用する列を明示的に指定してあげること。


以下対処方法発見までの試行錯誤なので、興味のある方だけ。
真の原因は内部エラー「Could not find a property named…」
まず試したのは中間(テーブル「ブランド」)をすっ飛ばしたのがよくないのかな。。と思って、「ブランド」も取得してみたけど同じエラーが発生。


きちんとAsで指定してあげればいけるかなと思ったけど、それでもだめ。


ここで初めてエラーログを確認したところ、「Could not find a property named ‘cr861_brand’ on type ‘Microsoft.Dynamics.CRM.cr861_brand」というプロパティが見つかりませんエラーが発生している。


テーブル「ブランド」内に論理名「cr861_brand」の列は確かに存在しないので(指定したい列は「cr861_brandid」)、


式の書き方が悪いのかと思い全て論理名で指定したけど、それでもダメ。。


ということで対処方法にもある「ShowColumnsで明示的に列を指定する」方法に行き着く。


「Could not find a property named ~ on type ‘Microsoft.Dynamics.CRM.~」以外のエラーメッセージを見たことが何度かあって、今回のエラー以外のときはこの対処でいけるか微妙なので、また再現したときに対処を探ろうかと。。
【別解】SetやUpdateContext変数を使用すれば回避可能
今回みたいにWith関数とかで直接企業名を表示せず、一度変数に入れてしまえばエラーは発生しない。




ギャラリー選択とかボタンクリックとかのイベントがきちんとある場合は、上記の変数に入れる方法でも対処可能。


コメント