Fungsi tampalan
Digunakan untuk: Apl kanvas Aliran desktop CLI Power Platform apl dipacu model
Ubah suai atau cipta satu atau lebih rekod dalam sumber data, atau cantum rekod di luar sumber data.
Gunakan fungsi Tampalan untuk mengubah suai rekod dalam situasi yang rumit seperti apabila anda melakukan kemas kini yang tidak memerlukan interaksi pengguna atau menggunakan borang yang merentangi berbilang skrin.
Untuk mengemas kini dalam sumber data dengan lebih mudah bagi perubahan yang mudah, gunakan kawalan Borang edit sebaliknya. Apabila anda menambah kawalan Borang edit, anda menyediakan pengguna dengan borang untuk diisi dan kemudian menyimpan perubahan ke sumber data. Untuk maklumat lanjut, lihat Memahami borang data.
Tonton video ini untuk mengetahui cara menggunakan fungsi Patch:
Gambaran keseluruhan
Gunakan fungsi Patch untuk mengubah suai satu atau lebih rekod sumber data. Nilai medan tertentu diubah suai tanpa memberi kesan pada sifat yang lain. Contohnya, formula ini mengubah nombor telefon pelanggan bernama Contoso:
Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: "1-212-555-1234" } )
Gunakan Patch dengan fungsi Defaults untuk mencipta rekod. Gunakan tingkah laku ini untuk membina skrin tunggal bagi kedua-dua mencipta dan mengedit rekod. Contohnya, formula ini mencipta rekod bagi pelanggan bernama Contoso:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
Walaupun jika anda tidak bekerja dengan sumber data, anda boleh menggunakan Patch untuk mencantum dua atau lebih rekod. Contohnya, formula ini mencantumkan dua rekod ke dalam satu yang mengenal pasti kedua-dua nombor telefon dan lokasi untuk Contoso:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
Penerangan
Ubah suai atau cipta rekod dalam sumber data
Untuk menggunakan fungsi ini dengan sumber data, tentukan sumber data, dan kemudian tentukan rekod asas:
- Untuk mengubah suai rekod, rekod asas perlu datang daripada sumber data. Rekod asas mungkin datang daripada sifat galeri Item, diletakkan dalam pemboleh ubah konteks, atau datang daripada beberapa laluan yang lain. Tetapi, anda boleh menjejak rekod asas ke sumber data. Ini adalah penting kerana rekod akan termasuk maklumat tambahan untuk membantu mencari rekod semula untuk pengubahsuaian.
- Untuk mencipta rekod, gunakan fungsi Defaults untuk mencipta rekod asas dengan nilai lalai.
Kemudian tentukan satu atau lebih rekod yang berubah, setiap satu mengandungi nilai sifat baharu yang menggantikan nilai sifat dalam rekod asas. Rekod yang berubah diproses dalam susunan daripada permulaan senarai argumen ke akhir, dengan nilai sifat terkini menggantikan yang sebelumnya.
Nilai yang dikembalikan Patch ialah rekod yang anda ubah suai atau cipta. Jika anda mencipta rekod, nilai yang dikembalikan mungkin termasuk sifat yang dijana oleh sumber data secara automatik. Walau bagaimanapun, nilai pulangan tidak menyediakan nilai untuk medan jadual yang berkaitan.
Contohnya, anda menggunakan Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"));
dan kemudian MyAccount.'Primary Contact'.'Full Name'
. Anda tidak boleh menghasilkan nama penuh dalam kes ini. Sebaliknya, untuk mengakses medan jadual berkaitan, gunakan carian berasingan seperti:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
Apabila anda mengemas kini sumber data, satu atau lebih isu mungkin timbul. Gunakan IfError dan IsError dengan nilai pulangan daripada Tampalan untuk mengesan dan bertindak balas terhadap ralat, seperti yang Pengendalian Ralat terangkan. Anda boleh juga menggunakan fungsi Ralat untuk mengenal pasti dan memeriksa isu, seperti yang Bekerja dengan Sumber Data terangkan.
Fungsi berkaitan termasuk fungsi Update untuk menggantikan keseluruhan rekod, dan fungsi Collect untuk mencipta rekod. Gunakan fungsi UpdateIf untuk mengubah suai sifat tertentu bagi berbilang rekod berasaskan pada syarat.
Ubah suai atau cipta set rekod dalam data sumber
Tampalan juga boleh digunakan untuk mencipta atau mengubah suai berbilang rekod dengan satu panggilan.
Daripada melalui rekod asas tunggal, jadual rekod asas boleh disediakan dalam argumen kedua. Rekod ubah juga disediakan dalam jadual, berpadanan satu untuk satu dengan rekod asas. Bilangan rekod dalam setiap jadual ubah mesti sama dengan bilangan rekod dalam jadual asas.
Apabila menggunakan Patch melalui cara ini, nilai yang dikembalikan juga adalah jadual dengan setiap rekod berpadanan satu ke satu dengan rekod asas dan ubah.
Cantumkan rekod di luar sumber data
Tentukan dua atau lebih rekod yang anda mahu cantumkan. Rekod diproses dalam susunan dari permulaan senarai argumen hingga akhir, dengan nilai sifat yang terkini menggantikan nilai terdahulu.
Patch mengembalikan rekod yang digabungkan dan tidak mengubah suai hujah atau rekodnya dalam mana-mana sumber data.
Sintaks
Ubah suai atau cipta rekod dalam sumber data
Tampalan( Sumber Data,BaseRecord,ChangeRecord1 [, ChangeRecord2, ... ])
- Sumber Data– Diperlukan. Sumber data yang mengandungi rekod yang anda mahu ubah suai atau akan mengandungi rekod yang anda mahu cipta.
- BaseRecord – Diperlukan. Rekod untuk diubah suai atau cipta. Jika rekod datang daripada sumber data, rekod ditemui dan diubah suai. Hasil Defaults digunakan, rekod dicipta.
- ChangeRecords – Diperlukan. Satu atau lebih rekod yang mengandungi sifat untuk diubah suai dalam BaseRecord. Rekod yang berubah diproses dalam susunan daripada permulaan senarai argumen ke akhir, dengan nilai sifat terkini menggantikan yang sebelumnya.
Ubah suai atau cipta set rekod dalam data sumber
Patch(Sumber Data,BaseRecordsTable,ChangeRecordTable1 [ ,ChangeRecordTable2 , ... ] )
- Sumber Data– Diperlukan. Sumber data mengandungi rekod yang anda mahu ubah suai atau akan mengandungi rekod yang anda mahu cipta.
- BaseRecordTable – Diperlukan. Jadual rekod untuk diubah suai atau dicipta. Jika rekod datang daripada sumber data, rekod ditemui dan diubah suai. Hasil Defaults digunakan, rekod dicipta.
- ChangeRecordTables – Diperlukan. Satu atau lebih jadual rekod yang mengandungi sifat untuk diubah suai bagi setiap rekod BaseRecordTable. Rekod yang berubah diproses dalam susunan daripada permulaan senarai argumen ke akhir, dengan nilai sifat terkini menggantikan yang sebelumnya.
Cantum rekod
Tampalan( Rekod1,Rekod2 [, ...] )
- Rekod - Diperlukan. Sekurang-kurangnya dua rekod yang anda mahu cantumkan. Rekod diproses mengikut susunan daripada awal senarai argumen hingga akhir, dengan nilai sifat terkini menggantikan nilai terdahulu.
Contoh
Ubah suai atau cipta rekod (dalam sumber data)
Dalam contoh ini, anda akan mengubah suai atau mencipta rekod dalam sumber data, yang dinamakan IceCream, yang mengandungi data dalam jadual ini dan menjana nilai secara automatik dalam IDlajur:
Formula | Description | Keputusan |
---|---|---|
Tampalan ( Ais Krim, Cari( IceCream, Perisa = "Coklat" ), { Kuantiti: 400 } ) |
Mengubah suai rekod dalam sumber data IceCream:
|
{ ID: 1, Perisa: "Coklat", Kuantiti: 400 } Kemasukan Coklat dalam sumber data IceCream telah diubah suai. |
Tampalan ( Ais Krim, Lalai ( Ais Krim ), { Rasa: "Strawberi") } | Cipta rekod dalam sumber data IceCream:
|
{ ID: 3, Perisa: "Strawberi", Kuantiti: 0 } Kemasukan Strawberi dalam sumber data IceCream telah dicipta. |
Selepas formula terdahulu dinilai, sumber data berakhir dengan nilai ini:
Cantum rekod (di luar sumber data)
Formula | Penerangan | Hasil |
---|---|---|
Tampalan( { Nama: "James", Markah: 90 }, Nama { : "Jim", Lulus: benar } ) | Cantumkan dua rekod di luar sumber data:
|
{ Nama: "Jim", Skor: 90, Lulus: benar } |
Penggunaan Sebagai atau RekodIni
Menggunakan Sebagai atau kata kunci RekodIni dalam formula mengelakkan konteks penilaian yang tidak jelas.
Dalam contoh di bawah, pertimbangkan carian pertama dalam pernyataan If
tersebut. (OrderID = A[@OrderID])
dijangka membandingkan dalam OrderId
skop carian dengan OrderId
koleksi A
dalam ForAll
skop. Dalam kes ini, anda mungkin mahu A[@OrderId]
diselesaikan sebagai parameter tempatan. Tetapi ia adalah tidak jelas.
Power Apps kini menafsirkan kedua-dua belah kiri OrderId
dan belah kanan A[@OrderId]
sebagai medan dalam skop carian. Oleh itu, carian sentiasa akan mencari baris pertama dalam [dbo].[Orders1]
kerana keadaan sentiasa benar (iaitu, mana-mana baris OrderId
adalah sama untuk dirinya sendiri.)
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Menggunakan Sebagai atau RekodIni
Apabila mungkin gunakan operator Sebagai atau RekodIni untuk tidak meragui belah kiri. Seperti yang disyorkan untuk senario di atas.
Apabila formula anda menggunakan pelbagai skop dengan ForAll
, Filter
dan Lookup
pada sumber data atau jadual yang sama, ada kemungkinan parameter skop boleh bertembung dengan medan yang sama di tempat lain. Oleh itu, ia disyorkan untuk menggunakan operator Sebagai atau RekodIni untuk menyelesaikan nama medan dan mengelakkan kekaburan.
Sebagai contoh, anda boleh menggunakan operator Sebagai untuk tidak meragui dalam contoh di bawah.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]' As B,
B.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]' As C,
C.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Sebagai alternatif, anda boleh menggunakan RekodIni untuk tujuan yang sama.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
Untuk mengetahui lebih lanjut tentang penggunaan operator Sebagai dan RekodIni lihat artikel Operators.