Ambil perhatian
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba log masuk atau menukar direktori.
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Terpakai kepada: Apl kanvas Aliran
Desktop Copilot Studio
Apl
dipacu model Power Platform CLI
Fungsi Dataverse Halaman
Kuasa
Mengira nilai dan melaksanakan tindakan untuk semua rekod dalam jadual.
Penerangan
Fungsi ini ForAll menilai formula untuk semua rekod dalam jadual. Formula boleh mengira nilai dan/atau melaksanakan tindakan seperti mengubah suai data atau bekerja dengan sambungan. Gunakan With function untuk menilai formula bagi rekod tunggal.
Gunakan fungsi Jujukan dengan ForAll fungsi untuk mengulangi berdasarkan kiraan.
Medan rekod yang sedang diproses tersedia dalam formula. Gunakan operator ThisRecord atau rujuk sahaja medan mengikut nama seperti yang akan anda lakukan bagi mana-mana nilai yang lain. Operator As juga boleh digunakan untuk menamakan rekod yang diproses, yang dapat membantu menjadikan formula anda lebih mudah untuk difahami dan supaya rekod bersarang dapat diakses. Untuk mendapatkan maklumat lanjut, lihat contoh di bawah dan menggunakan skop rekod.
Nilai pulangan
Hasil setiap penilaian formula dikembalikan dalam jadual, dalam urutan yang sama dengan jadual input.
Jika hasil formula ialah nilai tunggal, jadual yang terhasil ialah jadual lajur tunggal. Jika hasil formula adalah rekod, jadual yang terhasil mengandungi rekod dengan lajur yang sama seperti rekod hasil.
Jika hasil formula ialah nilai kosong , maka tiada rekod dalam jadual hasil untuk rekod input tersebut. Dalam kes ini, terdapat lebih sedikit rekod dalam jadual hasil daripada jadual sumber.
Mengambil tindakan
Formula boleh termasuk fungsi yang mengambil tindakan seperti mengubah suai rekod sumber data dengan fungsi Patch dan Collect. Rumus juga boleh memanggil kaedah pada sambungan. Berbilang tindakan boleh dilaksanakan setiap rekod dengan menggunakan ; pengendali. Anda tidak boleh mengubah suai jadual yang menjadi subjek ForAll fungsi.
Semasa menulis formula anda, perlu diingati bahawa rekod boleh diproses mengikut sebarang urutan dan, jika boleh, secara selari. Rekod pertama jadual boleh diproses selepas rekod terakhir.
Berhati-hati untuk mengelakkan kebergantungan pemesanan. Atas sebab ini, anda tidak boleh menggunakan fungsi UpdateContext, Clear dan ClearCollect dalam ForAll fungsi kerana ia boleh digunakan dengan mudah untuk memegang pemboleh ubah yang terdedah kepada kesan ini. Anda boleh menggunakan Collect tetapi urutan penambahan rekod tidak ditakrifkan.
Beberapa fungsi yang mengubah suai sumber data termasuk Collect, Remove dan Update, mengembalikan sumber data yang berubah sebagai nilai pulangannya. Nilai pulangan ini boleh menjadi besar dan menggunakan sumber yang ketara jika dikembalikan untuk setiap rekod ForAll jadual. Anda juga mungkin mendapati bahawa nilai pulangan ini bukan seperti yang anda jangkakan kerana ForAll boleh beroperasi secara selari dan mungkin memisahkan kesan sampingan fungsi ini daripada mendapatkan hasilnya. Jika nilai pulangan daripada ForAll tidak digunakan, yang selalunya berlaku dengan fungsi pengubahsuaian data, maka nilai pulangan tidak akan dicipta dan tiada kebimbangan sumber atau pesanan. Tetapi jika anda menggunakan hasil fungsi a ForAll dan salah satu yang mengembalikan sumber data, fikirkan dengan teliti tentang cara anda menyusun hasil dan mencubanya terlebih dahulu pada set data kecil.
Alternatif
Banyak fungsi dalam Power Apps boleh memproses lebih daripada satu nilai pada satu masa dengan menggunakan jadual lajur tunggal. Sebagai contoh, fungsi Len boleh memproses jadual nilai teks, mengembalikan jadual panjang, dengan cara yang sama, yang ForAll boleh. Ini boleh menghapuskan keperluan untuk digunakan ForAll dalam banyak kes, boleh menjadi lebih cekap dan lebih mudah dibaca.
Pertimbangan lain ialah itu ForAll tidak boleh diwakilkan manakala fungsi lain mungkin, seperti Penapis.
Perwakilan
Apabila digunakan dengan sumber data, fungsi ini tidak boleh ditugaskan. Bahagian pertama sumber data sahaja yang akan diambil, kemudian fungsi ini digunakan. Hasil ini mungkin tidak mewakili gambaran yang lengkap. Amaran mungkin terpapar semasa mengarang untuk mengingatkan anda tentang had ini dan mencadangkan agar beralih kepada alternatif boleh ditugaskan jika boleh. Untuk mendapatkan maklumat lanjut, rujuk ikhtisar penugasan.
Sintaks
ForAll(Jadual, Formula)
- Jadual - Diperlukan. Jadual yang akan diambil tindakan.
- Formula - Diperlukan. Formula untuk menilai semua rekod Jadual.
Contoh
Pengiraan
Contoh berikut menggunakan Kuasa duasumber data:
Untuk mencipta sumber data ini sebagai pengumpulan, tetapkan sifat OnSelect bagi kawalan Butang ke formula ini, buka mod Pratonton dan kemudian pilih butang:
ClearCollect( Squares, [ "1", "4", "9" ] )
| Formula | Penerangan | Hasil |
|---|---|---|
|
ForAll( Petak, Sqrt( Nilai ) ) Sqrt ( Petak ) |
Untuk semua rekod jadual input, kira punca kuasa dua bagi lajur Nilai. Fungsi Sqrt juga boleh digunakan dengan jadual lajur tunggal, memungkinkan untuk melaksanakan contoh ini tanpa menggunakan ForAll. |
|
| ForAll( Petak Kuasa( Nilai, 3 ) ) | Untuk semua rekod jadual input, kira lajur Nilai untuk kuasa tiga. Fungsi Kuasa tidak menyokong jadual lajur tunggal. Oleh itu, ForAll mesti digunakan dalam kes ini. |
|
Menggunakan sambungan
Contoh berikut menggunakan Ungkapansumber data:
Untuk mencipta sumber data ini sebagai pengumpulan, tetapkan sifat OnSelect bagi kawalan Butang ke formula ini, buka mod Pratonton dan kemudian pilih butang:
ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )
Contoh ini juga menggunakan sambungan Penterjemah Microsoft. Untuk menambah sambungan ini ke aplikasi anda, lihat artikel tentang cara mengurus sambungan.
| Formula | Penerangan | Hasil |
|---|---|---|
| ForAll(Ungkapan, MicrosoftTranslator.Translate(Value, "es")) | Untuk semua rekod dalam jadual Ungkapan, terjemahkan kandungan lajur Nilai ke dalam bahasa Sepanyol (singkatan "es"). |
|
| ForAll(Ungkapan, MicrosoftTranslator.Translate(Value, "fr")) | Untuk semua rekod dalam jadual Ungkapan, terjemahkan kandungan lajur Nilai ke dalam bahasa Perancis (singkatan "fr"). |
|
Menyalin jadual
Kadang kala anda perlu menapis, membentuk, mengisih dan memanipulasi data. Power Apps menyediakan banyak fungsi untuk melakukan ini seperti Filter, AddColumns dan Sort. Power Apps menganggap setiap jadual sebagai nilai, membolehkannya mengalir melalui formula dan digunakan dengan mudah.
Dan kadang kala anda mahu membuat salinan hasil ini untuk kegunaan kemudian atau anda mahu memindahkan maklumat daripada satu sumber data ke yang lain. Power Apps menyediakan fungsi Collect untuk menyalin data.
Tetapi sebelum anda membuat salinan itu, fikirkan dengan teliti jika diperlukan. Banyak situasi dapat ditangani dengan menapis dan membentuk sumber data yang mendasari pada permintaan dengan formula. Beberapa kelemahan membuat salinan termasuk:
- Dua salinan maklumat yang sama bermakna salah satu boleh terkeluar daripada segerak.
- Membuat salinan boleh menggunakan banyak memori komputer, lebar jalur rangkaian dan/atau masa.
- Bagi kebanyakan sumber data, penyalinan tidak boleh diwakilkan, mengehadkan jumlah data yang boleh dialihkan.
Contoh berikut menggunakan Produksumber data:
Untuk mencipta sumber data ini sebagai pengumpulan, tetapkan sifat OnSelect bagi kawalan Butang ke formula ini, buka mod Pratonton dan kemudian pilih butang:
ClearCollect( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
Matlamat kami adalah untuk bekerja dengan jadual terbitan yang termasuk hanya item yang diminta lebih banyak daripada yang tersedia dan yang perlu kami buat pesanan:
Kami boleh melaksanakan tugas ini dengan beberapa cara yang berbeza, semuanya mengeluarkan hasil yang sama dengan pelbagai kebaikan dan keburukan.
Pembentukan jadual mengikut permintaan
Jangan lakukan salinan tersebut! Kita boleh menggunakan formula berikut di mana-mana sahaja yang kita perlukan:
// Table shaping on demand, no need for a copy of the result
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Skop rekod dicipta oleh fungsi Penapis dan AddColumns untuk melaksanakan operasi perbandingan dan pengurangan, masing-masing, dengan medan 'Kuantiti Diminta' dan 'Kuantiti Tersedia' bagi setiap rekod.
Dalam contoh ini, fungsi Filter boleh diwakilkan. Ini penting kerana ia boleh mencari semua produk yang memenuhi kriteria walaupun hanya beberapa rekod daripada jutaan jadual. Pada masa ini, ShowColumns dan AddColumns tidak boleh diwakilkan, jadi bilangan sebenar produk yang perlu dipesan adalah terhad. Jika anda tahu saiz hasil ini sentiasa agak kecil, pendekatan ini baik-baik saja.
Dan kerana kami tidak membuat salinan, tiada salinan tambahan maklumat untuk diuruskan atau ketinggalan zaman.
ForAll atas permintaan
Pendekatan lain ialah menggunakan fungsi untuk ForAll menggantikan fungsi pembentuk jadual:
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
Formula ini mungkin lebih mudah bagi sesetengah orang untuk membaca dan menulis.
Tiada bahagian yang ForAll boleh diwakilkan. Hanya bahagian pertama jadual Produk dinilai, yang boleh menjadi masalah jika jadual ini besar. Oleh sebab Penapis boleh diwakilkan dalam contoh sebelumnya, ia dapat berfungsi lebih baik dengan set data yang besar.
Kumpulkan hasil
Dalam beberapa keadaan, salinan data mungkin diperlukan. Anda mungkin perlu memindahkan maklumat dari satu sumber data ke sumber yang lain. Dalam contoh ini, pesanan dibuat melalui jadual NewOrder pada sistem vendor. Untuk interaksi pengguna berkelajuan tinggi, anda mungkin mahu cache salinan tempatan jadual supaya tiada kependaman pelayan.
Kami menggunakan pembentukan jadual yang sama dengan dua contoh sebelumnya tetapi kami merekodkan hasil ke dalam koleksi:
ClearCollect( NewOrder,
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
)
ClearCollect( NewOrder,
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
ClearCollect dan Collect tidak boleh diwakilkan. Hasilnya, jumlah data yang boleh dipindahkan dengan cara ini adalah terhad.
Kumpulkan dalam ForAll
Akhir sekali, kita boleh melakukan Kumpul terus dalam ForAll:
Clear( NewOrder );
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
Collect( NewOrder,
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
Sekali lagi, fungsi tidak ForAll boleh diwakilkan pada masa ini. Jika jadual Produk kami besar, ForAll lihat set rekod pertama sahaja dan kami mungkin terlepas beberapa produk yang perlu dipesan. Tetapi untuk jadual yang kita tahu masih kecil, pendekatan ini baik-baik saja.
Ambil perhatian bahawa kami tidak menangkap hasil .ForAll Panggilan fungsi Kumpulkan yang dibuat dari dalamnya mengembalikan sumber data NewOrder untuk semua rekod, yang boleh menambah sehingga banyak data jika kami menangkapnya.
Jadual peta dalam komponen
Lihat Jadual peta.