AsType 関数と IsType 関数

適用対象: Canvas アプリ モデル駆動型アプリ Power Platform CLI

特定テーブルタイプ (IsType) のレコード参照をチェックして、参照を特定タイプ (AsType) として扱います。

注意

PAC CLI pac power-fx コマンド は、IsType に対応していません。

Description

概要と詳細については、レコード参照とポリモーフィック ルックアップについてを参照してください。

ルックアップ フィールドは通常、特定のテーブルのレコードを参照します。 テーブル タイプは十分に確立されているため、単純なドット表記を使用してルックアップのフィールドにアクセスできます。 例えば、最初の (取引先企業)。'取引先責任者'。'フルネーム' は、取引先担当者 テーブルの 取引先企業 テーブルから 取引先責任者 レコードをウォークし、フルネーム フィールドを抽出します。

Microsoft Dataverse は、これらの例のように、テーブルのセットからレコードを参照できるポリモーフィック ルックアップ フィールドもサポートします。

検索フィールド 以下を参照
担当者 ユーザーまたはチーム
顧客 取引先企業または取引先担当者
関連 取引先企業取引先担当者サポート情報記事、など。

キャンバス アプリの数式では、レコード参照を使用してポリモーフィックなルックアップを処理します。 レコード参照はさまざまなテーブルを参照できるため、数式を作成するときに使用できるフィールドがわかりません。 Record.Field 表記は使用できません。 これらの数式は、アプリの実行時にアプリが検出するレコードに合わせて適応させる必要があります。

IsType 関数は、レコード参照が特定のテーブルタイプを参照しているかどうかをテストします。 関数はブール値の TRUE または FALSE を返します。

AsType 関数は、レコード参照を特定のテーブル タイプとして扱います。これは、キャスト として参照されることもあります。 結果をテーブルのレコードであるかのように使用して、もう一度 Record.Field 表記を使って、そのレコードのすべてのフィールドにアクセスすることができます。 参照が特定の種類ではない場合、エラーが発生します。

これらの関数を一緒に使用して、最初にレコードのテーブルタイプをテストし、次にそれをそのタイプのレコードとして扱い、フィールドを使用できるようにします。

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

これらの関数は、レコード参照のフィールドにアクセスする場合にのみ必要です。 たとえば、レコード参照を Filter 関数で IsType または AsType なしで使用できます。

Filter( Accounts, Owner = First( Users ) )

同様に、レコード参照を Patch 関数と共に使用することもできます。

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

Gallery または Edit form コントロール内などのレコードコンテキストで使用される場合、グローバル曖昧性解消演算子 を使用してテーブル タイプを参照する必要がある場合があります。 たとえば次の式は、会社名顧客ルックアップである取引先担当者のリストを表示するギャラリーに有効です。

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

どちらの関数でも、テーブルに接続されているデータ ソースの名前を使用してタイプを指定します。 数式を機能させるには、テストまたはキャストする種類のアプリにデータ ソースも追加する必要があります。 たとえば、IsTypeAsType所有者 ルックアップとそのテーブルからのレコードと使用する場合、ユーザー テーブルをデータ ソースとして追加しなければなりません。 アプリで実際に使用するデータソースのみを追加できます。ルックアップが参照できるすべてのテーブルを追加する必要はありません。

レコード参照が空白の場合、IsType は FALSE を返し、AsType空白を返します。 空白レコードのすべてのフィールドは、空白になります。

構文

AsType (RecordReferenceTableType)

  • RecordReference - 必須。 レコード参照。多くの場合、複数のテーブルのいずれかのレコードを参照できるルックアップ フィールド。
  • TableType - 必須。 レコードのキャスト先となる特定のテーブル。

IsType (RecordReferenceTableType)

  • RecordReference - 必須。 レコード参照。多くの場合、複数のテーブルのいずれかのレコードを参照できるルックアップ フィールド。
  • TableType - 必須。 テストする特定のテーブル。

レコード参照とポリモーフィック ルックアップについてには、豊富な例が含まれています。

  1. タブレット用の空白のキャンバス アプリを作成します。

  2. 左側のペインで、データ>データの追加 を選択します。 そして、取引先企業 テーブルと 取引先担当者 テーブルを追加します。

    取引先企業と取引先担当者の 2 つのデータ ソースを持つ空白のアプリ。

  3. 左側のペインで、+ (挿入) >レイアウト>空白の垂直ギャラリー を選択します。

    ギャラリー コントロールを空の縦方向レイアウトに挿入します。

  4. データに接続 を選択して、次にデータ ソースとして 取引先担当者 を選択します。

  5. ギャラリーのレイアウトを、タイトルとサブタイトルに設定します。

    プロパティ ウィンドウからレイアウトの選択を開く

    レイアウトをタイトルとサブタイトルに設定する

  6. データ ウィンドウで、Title1 リストを開き、氏名を選択します。

    タイトルの値を設定する

  7. Subtitle1 のラベル コントロールを選択します。

    サブタイトルの値を設定する

  8. Subtitle1Text プロパティを次の数式に設定します。

    If( IsBlank( ThisItem.'Company Name' ), "--",
        IsType( ThisItem.'Company Name', Accounts ),
            "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
        "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
    )
    

    画面が完成し、ギャラリーに取引先企業と取引先担当者が混在して表示される

    ギャラリーのサブタイトルはこれらの値を示しています。

    • もし会社名空白の場合は、"--" となります。
    • "取引先企業:" 会社名 フィールドが取引先企業を参照する場合は、その後 取引先企業テーブルからの 取引先企業名 フィールド。
    • "取引先担当者:" 会社名 フィールドが取引先担当者を参照する場合は、その後 取引先担当者テーブルからの フルネーム フィールド。

    追加の結果の種類を表示するように変更されたサンプル データを使用するため、結果はこのトピックの結果と異なる場合があります。