Bagikan melalui


Jenis data

Informasi mengalir dalam Power Fx nilai kecil dan diskrit, sangat mirip dengan sel-sel spreadsheet. Misalnya, data dalam bidang Tanggal lahir dan bidang Peringatan keduanya akan mengalir sebagai nilai Tanggal yang mencakup tahun, bulan, dan hari. Power Fx tahu cara memformat nilai-nilai ini, membatasi input ke apa yang sesuai untuk masing-masing, dan berbagi nilai dengan database. Ulang tahun berbeda dari peringatan bagi orang-orang, tetapi sistem menanganinya dengan cara yang sama persis. Dalam kasus ini, Tanggal adalah contoh jenis data.

Artikel ini memberikan detail untuk jenis data yang Power Fx mendukung. Saat Power Fx tersambung ke sumber data eksternal, setiap jenis data dalam sumber tersebut dipetakan ke tipe data di Power Fx.

Tipe data Description Contoh
Boolean Nilai true atau false. Dapat digunakan secara langsung dalam fungsi If, Filter dan fungsi lainnya tanpa perbandingan. benar
Pilihan Pilihan dari serangkaian pilihan, yang didukung oleh angka. Jenis data ini menggabungkan label teks yang dapat dilokalisasi dengan nilai numerik. Label muncul di aplikasi, dan nilai numerik disimpan serta digunakan untuk perbandingan. Tipe data ini didukung oleh fungsi Jenis jika instans bidang Pilihan digunakan berdasarkan nama. Item.Status Pesanan Ini
Warna Spesifikasi warna, termasuk saluran alfa. Warna.Merah
Nilai Warna( "#102030")
RGBA ( 255, 128, 0, 0.5 )
Mata uang Nilai mata uang yang disimpan dalam bilangan titik mengambang. Nilai mata uang sama dengan nilai angka dengan pilihan pemformatan mata uang. Jenis data Mata Uang tidak didukung oleh fungsi Jenis . 123
4.56
Tanggal Tanggal tanpa waktu, di zona waktu pengguna aplikasi. Tanggal( 2019, 5, 16 )
TanggalWaktu Tanggal dengan waktu, di zona waktu pengguna aplikasi. DateTimeValue( "16 Mei, 2019 1:23:09 PM" )
Desimal Angka dengan presisi tinggi, operasi basis 10, dan jangkauan terbatas. 123
Desimal( "1.2345")
Mengapung Angka dengan presisi standar, operasi basis 2, dan jangkauan yang luas. 123
8.903e121
1.234e-200
GUID Pengidentifikasi Unik Global. PANDUAN ()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hyperlink String teks yang menyimpan hyperlink. "https://powerapps.microsoft.com"
Citra Sebuah string teks pengidentifikasi sumber daya universal (URI) untuk gambar dalam format .jpeg, .png, .svg, .gif, atau format gambar web umum lainnya. Jenis data Gambar tidak didukung oleh fungsi Jenis . MyImage ditambahkan sebagai sumber daya aplikasi
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Media Sebuah string teks URI untuk rekaman video atau audio. Tipe data Media tidak didukung oleh fungsi Jenis . MyVideo ditambahkan sebagai sumber daya aplikasi
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Angka Alias untuk Desimal (sebagian besar Power Fx host) atau Float (aplikasi Kanvas). Jika salah satu variasi angka dapat digunakan untuk situasi tertentu, gunakan Nomor untuk kompatibilitas maksimum. 123
0.0123
1e4
Rekor Rekaman nilai data. Jenis data gabungan ini berisi contoh jenis data lain yang tercantum dalam topik ini. Informasi lebih lanjut: Bekerja dengan tabel. Tipe data ini didukung oleh fungsi Type jika instans Record digunakan. { Perusahaan: "Pedagang Northwind",
Staf: 35,
Nirlaba: false }
Referensi rekaman Referensi ke rekaman dalam tabel. Referensi tersebut sering digunakan dengan pencarian polimorfik. Informasi lebih lanjut: Bekerja dengan referensi. Tipe data ini tidak didukung oleh fungsi Type . Pertama (Akun). Pemilik
Meja Tabel rekaman. Semua rekaman harus memiliki nama yang sama untuk bidang mereka yang mempunyai jenis data sama, dan bidang yang dihilangkan akan diperlakukan sebagai kosong. Jenis data gabungan ini berisi contoh jenis data lain yang tercantum dalam topik ini. Informasi lebih lanjut: Bekerja dengan tabel. Tipe data ini didukung oleh fungsi Type jika instans Tabel digunakan. Tabel ( { Nama Depan: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Teks String teks Unicode. "Halo, Dunia"
Waktu Waktu tanpa tanggal, di zona waktu pengguna aplikasi. Waktu( 11, 23, 45 )
Tidak diketik Objek tanpa jenis yang ditentukan. Objek yang mendasarinya dapat berupa jenis apa pun yang ada, dan dapat diubah menjadi jenis yang kompatibel menggunakan fungsi seperti Boolean(), Value (), Table (), dll. Untuk informasi selengkapnya, lihat Objek yang tidak diketik dan Bekerja dengan JSON. ParseJSON("{ ""Bidang"" : 1234 }"). Kebun
Kosong Hanya digunakan oleh fungsi yang ditentukan pengguna perilaku, ini menunjukkan bahwa fungsi tidak memiliki jenis pengembalian. Tipe data ini tidak didukung oleh fungsi Type . Meskipun fungsi tidak memiliki jenis atau nilai pengembalian, fungsi selalu dapat mengembalikan kesalahan. Hai(): void = { beritahu( "Halo!" ) }
Ya/Tidak Satu pilihan dari serangkaian dua pilihan, yang didukung oleh nilai boolean. Jenis data ini menggabungkan label teks yang dapat dilokalisasi dengan nilai boolean. Label akan muncul di aplikasi, dan nilai boolean disimpan serta digunakan untuk perbandingan. Tipe data ini didukung oleh fungsi Jenis jika instans bidang Ya/Tidak digunakan berdasarkan nama. Item.Kena Pajak

Banyak jenis data ini yang serupa dan memiliki representasi dasar yang sama, seperti bidang Hyperlink yang diperlakukan sebagai Teks. Jenis data tambahan memberikan pengalaman default yang lebih baik dalam formulir dan kontrol lainnya.

Kosong

Semua jenis data dapat memiliki nilai kosong (dengan kata lain, tidak ada nilai). Istilah "null" sering digunakan dalam database untuk konsep ini.

Gunakan fungsi Blank dengan fungsi Set atau Patch untuk mengatur variabel atau bidang menjadi kosong. Misalnya, Set( x, Blank() ) menghilangkan nilai apa pun dalam variabel global x.

Uji nilai kosong dengan menggunakan fungsi IsBlank. Ganti nilai kosong yang mungkin dengan nilai selain kosong dengan menggunakan fungsi Coalesce.

Karena semua jenis data mendukung kosong, jenis data Boolean dan Dua pilihan secara efektif memiliki nilai yang mungkin.

Keempat jenis data ini didasarkan pada string teks Unicode.

Teks tertanam

String teks tertanam dalam suatu rumus diapit dengan tanda kutip ganda. Gunakan dua tanda kutip ganda bersama-sama untuk menunjukkan satu tanda kutip dalam string teks. Misalnya, menggunakan rumus berikut dalam properti OnSelect kontrol Tombol:

Notify( "Jane said ""Hello, World!""" )

menghasilkan banner saat tombol ditekan, di mana tanda kutip ganda pertama dan terakhir dihilangkan (karena membatasi string teks) dan tanda kutip ganda yang berulang di sekitar Halo, Dunia! diganti dengan tanda kutip ganda:

pemberitahuan pop up dengan pesan Jane yang mengatakan

Tanda kutip tunggal digunakan untuk nama pengidentifikasi yang berisi karakter khusus dan tidak memiliki signifikansi khusus dalam string teks.

Interpolasi string

Gunakan interpolasi string untuk menanam rumus dalam string teks. Pendekatan ini seringkali lebih mudah untuk dikerjakan dan memvisualisasikan output daripada menggunakan fungsi Concatenate or& .

Prefiks string teks dengan tanda dolar $ dan lampirkan rumus yang akan disematkan dengan kurung kurawal { }. Untuk memasukkan kurung kurawal dalam string teks, gunakan kurung kurawal berulang: {{ atau }}. Interpolasi string dapat digunakan di mana pun string teks standar dapat digunakan.

Misalnya, pertimbangkan rumus ini dengan variabel global Apel diatur ke 3 dan Pisang diatur ke 4:

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

Rumus ini mengembalikan string teks Kami memiliki 3 apel, 4 pisang, menghasilkan total 7 buah. Variabel Apel dan Pisang dimasukkan ke dalam teks yang menggantikan kurung kurawal, bersama dengan hasil rumus matematika dari Apel+ Pisang. Spasi dan karakter lain di sekitar kurung kurawal dipertahankan sebagaimana adanya.

Rumus yang disematkan dapat mencakup fungsi atau operator apa pun. Yang diperlukan adalah bahwa hasil rumus dapat dibuat dengan string teks. Misalnya, rumus ini menyisipkan Nama Panggilan jika disediakan, atau Nama Depan jika tidak, dalam salam:

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"

Jika NickName diatur ke "Joe", maka rumus ini menghasilkan string teks Selamat datang Joe, senang bertemu Anda!. Namun jika NickNamekosong dan FirstName adalah "Joseph", maka rumus ini menghasilkan Yth. Joseph, sangat senang bertemu Anda!.

Interpolasi string dapat mencakup string teks standar dalam rumus yang disematkan. Misalnya, jika Tidak ada NickName maupun FirstName yang diberikan, kami tetap dapat menyediakan "Teman" sebagai pengganti:

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

Interpolasi string bahkan dapat dikurung. Pertimbangkan contoh ini dengan nama Depan, Tengah dan Belakang menjadi salam. Bahkan jika satu atau dua dari nilai ini kosong , jumlah spasi yang benar dipertahankan di antara bagian nama. Jika tidak ada bagian yang diberikan, interpolasi string dalam akan diciutkan ke string kosong, dan akan diganti dengan fungsi Coalesce oleh "Teman".

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Depan Tengah Terakhir Hasil
John Qunicy Doe Welcome John Quincy Doe!
John Kosong Doe Welcome John Doe!
Kosong Kosong Doe Welcome Doe!
Kosong Kosong Kosong Welcome Friend!

Baris baru

String teks yang disematkan dapat berisi baris baru. Misalnya, lihat pengaturan properti Teks kontrol label menjadi berikut ini:

"Line 1
Line 2
Line 3"

Rumus ini menghasilkan tiga baris yang ditampilkan dalam kontrol label:

String teks yang disematkan dan kontrol label yang memperlihatkan tiga baris dengan Baris 1, Baris 2, dan Baris 3.

Baris baru juga didukung dengan interpolasi string:

$"Line {1}
Line {1+1}
Line {1+1+1}"

Yang menghasilkan output yang sama:

Rumus interpolasi string dan kontrol label yang menunjukkan tiga baris dengan Baris 1, Baris 2, dan Baris 3.

Sumber daya Gambar dan Media

Melalui menu File, Anda dapat menambahkan file gambar, video, dan audio sebagai sumber daya aplikasi. Nama file yang diimpor akan menjadi nama sumber daya dalam aplikasi. Dalam grafik ini, logo Northwind Traders, yang diberi nama nwindlogo, telah ditambahkan ke aplikasi:

Sumber daya angin utara.

Untuk menggunakan sumber daya ini di aplikasi, tentukan dalam properti Gambar dari kontrol Gambar:

Gambar angin utara.

URI untuk gambar dan media lainnya

Anda dapat menggali sedikit lebih dalam ke contoh terakhir dengan mengatur properti Teks dari kontrol Label ke nwindlogo. Label menampilkan string teks:

Teks Northwind.

Aplikasi kanvas merujuk setiap gambar atau file media lainnya, baik di cloud maupun ditambahkan sebagai sumber daya aplikasi, berdasarkan string teks URI.

Misalnya, properti Gambar dari kontrol gambar tidak hanya menerima sumber daya aplikasi, tetapi juga tautan ke gambar di web, seperti "https://northwindtraders.com/logo.jpg"";. Properti juga menerima gambar sebaris yang menggunakan skema URI data, seperti dalam contoh ini:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

URI tersebut menampilkan dua berlian ungu dalam versi yang telah ditingkatkan:

Berlian ganda.

Anda dapat menampilkan gambar terbaru yang diambil dalam kontrol Kamera jika Anda menetapkan properti Gambar dari kontrol gambar ke properti Foto dari kontrol kamera. Aplikasi ini menyimpan gambar dalam memori, dan properti Foto dari kontrol kamera mengembalikan referensi URI ke gambar. Misalnya, Anda dapat mengambil gambar, dan properti Foto kamera dapat mengembalikan "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Anda menggunakan URI sebagai referensi gambar atau file media lain yang tersimpan di database. Dengan begitu, aplikasi tidak mengambil data aktual hingga data tersebut diperlukan. Contohnya, lampiran dalam tabel Microsoft Dataverse dapat menghasilkan "appres://datasources/Contacts/table/..." Seperti pada contoh kamera, Anda dapat menampilkan gambar ini dengan mengatur properti Gambar dari kontrol gambar ke referensi ini yang akan mengambil data biner.

Bila Anda menyimpan jenis data media, seperti gambar, ke database, aplikasi akan mengirimkan data gambar atau media aktual, bukan referensi URI.

Batas ukuran

Sebagai string teks dan URI, jenis data ini tidak memiliki batas prasetel pada panjangnya.

Data biner yang direferensikan jenis data ini juga tidak memiliki batas ukuran prasetel. Misalnya, gambar yang diambil melalui kontrol kamera yang direferensikan sebagai "appres://..."dapat berukuran besar dan beresolusi tinggi seperti yang dapat dikumpulkan oleh kamera perangkat. Resolusi, frame rate, dan atribut lain dari file media tidak dibatasi oleh jenis data, tetapi kontrol khusus untuk memutar dan menangkap media mungkin memiliki keterbatasan masing-masing.

Namun, semua ukuran data bergantung pada jumlah memori yang tersedia di aplikasi. Browser yang berjalan pada komputer desktop biasanya mendukung lebih dari 100 megabyte data. Namun, jumlah memori yang tersedia pada perangkat seperti telepon mungkin jauh lebih rendah, biasanya di rentang 30-70 megabyte. Untuk menentukan apakah aplikasi Anda berjalan dalam batas ini, uji skenario umum di semua perangkat yang seharusnya dijalankan.

Sebagai praktik terbaik, simpan data di memori hanya selama diperlukan. Unggah gambar ke database sesegera mungkin; unduh gambar hanya bila pengguna aplikasi memintanya.

Nomor

Catatan

Power Apps hanya mendukung Float hari ini dan itu adalah jenis dari semua angka. Dukungan desimal akan segera ditambahkan.

Power Fx mendukung dua jenis angka: Desimal dan Float (dengan sinonim Angka dan Mata Uang ).

Desimal adalah yang terbaik untuk sebagian besar perhitungan bisnis. Ini dapat secara akurat mewakili angka dalam basis 10 yang berarti dapat 0.1 direpresentasikan dengan tepat dan akan menghindari kesalahan pembulatan selama perhitungan. Ini memiliki jangkauan yang cukup besar untuk kebutuhan bisnis apa pun, hingga 1028 dengan presisi hingga 28 digit. Desimal adalah tipe data numerik default untuk sebagian besar Power Fx host, digunakan jika seseorang hanya menulis 2*2.

Float adalah yang terbaik untuk perhitungan ilmiah. Ini dapat mewakili angka dalam kisaran yang lebih besar, hingga 10308. Presisi dibatasi hingga 15 tempat desimal dan matematika didasarkan pada basis 2 sehingga tidak dapat mewakili beberapa nilai desimal umum dengan tepat. Float juga memiliki kinerja yang lebih tinggi dan disukai jika itu adalah faktor dan presisi tidak penting.

Angka desimal

Tipe data Desimal paling sering menggunakan tipe data desimal.NET. Beberapa host, seperti Dataverse kolom rumus yang dijalankan di SQL Serer, menggunakan tipe data desimal SQL Server.

Desimal melakukan matematika seperti yang Anda pelajari di sekolah, menggunakan digit basis 10, penting untuk menghindari kesalahan pembulatan dari perbedaan yang sangat kecil yang dapat terakumulasi saat menggunakan matematika basis 2 (seperti yang digunakan oleh Float).

Kisarannya dari positif 79,228,162,514,264,337,593,543,950,335 hingga negatif 79,228,162,514,264,337,593,543,950,335. Pemisah desimal dapat ditempatkan di mana saja di dalam angka-angka ini, memberikan hingga 28 digit presisi, dan masih diwakili dengan tepat. Misalnya, 79,228,162,514,264.337593543950335 dapat diwakili dengan tepat, seperti halnya 7.9228162514264337593543950335.

Angka floating point

Tipe data Float , juga dikenal sebagai Angka atau Mata Uang, menggunakan standar floating-point presisi ganda IEEE 754. Standar ini menyediakan rentang angka yang sangat besar untuk bekerja, mulai dari –1,79769 x 10308 hingga 1,79769 x 10308. Nilai terkecil yang dapat diwakili adalah 5 x 10–324.

Float dapat dengan tepat mewakili bilangan bulat (atau bilangan bulat) antara –9,007,199,254,740,991 (–(253 – 1)) dan 9,007,199,254,740,991 (253 – 1), inklusif. Rentang ini lebih besar dari jenis data integer 32 bit (atau 4 byte) yang biasanya digunakan oleh database. Namun, aplikasi kanvas tidak dapat menunjukkan jenis data integer 64 bit (atau 8 byte). Anda mungkin ingin menyimpan angka di bidang teks atau menggunakan kolom terhitung untuk membuat salinan angka di bidang teks, sehingga dipetakan ke jenis data Teks aplikasi kanvas. Dengan cara ini, Anda dapat menahan, menampilkan, dan memasukkan nilai ini, dan membandingkannya untuk menentukan apakah sama; Namun, Anda tidak dapat melakukan penghitungan numerik pada formulir ini.

Aritmetika titik mengambang adalah perkiraan, sehingga kadang dapat memberikan hasil yang tidak diharapkan dengan banyak contoh terdokumentasi. Anda mungkin mengharapkan rumus 55 /100 * 100 akan menghasilkan 55 dengan tepat dan (55 / 100 * 100) - 55 akan menghasilkan nol dengan tepat. Namun, formula yang terakhir menampilkan 7,1054 x 10–15, yang nilainya sangat kecil tetapi bukan nol. Perbedaan kecil tersebut biasanya tidak menimbulkan masalah, dan aplikasi akan membulatkannya saat menampilkan hasilnya. Namun, perbedaan kecil dapat menumpuk dalam perhitungan-perhitungan berikutnya dan muncul memberikan jawaban yang salah.

Sistem database sering menyimpan mata uang dan melakukan penghitungan dengan menggunakan matematika desimal, yang menawarkan rentang lebih kecil tetapi lebih mengontrol presisi. Secara default, aplikasi kanvas memetakan mata uang di dalam dan luar nilai titik mengambang; oleh karena itu, hasilnya mungkin berbeda dari penghitungan yang dilakukan dalam jenis data desimal asli. Bergantung pada kebutuhan presisi aplikasi Anda, Anda mungkin ingin bekerja dengan nilai-nilai ini sebagai Teks, seperti yang dijelaskan untuk bilangan bulat besar sebelumnya.

Default dan konversi

Catatan

Power Apps hanya mendukung Float hari ini dan itu adalah jenis dari semua angka. Dukungan desimal akan segera ditambahkan.

Sebagian besar Power Fx host menggunakan Desimal secara default. Memiliki default ini berarti:

  • Angka literal dalam rumus. Angka 1.234 tersebut ditafsirkan sebagai nilai Desimal . Misalnya, rumus 1.234 * 2 menafsirkan dan 1.2342 sebagai Desimal dan mengembalikan hasil Desimal .
  • Fungsi nilai. Value( "1.234" ) mengembalikan nilai Desimal . Misalnya, dalam rumus Value( "1.234" ) * 2, fungsi Nilai menafsirkan isi string "1.234" teks sebagai Desimal .

Untuk bekerja dengan nilai Float , fungsi Float digunakan. Memperluas contoh kita, Float( 1.234 ) mengubah Desimal1.234 menjadi Float. Float juga dapat digunakan sebagai pengganti Value untuk mengonversi string yang berisi angka floating point seperti Float( "1.234" ) ke nilai Float , yang diperlukan jika angka tersebut tidak dapat direpresentasikan sebagai Decimal.

Singkatnya:

Penggunaan Desimal Mengapung
Angka literal dalam rumus 1.234 Float( 1.234 )
Float( "1.234" )
Konversi dari string teks Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Konversi antar jenis numerik Decimal( float ) Float( decimal )
Konversi ke string teks Text( decimal ) Text( float )

Mencampur jenis numerik

Nilai Float dan Decimal dapat dicampur dengan bebas. Ketika dicampur, nilai desimal dikonversi ke nilai Float karena rentang yang lebih besar. Karena konversi ini dapat mengakibatkan hilangnya presisi, penting untuk tidak mencampur keduanya secara tidak perlu. Karena Decimal adalah tipe data literal default dan sebagian besar fungsi numerik mempertahankan jenis, relatif mudah untuk menghindari pindah ke Float tanpa menginginkannya.

Misalnya, pertimbangkan perhitungan berikut menggunakan setelah pac power-fx repl menginstal Power Platform CLI. Karena kedua angka adalah Desimal, perhitungan dilakukan dalam Desimal, dan hasilnya mempertahankan presisi penuh:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Jika sebagai gantinya, operan kedua diubah menjadi Float maka seluruh perhitungan akan dilakukan di Float, dan bagian pecahan kecil akan hilang:

>> 1.0000000000000000000000000001 * Float(2)
2

Date, Time, dan DateTime

Zona waktu

Nilai tanggal/waktu masuk dalam kategori ini:

  • Lokal pengguna: Nilai-nilai ini disimpan dalam UTC (Waktu Universal Terkoordinasi), tetapi zona waktu pengguna aplikasi memengaruhi cara aplikasi menampilkan nilai ini dan cara pengguna aplikasi menentukannya. Sebagai contoh, peristiwa yang sama ditampilkan secara berbeda kepada pengguna di Kanada dibandingkan kepada pengguna di Jepang.
  • Zona waktu independen: Aplikasi menampilkan nilai-nilai ini dengan cara yang sama dan pengguna aplikasi menentukannya dengan cara yang sama, terlepas dari zona waktu. Peristiwa yang sama ditampilkan kepada pengguna di Kanada dan pengguna di Jepang dengan cara yang sama. Penulis aplikasi yang tidak mengharapkan aplikasi mereka berjalan di zona waktu yang berbeda menggunakan nilai ini karena secara keseluruhan lebih sederhana.

Tabel ini menunjukkan beberapa contoh:

Jenis tanggal/waktu Nilai yang tersimpan dalam database Nilai ditampilkan dan dimasukkan 7 jam di barat UTC Nilai ditampilkan dan dimasukkan 4 jam di timur UTC
Pengguna lokal Minggu,19Mei2019
04.00
Sabtu,18Mei2019
21.00
Minggu,19Mei2019
08.00
Zona waktu independen Minggu,19Mei2019
04.00
Minggu,19Mei2019
04.00
Minggu,19Mei2019
04.00

Untuk tanggal/waktu Lokal pengguna, aplikasi kanvas menggunakan zona waktu browser atau perangkat, tetapi aplikasi yang diarahkan oleh model menggunakan pengaturan pengguna di Dataverse. Pengaturan ini biasanya cocok, tetapi hasilnya akan berbeda jika pengaturan ini berbeda.

Gunakan fungsi DateAdd dan TimeZoneInformation untuk mengonversikan waktu lokal ke UTC dan sebaliknya. Lihat contoh di akhir dokumentasi untuk fungsi ini.

Ekuivalen numerik

Aplikasi kanvas menyimpan dan menghitung semua nilai tanggal/waktu, baik Lokal pengguna maupun Zona waktu independen di UTC. Aplikasi menerjemahkan nilai berdasarkan zona waktu pengguna aplikasi saat menampilkannya dan saat pengguna aplikasi menentukannya.

Bila aplikasi kanvas membaca nilai Zona waktu independen dari sumber data atau menulis nilai tersebut ke sumber data, aplikasi akan secara otomatis menyesuaikan nilai untuk mengimbangi zona waktu pengguna aplikasi. Aplikasi kemudian memperlakukan nilai sebagai nilai UTC, sesuai dengan semua nilai tanggal/waktu lain di aplikasi. Karena kompensasi ini, nilai Zona waktu independen asli muncul saat aplikasi menyesuaikan nilai UTC untuk zona waktu pengguna aplikasi.

Anda dapat mengamati perilaku ini lebih dekat dengan menggunakan fungsi Value untuk mengakses nilai numerik yang mendasarinya untuk nilai tanggal/waktu. Fungsi ini menghasilkan nilai tanggal/waktu sebagai jumlah milidetik sejak 1 Januari 1970 00:00:00.000 UTC.

Karena setiap nilai tanggal/waktu disimpan di UTC, rumus Value( Date( 1970, 1, 1 ) ) tidak akan menghasilkan nol di sebagian besar belahan dunia karena fungsi Date akan mengembalikan tanggal di UTC. Misalnya, rumus akan menghasilkan 28.800.000 di zona waktu yang offset dari UTC hingga delapan jam. Angka tersebut mencerminkan jumlah milidetik dalam delapan jam.

Kembali ke contoh kita:

Jenis tanggal/waktu Nilai yang tersimpan dalam database Nilai ditampilkan dan dimasukkan 7 jam di barat UTC Fungsi nilai mengembalikan
Pengguna lokal Minggu,19Mei2019
04.00
Sabtu,18Mei2019
21.00
1,558,238,400,000
(Minggu,19Mei2019
4:00 UTC)
Zona waktu independen Minggu,19Mei2019
04.00
Minggu,19Mei2019
04.00
1,558,263,600,000
(Minggu,19Mei2019
11:00 UTC)

Mengonversikan waktu Unix

Waktu Unix mencerminkan jumlah detik sejak 1 Januari 1970 00:00:00 UTC. Karena aplikasi kanvas menggunakan milidetik dan bukan detik, Anda dapat mengonversikan antara keduanya dengan mengalikan atau membagi 1.000.

Misalnya, waktu Unix menampilkan 9 September 2001, 01:46:40 UTC sebagai 1.000.000.000. Untuk menampilkan nilai tanggal/waktu di aplikasi kanvas, kalikan angka tersebut dengan 1.000 untuk mengonversikannya menjadi milidetik, lalu gunakan dalam Text. Rumus Text( 1000000000 * 1000, DateTimeFormat.UTC ) menghasilkan string 2001-09-09T01:46:40.000Z.

Namun, fungsi tersebut menghasilkan Sabtu, 8 September 2001 18:46:40 jika Anda menggunakan format DateTimeFormat.LongDateTime24 di zona waktu yang offset 7 jam dari UTC (7 jam di barat UTC). Hasil ini menunjukkan nilai DateTime dengan benar berdasarkan zona waktu lokal.

Untuk mengonversikan ke waktu Unix, bagilah hasil dari Nilai dengan 1.000:
RoundDown( Nilai ( UnixTime ) / 1000, 0 )

Jika Anda memerlukan waktu Unix dalam nilai Tanggal untuk perhitungan lebih lanjut atau tampilan di dalam Power Apps, gunakan rumus ini:
DateAdd( Tanggal ( 1970,1,1 ), UnixTime, Detik )

SQL Server

SQL Server mempunyai jenis data Datetime, Datetime2, dan jenis data tanggal/waktu lainnya yang tidak mencakup offset zona waktu dan tidak menunjukkan zona waktu tempat mereka masuk. Aplikasi kanvas mengasumsikan nilai ini disimpan di UTC dan memperlakukannya sebagai Lokal pengguna. Jika nilai ditujukan untuk zona waktu independen, perbaiki terjemahan UTC menggunakan fungsi TimeZoneOffset.

Aplikasi kanvas menggunakan informasi zona waktu yang disertakan dalam bidang Datetimeoffset saat mengonversikan nilai ke representasi UTC internal aplikasi. Aplikasi selalu menggunakan UTC sebagai zona waktu (offset zona waktu nol) saat menulis data.

Aplikasi kanvas membaca dan menulis nilai jenis data Waktu di SQL Server sebagai string teks dalam format durasi ISO 8601. Misalnya, Anda harus mengurai format string ini dan menggunakan fungsi Time untuk mengonversikan string teks "PT2H1M39S" ke nilai Waktu:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

Mencampur informasi tanggal dan waktu

Tanggal, Waktu, dan TanggalWaktu memiliki nama yang berbeda, tetapi semuanya memiliki informasi yang sama tentang tanggal dan waktu.

Nilai Tanggal dapat mencakup informasi waktu dengannya, yang biasanya tengah malam. Nilai Waktu dapat membawa informasi tanggal, yang biasanya 1 Januari 1970. Dataverse juga menyimpan informasi waktu dengan bidang Hanya Tanggal tetapi menampilkan hanya informasi tanggal secara default. Selain itu, aplikasi kanvas terkadang membedakan antara jenis data ini untuk menentukan format dan kontrol default.

Menambahkan dan mengurangkan nilai tanggal dan waktu secara langsung tidak disarankan karena zona waktu dan konversi lainnya dapat menyebabkan hasil yang membingungkan. Gunakan salah satu dari fungsi Value untuk mengonversikan nilai tanggal/waktu menjadi milidetik dan mempertimbangkan zona waktu pengguna aplikasi, atau menggunakan fungsi DateAdd dan DateDiff untuk menambahkan atau mengurangkan dari salah satu nilai ini.

Pilihan dan Ya/Tidak

Pilihan dan jenis data dua pilihan memberikan dua atau beberapa pilihan untuk dipilih pengguna aplikasi. Contohnya, pilihan StatusPesanan dapat menawarkan pilihan Baru, Dikirim, Ditagih, dan Ditutup. Jenis data dua pilihan hanya menawarkan dua pilihan.

Kedua jenis data ini menampilkan labelnya dalam konteks string teks. Contohnya, kontrol label menampilkan salah satu pilihan status pesanan jika properti Teks kontrol diatur ke rumus yang merujuk pilihan tersebut. Label pilihan mungkin dilokalkan untuk pengguna aplikasi di lokasi yang berbeda.

Bila pengguna aplikasi memilih sebuah pilihan dan menyimpan perubahan tersebut, aplikasi akan mentransmisikan data ke database, yang menyimpan data tersebut dalam representasi yang tidak tergantung bahasa. Pilihan dalam pilihan dikirim dan disimpan sebagai angka, dan pilihan dalam jenis data dua pilihan dikirim dan disimpan sebagai nilai boolean.

Label hanya untuk tujuan tampilan. Anda tidak dapat melakukan perbandingan langsung dengan label karena spesifik untuk bahasa. Sebagai gantinya, setiap pilihan memiliki enumerasi yang berfungsi dengan angka dasar atau nilai boolean. Misalnya, Anda tidak dapat menggunakan rumus ini:

If( ThisItem.OrderStatus = "Active", ...

Namun, Anda dapat menggunakan rumus ini:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

Untuk pilihan global (yang dibagikan tabel), nama enumerasi rangkaian pilihan cocok dengan nama pilihan global. Untuk pilihan lokal (yang cakupannya ke tabel), nama mungkin berisi nama tabel. Perilaku ini akan mencegah konflik jika beberapa tabel memiliki pilihan dengan nama yang sama. Contohnya, tabel Akun mungkin memiliki pilihan OrderStatus dan namanya mungkin OrderStatus (Akun). Nama tersebut berisi satu atau beberapa spasi dan tanda kurung, sehingga Anda harus mengelilinginya dengan tanda kutip tunggal jika Anda mereferensikannya dalam rumus.

Selain itu, nilai dua pilihan juga dapat berperilaku sebagai nilai boolean. Misalnya, nilai dua pilihan bernama TaxStatus mungkin memiliki label yang Taxable dan Non-Taxable, yang sesuai dengan true dan false masing-masing. Untuk mendemonstrasikan, Anda tidak dapat menggunakan rumus ini:

If( ThisItem.Taxable = TaxStatus.Taxable, ...

Anda juga dapat menggunakan rumus yang setara ini:

If( ThisItem.Taxable, ...