Operator dan Pengidentifikasi di Power Apps

Berlaku untuk: Aplikasi kanvas Aplikasi berdasarkan model

Sebagian operator bergantung pada bahasa penulis. Untuk informasi lebih lanjut tentang dukungan bahasa dalam aplikasi kanvas, lihat aplikasi Global.

Simbol Tipe Contoh Description
'...' pengidentifikasi 'Nama Akun' Pengidentifikasi yang berisi karakter khusus, termasuk spasi, dilampirkan dalam tanda kutip tunggal
"..." String teks "Halo, Dunia" String teks dimasukkan di dalam tanda kutip ganda
$"..." Interpolasi String $"Yth {FirstName}," Rumus yang disematkan dalam string teks
. Pemilih properti Slider1.Value
Color.Red
Acceleration.X
Ekstrak properti dari tabel, kontrol, sinyal, atau enumerasi. Untuk kompatibilitas mundur, ! mungkin juga dapat digunakan.
.
[ketergantungan bahasa]
Pemisah desimal 1.23 Pemisah antara bagian utuh dan pecahan dari angka. Karakter bergantung pada bahasa.
( ) Tanda kurung Filter(T, A < 10)

(1 + 2) * 3
Memaksa aturan prioritas, dan mengelompokkan sub-ekspresi dalam ekspresi lebih besar
+ Operator aritmatika 1 + 2 Tambah
-   2 - 1 Pengurangan dan tanda
*   2 * 3 Perkalian
/   2 / 3 Divisi (juga melihat fungsi Mod )
^   2 ^ 3 Eksponensiasi, setara dengan fungsi Power
%   20% Persentase (setara dengan "* 1/100")
= Operator perbandingan Harga = 100 Sama dengan
>   Harga > 100 Lebih dari
>=   Harga >= 100 Lebih besar dari atau sama dengan
<   Harga < 100 Kurang dari
<=   Harga <= 100 Kurang dari atau sama dengan
<>   Harga <> 100 Tidak sama dengan
& Operator rangkaian string "Halo" & " " &; "Dunia" Membuat beberapa string muncul terus-menerus
&&atau dan Operator logika Harga < : 100 &&; Slider1.Value = 20
atau harga < 100 Dan Slider1.Value = 20
Konjungsi logis, setara dengan fungsi And
|| atau Atau   Price < 100 || Slider1.Value = 20 or Price < 100 Or Slider1.Value = 20 Kesenjangan logis, setara dengan fungsi Or
! atau Tidak   !(Harga < 100) atau Tidak (Harga < 100) Kesenjangan logis, setara dengan fungsi Not
exactin Operator keanggotaan Gallery1.Selected exactin SavedItems Milik koleksi atau tabel
exactin   "Windows" exactin “Untuk menampilkan jendela di sistem operasi Windows...” Uji substring (sensitivitas-huruf)
dalam   Gallery1.Selected di SavedItems Milik koleksi atau tabel
dalam   "The" di "keyboard dan monitor..." Uji substring (tidak peka huruf)
@ Operator disambigusiasi MyTable [@fieldname] Disambiguasi bidang
@   [@MyVariable] Disambiguasi global
,
[ketergantungan bahasa]
Pemisah daftar Jika(X < 10, "Rendah", "Baik" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
Memisahkan:
  • argumen dalam pemanggilan fungsi
  • bidang dalam catatan
  • catatan dalam tabel
Karakter ini bergantung pada bahasa.
;
[ketergantungan bahasa]
Rumus penautan Collect(T, A); Navigate(S1, "") Invokasi terpisah fungsi dalam properti perilaku. Operator penautan bergantung pada bahasa.
Sebagai Operator As AllCustomers sebagai Customer Menimpa thisitem dan thisrecord di galeri dan fungsi lingkup rekaman. As berguna untuk menyediakan nama spesifik yang lebih baik, dan sangat penting dalam skenario bersarang.
Mandiri Operator self Self.Fill Akses ke properti dari kontrol saat ini
Induk Operator induk Parent.Fill Akses ke properti dari kontainer kontrol
ThisItem Operator ThisItem ThisItem.FirstName Akses ke bidang kontrol Galeri atau formulir
ThisRecord Operator ThisRecord ThisRecord.FirstName Akses ke rekaman lengkap dan bidang individual rekaman dalam forall, Sum, With, dan fungsi cakupan rekaman lainnya. Dapat diganti dengan operator As.

Catatan

Operator @ juga dapat digunakan untuk memvalidasi jenis objek rekaman terhadap sumber data. Misalnya: Collect(coll,Account@{'Account Number: 1111')

operator dalam dan exactin

Gunakan operator in dan exactin untuk menemukan string dalam sumber data, seperti kumpulan atau tabel impor. Operator dalam mengidentifikasi kecocokan terlepas dari kasus, dan operator exactin mengidentifikasi kecocokan hanya jika mereka menggunakan huruf kapital. Berikut adalah contohnya:

  1. Buat atau impor koleksi bernama Inventaris, dan tampilkan di galeri, sebagaimana prosedur pertama di Tampilkan gambar dan teks di galeri menjelaskan.

  2. Atur properti Item galeri ke rumus ini:
    Filter(Inventaris, "E" pada ProductName)

    Galeri menampilkan semua produk kecuali Callisto karena nama produk tersebut adalah satu-satunya yang tidak berisi huruf yang Anda tentukan.

  3. Ubah properti Item galeri ke rumus ini:
    Filter(Inventaris, "E" exactin ProductName)

    Galeri hanya menampilkan Europa karena namanya hanya berisi huruf yang Anda tentukan dalam kasus yang Anda tentukan.

operator ThisItem, ThisRecord, dan As

Beberapa kontrol dan fungsi menerapkan rumus untuk rekaman individual dari tabel. Untuk merujuk pada rekaman individual dalam formula, gunakan salah satu dari berikut ini:

Operator Berlaku untuk Deskripsi
ThisItem Kontrol Gallery
Kontrol Edit Formulir
Kontrol Tampilkan formulir
Nama default untuk rekaman saat ini di galeri atau kontrol formulir.
ThisRecord fungsi ForAll, Filter, With, Sum dan cakupan rekaman lainnya Nama default untuk rekaman saat ini dalam fungsi ForAll dan cakupan rekaman lainnya.
Sebagainama Kontrol Gallery
ForAll, Filter, With, Sum fungsi cakupan rekaman lainnya
Menentukan nama untuk rekaman saat ini, menggantikan thisitem atau thisrecord secara default. Gunakan As untuk membuat formula lebih mudah dipahami dan mengatasi ambiguitas saat bersarang.

Operator ThisItem

Contohnya, dalam kontrol Galeri berikut, properti Item diatur ke sumber data Karyawan (seperti tabel Karyawan yang tercakup dengan sampel Northwind Trader):

Employees

Karyawan ditampilkan di galeri.

Item pertama di Galeri adalah template yang direplikasi untuk setiap karyawan. Pada template, rumus untuk gambar menggunakan thisitem untuk merujuk pada item saat ini:

ThisItem.Picture

Formula untuk gambar seorang karyawan.

Selain itu, rumus untuk nama juga menggunakan thisitem:

ThisItem.'First Name' & " " & ThisItem.'Last Name'

Formula untuk karyawan pertama dan nama belakang.

Operator ThisRecord

ThisRecord digunakan dalam fungsi yang memiliki cakupan rekaman. Misalnya, kita dapat menggunakan fungsi filter dengan properti Item Galeri kita untuk hanya menampilkan nama depan yang dimulai dengan M:

Filter( Employees, StartsWith( ThisRecord.Employee.'First Name', "M" ) )

Memfilter karyawan berdasarkan nama, menggunakan ThisRecord.

ThisRecord bersifat opsional dan tersirat dengan menggunakan bidang secara langsung, misalnya, dalam kasus ini, kita dapat menulis:

Filter( Employees, StartsWith( 'First Name', "M" ) )

Meskipun opsional, menggunakan thisrecord dapat membuat formula lebih mudah dipahami dan mungkin diperlukan dalam situasi yang ambigu dengan nama bidang juga dapat berupa nama relasi. ThisRecord adalah opsional sementara thisitem selalu diperlukan.

Gunakan thisrecord untuk mereferensikan seluruh rekaman dengan fungsi patch, Collect, dan cakupan rekaman lainnya. Misalnya, rumus berikut mengatur status untuk semua karyawan tidak aktif menjadi aktif:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees,
              Patch( Employees, ThisRecord, { Status: 'Status (Employees)'.Active } ) ) )

