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. | 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. | 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") |
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. | 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 yang 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. | Item.Status Pesanan Ini |
Rekor | Rekaman nilai data. Jenis data gabungan ini berisi contoh jenis data lain yang tercantum dalam topik ini. Informasi lebih lanjut: Bekerja dengan tabel. | { 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. | 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. | 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 ) |
Dua opsi | 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. | Item.Kena Pajak |
objek tidak bertipe | 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("{ ""Bidang"" : 1234 }"). Kebun |
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.
Teks, Hyperlink, Gambar, dan Media
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:
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 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. 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 NickName kosong 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:
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:
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:
Untuk menggunakan sumber daya ini di aplikasi, tentukan dalam properti Gambar dari kontrol Gambar:
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:
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:
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 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 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 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 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 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 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 ditafsirkan sebagai nilai Desimal . Misalnya, rumus akan menafsirkan1.234 * 2
dan sebagai1.234
2
Desimal dan mengembalikan hasil Desimal . - Fungsi nilai.
Value( "1.234" )
akan mengembalikan nilai Desimal . Misalnya, rumus fungsi Nilai akan menafsirkan isi stringValue( "1.234" ) * 2
teks sebagai Desimal ."1.234"
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 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 hal ini dapat mengakibatkan hilangnya presisi, penting untuk tidak mencampur keduanya secara tidak perlu. Karena Desimal adalah tipe data literal default dan sebagian besar fungsi numerik akan 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 kami di atas:
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, ...