トレーニング
モジュール
Dynamics 365 Business Central でのアプリケーション言語を使用したエラー処理 - Training
Dynamics 365 Business Central でアプリケーション言語 (AL) を使用してエラーを処理する方法を学びます。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Excel や DAX 言語に IFERROR
関数があるのと同様に、Power Query にも、エラーをテストしてキャッチするための独自の構文があります。
Power Query でのエラーの処理に関する記事で説明されているように、エラーはステップ レベルまたはセル レベルで発生する可能性があります。 この記事では、独自のロジックに基づいてエラーをキャッチして管理する方法に焦点を当てます。
注意
この概念を示すために、この記事では、そのデータ ソースとして Excel ブックを使用します。 ここに示されている概念は、Excel ブックから取得された値だけでなく、Power Query でのすべての値に適用されます。
このデモのサンプル データ ソースは、次の表を含む Excel ワークブックです。
Excel ワークブックのこのテーブルには、標準レート列に#NULL!、#REF!、#DIV/0! などの Excel エラーがあります。 このテーブルを Power Query エディターにインポートすると、次の図にどのように表示されるかを示します。
Excel ブックのエラーが、各セル内の [Error]
値にどのように表示されているかに注意してください。
この記事では、エラーを別の値に置き換える方法について説明します。 さらに、エラーをキャッチし、それを独自のロジックに使用する方法についても説明します。
この場合の目標は、Standard Rate 列の値を使用する新しい Final Rate 列をサンプル データ ソースに作成することです。 エラーがある場合は、対応する Special Rate 列の値が使用されます。
新しいカスタム列を作成するには、[列の追加] メニューに移動し、[カスタム列] を選択します。 [カスタム列] ウィンドウで、数式 try [Standard Rate] otherwise [Special Rate]
を入力します。 この新しい列に「Final Rate」という名前を付けます。
この数式では Standard Rate 列の評価を試み、エラーが検出されなければその値を出力します。 Standard Rate 列でエラーが検出された場合は、otherwise
ステートメントの後に定義されている値 (この場合は Special Rate 列) が出力されます。
テーブル内のすべての列に正しいデータ型を追加すると、最終的なテーブルは次の画像のようになります。
注意
別の方法として、式 try [Standard Rate] catch ()=> [Special Rate]
を入力することもできます。これは前の式と同等ですが、パラメーターを必要としない関数で catch キーワードを使用します。
catch
キーワードは、2022 年 5 月に Power Query に導入されました。
前のセクションと同じサンプル データ ソースを使用して、新しい目標は、[Final Rate] の新しい列を作成することです。 Standard Rate の値が存在する場合は、その値が使用されます。 それ以外の場合は、#REF!
エラーが存在する行を除き、Special Rate 列の値が使用されます。
注意
#REF!
エラーを除外する唯一の目的は、デモンストレーションのためです。 この記事で紹介されている概念を使用すると、エラー レコードから任意のフィールドを選択してターゲットにすることができます。
エラー値の横にある空白のどこかを選択すると、画面の下部に詳細ウィンドウが表示されます。 この詳細ウィンドウには、エラーの理由 DataFormat.Error
とエラー メッセージ Invalid cell value '#REF!'
の両方が含まれています。
一度に 1 つのセルしか選択できないため、実質的には、一度に 1 つのエラー値のエラー コンポーネントのみを調べることができます。 ここで新しいカスタム列を作成し、try
式を使用します。
新しいカスタム列を作成するには、[列の追加] メニューに移動し、[カスタム列] を選択します。 [カスタム列] ウィンドウで、数式 try [Standard Rate]
を入力します。 この新しい列に「All Errors」という名前を付けます。
try
式では、値とエラーを、try
式でエラーが処理されたかどうかを示すレコード値と、適切な値またはエラー レコードに変換します。
列ヘッダーの横にあるアイコンを選択することにより、この新しく作成された列をレコード値で展開し、展開に使用できるフィールドを確認できます。
この操作により、次の 3 つの新しいフィールドが公開されます。
null
になります。null
になります。
さらに調査を行う場合は、[All Errors.Error] 列を展開して、エラー レコードの次の 3 つのコンポーネントを取得できます。
展開操作を行うと、[All Errors.Error.Message] フィールドには、各セルにどのような Excel エラーがあるかを正確に伝える特定のエラー メッセージが表示されます。 このエラー メッセージは、エラー レコードの [エラー メッセージ] フィールドから派生しています。
これで、新しい列に各エラー メッセージが表示されたので、次の句を含む [Final Rate] という名前の新しい条件列を作成できます。
null
と等しい場合は、Standard Rate 列の値が出力されます。Invalid cell value '#REF!'.
と等しくない場合、出力は Special Rate 列の値になります。
Account、Standard Rate、Special Rateおよび Final Rate 列のみを保持し、各列に正しいデータ型を追加した後 , 次の画像は、最終的なテーブルがどのようになるかを示しています。
あるいは、 try
およびcatch
キーワードを使用して新しいカスタム列を作成することもできます。
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null
トレーニング
モジュール
Dynamics 365 Business Central でのアプリケーション言語を使用したエラー処理 - Training
Dynamics 365 Business Central でアプリケーション言語 (AL) を使用してエラーを処理する方法を学びます。