Operator As

Gunakan operator As untuk menamai rekaman di galeri atau fungsi cakupan rekaman, menimpa thisitem default atau thisrecord. Penamaan rekaman dapat membuat formula lebih mudah dipahami dan mungkin diperlukan dalam situasi bersarang untuk mengakses rekaman di cakupan lainnya.

Misalnya, Anda dapat memodifikasi properti item Galeri kami untuk menggunakan As untuk mengidentifikasi bahwa kita bekerja sama dengan seorang karyawan:

Employees As Employee

Galeri karyawan, menggunakan operator As.

Rumus untuk gambar dan nama disesuaikan untuk menggunakan nama ini untuk rekaman saat ini:

Employee.Picture

Gambar karyawan yang menggunakan nama Karyawan yang diatur dengan operator Sebagai.

Employee.'First Name' & " " & Employee.'Last Name'

Pertama dan nama belakang karyawan yang menggunakan Nama karyawan yang ditetapkan dengan operator Sebagai.

As juga dapat digunakan dengan fungsi cakupan rekaman untuk menggantikan nama default thisrecord. Kita dapat menerapkan ini ke contoh sebelumnya untuk memperjelas rekaman yang kita tangani:

With( { InactiveEmployees: Filter( Employees, Status = 'Status (Employees)'.Inactive ) },
      ForAll( InactiveEmployees As Employee,
              Patch( Employees, Employee, { Status: 'Status (Employees)'.Active } ) ) )

