Dibaca dalam bahasa Inggeris

Kongsi melalui


Fungsi AsType dan IsType

Digunakan untuk: Aplikasi kanvas Aplikasi dipacu Power Pages Power Platform model CLI

Menyemak sama ada rujukan rekod ialah jenis jadual tertentu (IsType) dan menganggap rujukan sebagai jenis tersebut (AsType).

Nota

Perintah PAC CLI pac power-fx tidak menyokong IsType.

Description

Fungsi AsType dan IsType boleh digunakan untuk menukar rujukan rekod (contohnya carian polimorfik dalam Dataverse) dan objek yang tidak ditaip kepada objek yang ditaip yang boleh digunakan secara langsung.

Rujukan Rekod

Baca Memahami rujukan rekod dan carian polimorfik untuk pengenalan yang lebih luas dan lebih terperinci.

Medan carian biasanya merujuk kepada rekod dalam jadual tertentu. Oleh kerana jenis jadual telah mantap, akses medan carian menggunakan notasi titik mudah. Contohnya, First( Akaun ).'Kenalan Utama'.'Nama Penuh bergerak daripada jadual Akaun kepada rekod Kenalan Utama dalam jadual Kenalan dan ekstrak medan Nama Penuh.

Microsoft Dataverse juga menyokong medan carian polimorfik, yang boleh merujuk kepada rekod daripada set jadual, seperti dalam contoh ini.

Medan carian Boleh merujuk ke
Pemilik Pengguna atau Pasukan
Pelanggan Akaun atau Kenalan
Mengenai Akaun, Kenalan, Artikel Pengetahuan, dsb.

Dalam formula aplikasi kanvas, gunakan rujukan rekod untuk bekerja dengan carian polimorfik. Oleh kerana rujukan rekod boleh merujuk kepada jadual yang berbeza, tidak jelas medan yang tersedia pada masa jalan semasa menulis formula. Notasi Record.Field tidak tersedia. Formula tersebut mesti disesuaikan dengan rekod yang aplikasi hadapi semasa dijalankan.

Fungsi IsType menguji jika rujukan rekod merujuk kepada jenis jadual tertentu. Fungsi akan mengembalikan Boolean BENAR atau PALSU.

Fungsi AsType menganggap rujukan rekod sebagai jenis jadual tertentu, juga dikenali sebagai pemutus. Anda boleh menggunakan keputusan seolah-olah ia adalah rekod jadual dan sekali lagi menggunakan notasi Record.Field untuk mengakses semua medan rekod tersebut. Ralat berlaku jika rujukan bukan jenis tertentu.

Gunakan fungsi ini bersama untuk menguji terlebih dahulu jenis jadual rekod dan kemudian menganggap ia sebagai rekod jenis tersebut supaya medan tersedia:

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

Fungsi ini diperlukan hanya jika mengakses medan rujukan rekod. Sebagai contoh, anda boleh menggunakan rujukan rekod dalam fungsi Filter tanpa IsType atau AsType:

Power Fx
Filter( Accounts, Owner = First( Users ) )

Begitu juga, anda boleh menggunakan rujukan rekod dengan fungsi Patch:

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

Apabila digunakan dalam konteks rekod, seperti dalam kawalan borang Galeriatau Edit, pengendali nyahkekaburan global mungkin diperlukan untuk merujuk jenis jadual. Sebagai contoh, formula ini akan berkesan untuk galeri yang memaparkan senarai kenalan yang mana Nama Syarikat adalah carian Pelanggan:

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

Untuk kedua-dua fungsi, tentukan jenis melalui nama sumber data yang disambungkan ke jadual. Untuk formula berfungsi, anda juga mesti menambahkan sumber data kepada aplikasi untuk sebarang jenis yang ingin anda uji atau tukar. Contohnya, anda mesti menambah jadual Pengguna sebagai sumber data jika anda mahu menggunakan carian IsType dan AsType dengan Pemilik dan rekod daripada jadual tersebut. Anda hanya boleh menambah sumber data yang anda benar-benar gunakan dalam aplikasi anda; anda tidak perlu menambah semua jadual yang boleh dirujuk carian.

Jika rujukan rekod adalah kosong, IsType akan mengembalikan PALSU dan AsType akan mengembalikan kosong. Semua medan rekod kosong juga kosong.

Objek Tidak Taip

Penting

Objek yang tidak ditaip daripada API web atau [Fungsi ParseJSON ] perlu ditukar kepada objek yang ditaip sebelum ia boleh digunakan Power Fx. Pilihan untuk melakukan ini termasuk:

  1. Taipkan medan secara tersirat pada titik ia digunakan. Contohnya, objek ditukar kepada nombor jika ia digunakan dengan + pengendali, jika ia boleh ditukar kepada nombor. Pilihan ini boleh mempunyai penukaran yang tidak dijangka dan tidak boleh menukar rekod dan jadual secara keseluruhan.
  2. Taipkan setiap medan secara eksplisit secara individu dengan Perpuluhan , Teks, TarikhMasa, GUID dan fungsi pembina jenis lain. Ini adalah yang paling invasif kepada formula anda kerana setiap bidang mesti dilakukan secara berasingan.
  3. Taipkan JSON secara eksplisit dengan hujah kedua kepada fungsi ParseJSON . Ini ialah pilihan mudah yang mengelak daripada memerlukan objek yang tidak ditaip.
  4. Taipkan objek yang tidak ditaip secara eksplisit menggunakan fungsi AsType . Anda juga boleh menguji jenis sebelum mencuba penukaran dengan fungsi IsType .

