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.
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.
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:
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:
Filter( Accounts, Owner = First( Users ) )
Begitu juga, anda boleh menggunakan rujukan rekod dengan fungsi Patch:
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:
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.
Penting
- Menggunakan AsType dan IsType dengan objek yang tidak ditaip ialah ciri percubaan.
- Ciri percubaan tidak dimaksudkan untuk kegunaan pengeluaran dan mungkin tidak lengkap. Ciri-ciri ini tersedia sebelum keluaran rasmi supaya anda boleh mendapatkan akses awal dan memberikan maklum balas. Maklumat lanjut: Fahami ciri percubaan, pratonton dan ditamatkan dalam aplikasi kanvas
- Kelakuan yang diterangkan artikel ini hanya tersedia apabila ciri percubaan Jenis yang ditakrifkan pengguna dalam Seting, Ciri > akan > datang, Percubaan dihidupkan (ia dimatikan secara lalai).
- Maklum balas anda berharga bagi kami. Beritahu kami pendapat anda dalam Power Apps forum komuniti ciri percubaan.
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:
- 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. - 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.
- Taipkan JSON secara eksplisit dengan hujah kedua kepada fungsi ParseJSON . Ini ialah pilihan mudah yang mengelak daripada memerlukan objek yang tidak ditaip.
- Taipkan objek yang tidak ditaip secara eksplisit menggunakan fungsi AsType . Anda juga boleh menguji jenis sebelum mencuba penukaran dengan fungsi IsType .
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.
Fahami rujukan rekod dan carian polimorfik mengandungi contoh yang luas.
Cipta aplikasi kanvas kosong untuk tablet.
Pada anak tetingkap kiri, pilih Data>Tambah data. Dan kemudian, tambah jadual Akaun dan Kenalan.
Pada anak tetingkap kiri, pilih + (Sisipkan) >Susun atur>Galeri menegak kosong.
Pilih Sambung kepada data dan kemudian pilih Kenalan sebagai sumber data.
Tetapkan tataletak galeri kepada Tajuk dan subtajuk.
Dalam anak tetingkap Data, buka senarai Title1 dan kemudian pilih Nama Penuh.
Pilih kawalan label Subtitle1.
Tetapkan sifat Text bagi Subtitle1 kepada formula ini:
Power FxIf( 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' )
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.
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.
>> 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.
>> 1 + rec.a
2
Sebagai alternatif, contoh ini secara eksplisit menukar rekod kepada rekod yang ditaip Power Fx dengan hujah kedua kepada ParseJSON.
>> 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.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Akhir sekali, jika kita tidak pasti, contoh ini menguji jenis sebelum menukarnya dengan fungsi IsType .
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true