Saat mengurung Galeri dan fungsi jangkauan rekaman, thisitem dan thisrecord selalu merujuk pada lingkup paling dalam, meninggalkan rekaman dalam lingkup luar tidak tersedia. Gunakan As untuk membuat semua cakupan rekaman tersedia dengan memberi masing-masingnya nama unik.

Misalnya, rumus ini menghasilkan pola papan catur sebagai string teks dengan pengurungan dua fungsi forall:

Concat(
    ForAll( Sequence(8) As Rank,
        Concat(
            ForAll( Sequence(8) As File,
                    If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " )
            ),
            Value
        ) & Char(10)
    ),
    Value
)

Mengatur properti teks kontrol label ke formula ini menampilkan:

Teks papan catur diperlihatkan dalam kontrol label.

Mari kita membongkar apa yang terjadi di sini:

  • Kita mulai dengan iterasi tabel bernomor 8 yang tidak disebutkan namanya dari fungsi sequence. Loop ini adalah untuk setiap baris papan, yang biasanya disebut sebagai peringkat sehingga kami memberikan nama ini.
  • Untuk setiap baris, kami mengulang tabel lain yang tidak disebutkan namanya dari 8 kolom, dan kami memberikan file nama umum.
  • Jika Rank.Value + File.Value adalah angka ganjil, kotak akan mendapatkan X, jika tidak, dengan titik. Bagian dari rumus ini merujuk pada kedua loop forall, yang dimungkinkan dengan menggunakan operator As.
  • Concat Concat dua kali, terlebih dahulu untuk merakit kolom dan kemudian baris, dengan Char(10) yang dimasukkan untuk membuat baris baru.

Contoh serupa dimungkinkan dengan kontrol Galeri bersarang, bukan fungsi forall. Mari kita mulai dengan galeri vertikal untuk peringkat. Galeri kontrol ini akan memiliki rumus item:

Sequence(8) as Rank

Ilustrasi galeri luar yang menyediakan iterasi Rank.

Dalam galeri ini, kami akan menempatkan Galeri horizontal untuk file tersebut , yang akan direplikasi untuk setiap peringkat, dengan properti item:

Sequence(8) as File

Ilustrasi galeri bagian dalam yang menyediakan iterasi File.