Sintaks

AsType( Rujukan Rekod, Jenis Jadual )

  • RecordReference - Diperlukan. Rujukan rekod, selalunya medan carian yang boleh merujuk kepada rekod dalam sebarang jadual berbilang.
  • TableType - Diperlukan. Penukaran jenis rekod pada jadual tertentu.

AsType(Objek Tidak Ditaip,Spesifikasi Jenis )

  • UntypedObject - Diperlukan. Rujukan rekod, selalunya medan carian yang boleh merujuk kepada rekod dalam sebarang jadual berbilang.
  • JenisSpesifikasi - Diperlukan. Nama jenis atau spesifikasi jenis yang ditakrifkan dengan fungsi Jenis.

IsType(Rujukan Rekod,TableType)

  • RecordReference - Diperlukan. Rujukan rekod, selalunya medan carian yang boleh merujuk kepada rekod dalam sebarang jadual berbilang.
  • TableType - Diperlukan. Jadual tertentu untuk diuji.

IsType(UntypedObject,TypeSpecification )

  • UntypedObject - Diperlukan. Rujukan rekod, selalunya medan carian yang boleh merujuk kepada rekod dalam sebarang jadual berbilang.
  • JenisSpesifikasi - Diperlukan. Nama jenis atau spesifikasi jenis yang ditakrifkan dengan fungsi Jenis.

Contoh

Rujukan Rekod

Fahami rujukan rekod dan carian polimorfik mengandungi contoh yang luas.

  1. Cipta aplikasi kanvas kosong untuk tablet.

  2. Pada anak tetingkap kiri, pilih Data>Tambah data. Dan kemudian, tambah jadual Akaun dan Kenalan.

    Aplikasi kosong dengan dua sumber data: akaun dan kenalan.

  3. Pada anak tetingkap kiri, pilih + (Sisipkan) >Susun atur>Galeri menegak kosong.

    Sisipkan kawalan galeri dengan tataletak menegak kosong.

  4. Pilih Sambung kepada data dan kemudian pilih Kenalan sebagai sumber data.

  5. Tetapkan tataletak galeri kepada Tajuk dan subtajuk.

    Buka pemilih tataletak daripada anak tetingkap sifat.

    Tetapkan reka letak kepada Tajuk dan sari kata.

  6. Dalam anak tetingkap Data, buka senarai Title1 dan kemudian pilih Nama Penuh.

    Tetapkan nilai tajuk.

  7. Pilih kawalan label Subtitle1.

    Tetapkan nilai sari kata.

  8. Tetapkan sifat Text bagi Subtitle1 kepada formula ini:

    Power Fx
    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'
    )
    

    Skrin kini selesai menunjukkan akaun dan kenalan bercampur dalam galeri.

    Subtajuk dalam galeri menunjukkan nilai ini:

    • "--" jika 'Nama Syarikat' adalah kosong.
    • "Akaun: " dan kemudian medan Nama Akaun daripada jadual Akaun jika medan Nama Syarikat merujuk kepada akaun.
    • "Kenalan: " dan kemudian medan Nama Penuh daripada jadual Kenalan jika medan Nama Syarikat merujuk kepada kenalan.

    Keputusan anda mungkin berbeza kerana data sampel mungkin telah diubah suai untuk menunjukkan lebih banyak jenis hasil.

Objek Tidak Taip

Contoh berikut menunjukkan rekod JSON ringkas yang ditafsirkan dalam pelbagai cara oleh ParseJSON,AsType dan IsType dalam Pac CLI Power Fx REPL.

Dalam contoh pertama ini, tiada maklumat jenis diberikan kepada ParseJSON, jadi ia mengembalikan objek yang tidak ditaip.

Power Apps
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: Use Value, Text, Boolean, or other functions to establish the type>

Medan ini secara tersirat ditukar kepada nombor apabila digunakan dalam konteks berangka.

Power Apps
>> 1 + rec.a
2

Sebagai alternatif, contoh ini secara eksplisit menukar rekod kepada rekod yang ditaip Power Fx dengan hujah kedua kepada ParseJSON.

Power Apps
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}

Dan alternatif lain, contoh ini secara eksplisit menukar rekod kepada rekod yang ditaip Power Fx menggunakan AsType.

Power Apps
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}

Akhir sekali, jika kita tidak pasti, contoh ini menguji jenis sebelum menukarnya dengan fungsi IsType .

Power Apps
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true