Bagikan melalui


Jenis data

Catatan

Microsoft Power Fx adalah nama baru untuk bahasa rumus aplikasi kanvas. Artikel-artikel ini sedang berlangsung saat kami mengekstrak bahasa dari aplikasi kanvas, mengintegrasikannya dengan produk Microsoft Power Platform lain, dan membuatnya tersedia sebagai sumber terbuka. Mulai dengan Gambaran Umum Microsoft Power Fx untuk pengenalan bahasa.

Informasi mengalir melalui aplikasi dalam nilai kecil, diskrit, sangat mirip dengan sel spreadsheet. Misalnya, data dalam bidang Tanggal lahir dan bidang Peringatan keduanya akan mengalir sebagai nilai Tanggal yang mencakup tahun, bulan, dan hari. Aplikasi mengetahui cara memformat nilai ini, membatasi input hanya yang sesuai untuk masing-masing nilai, serta 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 menyediakan rincian jenis data yang didukung oleh aplikasi kanvas. Bila aplikasi terhubung ke sumber data eksternal, setiap jenis data di sumber tersebut akan dipetakan ke jenis data untuk aplikasi kanvas.

Jenis data KETERANGAN Contoh
Boolean Nilai true atau false. Dapat digunakan secara langsung dalam fungsi If, Filter dan fungsi lainnya tanpa perbandingan. benar
Warna Spesifikasi warna, termasuk saluran alfa. Color.Red
ColorValue( "#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. 123
4.56
Tanggal Tanggal tanpa waktu, di zona waktu pengguna aplikasi. Date( 2019, 5, 16 )
Datetime Tanggal dengan waktu, di zona waktu pengguna aplikasi. DateTimeValue( "May 16, 2019 1:23:09 PM" )
Desimal Angka dengan presisi tinggi, operasi basis 10, dan jangkauan terbatas. 123
Desimal( "1.2345" )
GUID Pengenal unik global. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hyperlink String teks yang menyimpan hyperlink. "https://powerapps.microsoft.com"
Image Sebuah string teks pengidentifikasi sumber daya universal (URI) untuk gambar dalam format .jpeg, .png, .svg, .gif, atau format gambar web umum lainnya. MyImage ditambahkan sebagai sumber daya aplikasi
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Media Sebuah string teks URI untuk rekaman video atau audio. MyVideo ditambahkan sebagai sumber daya aplikasi
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Angka atau Float Angka dengan presisi standar, operasi basis 2, dan jangkauan luas. 123
8.903e121
1.234e200
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. ThisItem.OrderStatus
Rekaman Rekaman nilai data. Jenis data gabungan ini berisi contoh jenis data lain yang tercantum dalam topik ini. Informasi lebih lanjut: Bekerja dengan tabel. { Perusahaan: "Northwind Traders",
Staf: 35,
Nirlaba: false }
Referensi rekaman Referensi ke rekaman dalam tabel. Referensi tersebut sering digunakan dengan pencarian polimorfik. Informasi lebih lanjut: Bekerja dengan referensi. First(Accounts).Owner
Table 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. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Teks String teks Unicode. "Halo, Dunia"
Waktu Waktu tanpa tanggal, di zona waktu pengguna aplikasi. Time( 11, 23, 45 )
Dua pilihan 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. ThisItem.Taxable
Objek tidak berjenis Objek tanpa jenis yang ditentukan. Objek dasar dapat merupakan jenis apa pun yang ada, dan dapat dikonversi ke jenis yang kompatibel menggunakan fungsi seperti Boolean(), Value(), Table() dll. Untuk informasi lebih lanjut lihat Objek tidak berjenis dan Bekerja dengan JSON. ParseJSON("{ ""Field"" : 1234 }").Field

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. Ini seringkali lebih mudah untuk bekerja dengan dan memvisualisasikan output daripada menggunakan fungsi Concatenate atau & operator.

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. Contohnya, rumus ini akan memasukkan NickName jika diberikan, atau , atau FirstName 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 satu atau dua dari nilai ini kosong, jumlah spasi yang benar akan berada 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 di atas menghasilkan tiga baris yang ditampilkan di kontrol label:

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

Baris baru juga didukung dengan interpolasi string, seperti ditunjukkan di bawah:

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

Rumus di atas menghasilkan output yang sama:

Rumus interpolasi string dan kontrol label memperlihatkan tiga baris dengan Garis 1, Garis 2, dan Garis 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 bernama nwindlogo telah ditambahkan ke aplikasi:

Sumber daya Northwind.

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

Gambar Northwind.

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 demikian, aplikasi tidak akan mengambil data aktual hingga benar-benar 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. Contohnya, gambar yang diambil melalui kontrol kamera yang sekarang direferensikan sebagai "appres://..." bisa mempunyai resolusi sebesar dan setinggi resolusi yang dihimpun 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 akan berjalan dalam batasan ini, uji skenario umum di semua perangkat tempat aplikasi akan 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 danMata Uang ).