Dan akhirnya, di dalam galeri ini, kami akan menambahkan kontrol label yang akan direplikasi untuk setiap file dan setiap peringkat. Kita akan menyesuaikan ukurannya untuk mengisi seluruh ruang dan menggunakan properti Fill untuk memberikan warna dengan rumus ini:

If( Mod( Rank.Value + File.Value, 2 ) = 1, Green, Beige )

Kontrol label dalam dua galeri yang menyediakan warna bergantian untuk papan catur.

Operator Self dan Parent

Ada tiga cara untuk merujuk ke kontrol dan properti dalam formula:

Metode Deskripsi
Dengan Nama Kontrol Kontrol apa pun dapat dirujuk berdasarkan nama dari mana pun dalam aplikasi.

Misalnya, Label1.Fill merujuk pada properti fill dari nama kontrol yang namanya adalah Label1.
Operator Self Sering nyaman merujuk properti lain untuk kontrol yang sama saat menulis formula. Alih-alih menggunakan referensi absolut berdasarkan nama, lebih mudah dan lebih portabel untuk menggunakan referensi relatif untuk kediri sendiri. Operator Self menyediakan akses yang mudah ke kontrol saat ini.

Misalnya, Self.Fill mengacu pada warna isi kontrol saat ini.
operator induk Beberapa kontrol akan menghosting kontrol lainnya, seperti kontrol layar dan galeri. Kontrol hosting kontrol dari kontrol di dalamnya disebut sebagai parent. Seperti operator Self, operator Parent menyediakan referensi relatif mudah ke kontrol penampung.

Misalnya, Parent.Fill mengacu pada properti isi kontrol yang merupakan wadah untuk kontrol saat ini.

Self dan Parent adalah operator dan bukan properti pada kontrol itu sendiri. Merujuk pada Parent.Parent, Self.Parent atau Parent.Self tidak didukung.

Nama pengidentifikasi

Nama variabel, sumber data, kolom, dan objek lain dapat berisi Unicode.

Gunakan tanda kutip tunggal di sekitar nama yang berisi spasi atau karakter khusus lainnya.
Gunakan dua kuotasi tunggal bersama-sama untuk menunjukkan satu kuotasi tunggal di nama. Nama yang tidak berisi karakter khusus tidak memerlukan kuotasi tunggal.

Berikut adalah beberapa contoh nama kolom yang mungkin Anda temui dalam tabel, dan bagaimana mereka diwakili dalam rumus:

Nama kolom di database Referensi kolom dalam rumus
SimpleName SimpleName
NameWith123Numbers NameWith123Numbers
Nama dengan spasi 'Name with spaces'
Nama dengan tanda kutip "ganda" 'Name with "double" quotes'
Nama dengan tanda kutip 'tunggal' 'Name with ''single'' quotes'
Nama dengan tanda @ at 'Name with an @ at sign'

Tanda kutip ganda digunakan untuk menentukan string teks.

Nama tampilan dan nama Logis

Beberapa sumber data seperti SharePoint dan Microsoft Dataverse memiliki dua nama berbeda untuk merujuk ke tabel atau kolom data yang sama:

  • Nama logis - Nama yang dijamin unik, tidak berubah setelah dibuat, biasanya tidak mengizinkan spasi atau karakter khusus lainnya, dan tidak dilokalisasi ke dalam bahasa yang berbeda. Akibatnya, nama dapat kriptik. Nama ini digunakan oleh pengembang professional. Misalnya, cra3a_customfield. Nama ini juga dapat disebut sebagai nama skema atau hanyas nama.

  • Nama tampilan - Nama yang ramah pengguna dan ditujukan untuk dilihat oleh pengguna akhir. Nama ini mungkin tidak unik, dapat berubah dari waktu ke waktu, mungkin berisi spasi dan karakter Unicode, dan dapat dilokalkan ke dalam bahasa yang berbeda. Sesuai dengan contoh di atas, nama tampilan mungkin bidang kustom dengan spasi di antara kata-kata.

Karena nama tampilan lebih mudah dimengerti, aplikasi kanvas akan menyarankan mereka sebagai pilihan dan tidak menyarankan nama logis. Meskipun nama logis tidak disarankan, mereka masih dapat digunakan jika diketik secara tidak langsung.