Desimal adalah yang terbaik untuk sebagian besar perhitungan bisnis. Ini dapat secara akurat mewakili angka-angka dalam basis 10 yang berarti yang 0.1 dapat diwakili dengan tepat dan tidak akan rentan terhadap 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 jauh lebih besar, hingga 10.308. Presisi terbatas pada 15 tempat desimal dan matematika didasarkan pada basis 2 sehingga tidak dapat mewakili beberapa nilai desimal umum secara tepat. Float juga memiliki kinerja yang lebih tinggi dan disukai jika itu adalah faktor dan presisi tidak kritis.

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 menghitung dengan cara Anda belajar di sekolah, menggunakan basis 10 digit. Itu sangat penting untuk menghindari kesalahan pembulatan dari perbedaan yang sangat kecil yang dapat terakumulasi saat menggunakan matematika basis 2 (seperti yang digunakan oleh Float).

Kisarannya adalah dari 79,228,162,514,264,337,593,543,950,335 positif hingga 79,228,162,514,264,337,593,543,950,335 negatif. Pemisah desimal dapat ditempatkan di mana saja dalam angka-angka ini, memberikan presisi hingga 28 digit, 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 Number or Currency, 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 (2 53 – 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 dalam aplikasi kanvas. Dengan cara ini, Anda dapat menahan, menampilkan, dan memasukkan nilai ini, serta membandingkannya untuk menentukan apakah keduanya sama; namun, Anda tidak dapat melakukan penghitungan numerik di 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. Jika jenis ketidaksesuaian ini akan menyebabkan masalah, Anda mungkin akan memilih untuk mengerjakan nilai ini sebagai Teks, sama seperti yang mungkin akan Anda lakukan dengan bilangan bulat besar yang dijelaskan sebelumnya di bagian ini.

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. Hal ini berdampak:

  • Angka literal dalam rumus. Angka 1.234 tersebut akan diartikan sebagai nilai Desimal . Misalnya, rumus 1.234 * 2 akan menafsirkan 1.234 dan sebagai 2 Desimal dan mengembalikan hasil Desimal .
  • Fungsi nilai. Value( "1.234" ) akan mengembalikan nilai Desimal . Misalnya, rumus Value( "1.234" ) * 2 fungsi Value akan menafsirkan konten string "1.234" teks sebagai Desimal.

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

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 antara tipe numerik Decimal( float ) Float( decimal )
Konversi ke string teks Text( decimal ) Text( float )

Mencampur tipe numerik

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

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

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Jika sebaliknya, operan kedua diubah menjadi Float maka seluruh perhitungan akan dilakukan dalam 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 ini disimpan di 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 ini dengan cara yang sama dan pengguna aplikasi menentukan cara sama, terlepas dari zona waktunya. 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
Lokal pengguna 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 kami di atas:

Jenis tanggal/waktu Nilai yang tersimpan dalam database Nilai ditampilkan dan dimasukkan 7 jam di barat UTC Fungsi Value menghasilkan
Lokal pengguna 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( Value( 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( Date( 1970,1,1 ), UnixTime, Seconds )

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

Date, Time, dan DateTime 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, ...