Contohnya, bayangkan Anda telah menambahkan Bidang Kustom ke tabel di Dataverse. Nama logis akan ditetapkan untuk Anda oleh sistem yang dapat Anda modifikasi hanya saat membuat bidang. Hasilnya akan terlihat seperti:

Tabel akun dengan Bidang Kustom ditambahkan, memperlihatkan nama tampilan

Bila penulisan merujuk ke bidang Akun, saran akan dibuat menggunakan 'Bidang Kustom' karena ini adalah nama tampilan. Tanda kutip tunggal harus digunakan karena nama ini memiliki spasi di dalamnya:

Bilah rumus studio menampilkan saran untuk nama kolom Akun dengan

Setelah memilih saran, 'Bidang Kustom' ditampilkan di bilah rumus dan data diperoleh:

Bilah rumus studio memperlihatkan penggunaan 'Bidang Kustom' nama tampilan untuk bidang tersebut.

Meskipun tidak disarankan, kita juga dapat menggunakan nama logis untuk bidang ini. Hal ini akan menghasilkan data yang sama diambil. Tanda kutip tunggal tidak diperlukan karena nama ini tidak mengandung spasi atau karakter khusus:

Bilah rumus studio memperlihatkan penggunaan nama logis cr5e3_customfield untuk bidang tersebut.

Di belakang layar, pemetaan dipertahankan antara nama tampilan yang dilihat dalam rumus dan nama logika yang mendasari. Karena nama logis harus digunakan untuk berinteraksi dengan sumber data, pemetaan ini digunakan untuk mengkonversi dari nama tampilan saat ini ke nama logis secara otomatis dan itulah yang dilihat di lalu lintas jaringan. Pemetaan ini juga digunakan untuk mengkonversi kembali ke nama logis untuk beralih ke nama tampilan baru, misalnya, jika nama tampilan berubah atau pembuat dalam bahasa yang berbeda mengedit aplikasi.

Catatan

Nama logis tidak diterjemahkan saat memindahkan aplikasi antara lingkungan. Untuk nama tabel dan bidang sistem Dataverse, hal ini seharusnya tidak menjadi masalah karena nama logis konsisten di seluruh lingkungan. Namun, bidang kustom apa pun, seperti cra3a_customfield dalam contoh di atas, mungkin memiliki prefiks lingkungan yang berbeda (cra3a dalam kasus ini). Nama tampilan lebih disukai karena dapat dicocokkan dengan nama tampilan di lingkungan baru.

Disambiguasi nama

Karena nama tampilan tidak unik, nama tampilan yang sama mungkin muncul lebih dari sekali dalam tabel yang sama. Bila ini terjadi, nama logis akan ditambahkan ke akhir nama tampilan dalam tanda kurung untuk salah satu dari lebih banyak nama yang bentrok. Membangun pada contoh di atas, jika ada bidang kedua dengan nama tampilan yang sama dari Bidang Kustom dengan nama logis cra3a_customfieldalt maka saran akan ditampilkan:

Bilah rumus studio memperlihatkan penggunaan nama logis cr5e3_customfieldalt untuk mendisambiguasikan dua versi

String disambiguasi nama ditambahkan pada situasi lain saat konflik nama terjadi, seperti nama tabel, pilihan, dan item Dataverse lainnya.

Operator disambigusiasi

Beberapa fungsi membuat cakupan catatan untuk mengakses bidang tabel sewaktu memproses setiap rekaman, seperti Filter, AddColumns, dan Sum. Nama bidang yang ditambahkan dengan cakupan data mengambil alih nama yang sama dari tempat lain di aplikasi. Bila hal ini terjadi, Anda tetap dapat mengakses nilai dari luar cakupan catatan dengan operator disambiguasi @:

  • Untuk mengakses nilai dari cakupan data bersarang, gunakan operator @ dengan nama tabel yang sedang dioperasikan saat menggunakan pola ini:
    Table[@FieldName]
  • Untuk mengakses nilai global, seperti sumber data, koleksi, dan variabel konteks, gunakan pola [@ObjectName] (tanpa penetapan tabel).

Untuk informasi dan contoh lainnya, lihat cakupan catatan.