Kongsi melalui


Jenis data

Nota

Microsoft Power Fx ialah nama baharu untuk bahasa formula aplikasi kanvas. Artikel ini ialah kerja yang sedang berjalan kerana kita mengekstrak bahasa daripada aplikasi kanvas, mengintegrasikan ia dengan produk Microsoft Power Platform yang lain dan menjadikan ia tersedia sebagai sumber terbuka. Mulakan dengan Gambaran keseluruhan Microsoft Power Fx untuk pengenalan kepada bahasa.

Maklumat mengalir melalui aplikasi dalam nilai kecil dan sulit dan sangat seperti sel hamparan. Sebagai contoh, data dalam medan Hari Lahir dan medan Ulang Tahun akan mengalir sebagai nilai Tarikh yang termasuk tahun, bulan dan hari. Aplikasi ini mengetahui cara untuk memformatkan nilai ini, menyekat input ke takat apa yang sesuai untuk setiap daripadanya dan berkongsi nilai dengan pangkalan data. Hari lahir berbeza daripada hari ulang tahun bagi seseorang, tetapi sistem mengendalikannya dengan cara yang amat sama. Dalam situasi ini, Tarikh ialah contoh jenis data.

Artikel ini memberikan butiran untuk jenis data yang disokong oleh aplikasi kanvas. Apabila aplikasi bersambung kepada sumber data luaran, setiap jenis data dalam sumber tersebut dipetakan kepada jenis data untuk aplikasi kanvas.

Jenis data Penerangan Contoh
Boolean Nilai benar atau salah. Boleh digunakan secara langsung dalam If, Filter dan fungsi lain tanpa perbandingan. benar
Warna Spesifikasi warna, termasuk saluran alfa. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
Mata Wang Nilai mata wang yang disimpan dalam nombor titik apungan. Nilai mata wang adalah sama dengan nilai nombor dengan pilihan pemformatan mata wang. 123
4.56
Tarikh Tarikh tanpa masa dalam zon waktu pengguna aplikasi. Tarikh( 16, 5, 2019 )
DateTime Tarikh dengan masa dalam zon waktu pengguna aplikasi. DateTimeValue( "16 Mei 2019 1:23:09 PM" )
Perpuluhan Nombor dengan ketepatan tinggi, operasi asas 10, dan julat terhad. 123
Perpuluhan( "1.2345" )
GUID Pengecam unik di seluruh dunia. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hiperpautan Rentetan teks yang memegang hiper pautan. "https://powerapps.microsoft.com"
Image Rentetan teks Pengecam Sumber Sejagat (URI) kepada imej dalam .jpeg, .png, .svg, .gif, atau format imej web biasa lain. MyImage ditambah sebagai sumber aplikasi
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Media Satu rentetan teks URI ke rakaman video atau audio. MyVideo ditambah sebagai sumber aplikasi
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Nombor atau Terapung Nombor dengan ketepatan standard, operasi asas 2, dan pelbagai. 123
8.903e121
1.234e200
Pilihan Pilihan daripada set pilihan, disokong oleh nombor. Jenis data ini menggabungkan label teks boleh disetempatkan dengan nilai angka. Label dipaparkan dalam aplikasi, dan nilai berangka disimpan dan digunakan untuk perbandingan. ThisItem.OrderStatus
Rekod Rekod bagi nilai data. Jenis data kompaun ini mengandungi tika jenis data lain yang disenaraikan dalam topik ini. Maklumat lanjut: Menggunakan jadual. { Syarikat: "Northwind Traders",
Kakitangan: 35,
NonProfit: salah }
Rujukan rekod Rujukan kepada rekod dalam jadual. Rujukan seperti itu sering digunakan dengan carian polimorfik. Maklumat lanjut: Menggunakan rujukan. First(Accounts).Owner
Table Jadual rekod. Semua rekod mesti mempunyai nama yang sama untuk medan mereka dengan jenis data yang sama, dan medan yang ditinggalkan dianggap sebagai kosong. Jenis data kompaun ini mengandungi tika jenis data lain yang disenaraikan dalam topik ini. Maklumat lanjut: Menggunakan jadual. Jadual( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Teks Rentetan teks Unikod. "Helo, Dunia"
Waktu Masa tanpa tarikh dalam zon waktu pengguna aplikasi. Masa( 11, 23, 45 )
Dua pilihan Pilihan daripada set dua pilihan, disokong oleh nilai boolean. Jenis data ini menggabungkan label teks boleh disetempatkan dengan nilai boolean. Label dipaparkan dalam aplikasi, dan nilai boolean disimpan dan digunakan untuk perbandingan. ThisItem.Taxable
Object tanpa jenis Objek jenis tidak diisytiharkan. Objek tersembunyi boleh menjadi sebarang jenis sedia ada, dan boleh ditukar menjadi jenis serasi menggunakan fungsi seperti Boolean(), Nilai(), Jadual() dll. Untuk maklumat lanjut lihat Objek tanpa jenis dan Bekerja dengan JSON. ParseJSON("{ ""Field"" : 1234 }").Field

Kebanyakan jenis data ini adalah serupa dan mempunyai perwakilan asas yang sama, seperti medan Hiperpautan yang dianggap sebagai Teks. Jenis data tambahan memberikan pengalaman lalai yang lebih baik dalam borang dan kawalan lain.

Kosong

Semua jenis data boleh mempunyai nilai kosong (dalam kata lain, tiada nilai). Istilah "tidak sah" sering digunakan dalam pangkalan data untuk konsep ini.

Gunakan fungsi Blank dengan fungsi Set atau Patch untuk menetapkan pemboleh ubah atau medan kepada kosong. Contohnya, Set( x, Blank() ) mengeluarkan sebarang nilai dalam pemboleh ubah global x.

Uji untuk nilai kosong dengan menggunakan fungsi IsBlank. Gantikan nilai kosong yang mungkin dengan nilai bukan kosong dengan menggunakan fungsi Coalesce.

Disebabkan semua jenis data menyokong kosong, jenis data Boolean dan Dua pilihan secara efektif mempunyai tiga nilai yang mungkin.

Semua empat jenis data ini adalah berdasarkan pada rentetan teks Unikod.

Teks terbenam

Rentetan teks terbenam dalam formula disertakan dalam tanda petikan berganda. Gunakan tanda dua petikan berganda bersama untuk mewakili petikan berganda tunggal dalam rentetan teks. Contohnya, menggunakan formula berikut dalam sifat OnSelect untuk kawalan Butang:

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

keputusan dalam sepanduk apabila butang ditekan, di mana tanda petikan berganda yang pertama dan terakhir akan ditinggalkan (kerana ia nyahhadkan rentetan teks) dan tanda petikan berganda yang berulang di sekitar Helo, Dunia! digantikan dengan tanda petikan berganda tunggal:

pemberitahuan timbul dengan mesej Jane berkata

Tanda petikan tunggal digunakan untuk nama pengecam yang mengandungi aksara khas dan tidak mempunyai kepentingan istimewa dalam rentetan teks.

Interpolasi rentetan

Gunakan interpolasi rentetan untuk membenamkan formula dalam rentetan teks. Ini selalunya lebih mudah untuk bekerja dengan dan menggambarkan output daripada menggunakan fungsi Concatenate atau & operator.

Awalan rentetan teks dengan tanda dolar $ dan lampirkan formula yang akan dibenamkan dengan tanda kurung kurawal { }. Untuk memasukkan tanda kurung kurawal dalam rentetan teks, gunakan tanda kurung kurawal yang berulang: {{ atau }}. Interpolasi rentetan boleh digunakan di mana-mana rentetan teks standard boleh digunakan.

Sebagai contoh, pertimbangkan formula ini dengan pemboleh ubah global Epal ditetapkan kepada 3 dan Pisang ditetapkan kepada 4:

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

Formula ini mengembalikan rentetan teks Kami mempunyai 3 biji epal, 4 biji pisang, menghasilkan sejumlah 7 biji buah. Pemboleh ubah Epal dan Pisang dimasukkan ke dalam teks menggantikan tanda kurung kurawal bersama dengan hasil formula matematik Epal + Pisang. Ruang dan watak lain di sekeliling tanda kurung kurawal dikekalkan seadanya.

Formula yang dibenamkan boleh termasuk sebarang fungsi atau operator. Semua yang diperlukan ialah hasil formula yang boleh dipaksa kepada rentetan teks. Sebagai contoh, formula ini akan memasukkan NickName jika ia dibekalkan, atau FirstName jika tidak, dalam ucapan:

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

Jika NickName ditetapkan kepada "Joe", maka formula ini menghasilkan rentetan teks Mengalu-alukan Joe, gembira bertemu anda!. Tetapi jika NickName adalah kosong dan FirstName adalah "Joseph", maka formula ini menghasilkan Yang Dikasihi Joseph, gembira bertemu anda! sebaliknya.

Interpolasi rentetan boleh termasuk rentetan teks standard dalam formula terbenam. Contohnya, jika tidak NickName atau FirstName dibekalkan, kami masih boleh menyediakan "Rakan" sebagai pengganti:

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

Interpolasi rentetan juga boleh bersarang. Pertimbangkan contoh ini di mana nama Pertama, Tengah dan Akhir digabungkan menjadi ucapan. Walaupun satu atau dua daripada nilai adalah kosong, bilangan ruang yang betul akan berada di antara bahagian nama. Jika tiada bahagian yang disediakan, interpolasi rentetan dalaman akan runtuh ke rentetan kosong dan digantikan dengan fungsi coalesce oleh "Rakan".

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Pertama Tengah Akhir Keputusan
John Qunicy Doe Welcome John Quincy Doe!
John kosong Doe Welcome John Doe!
kosong kosong Doe Welcome Doe!
kosong kosong kosong Welcome Friend!

Baris Baharu

Rentetan teks terbenam boleh mengandungi baris baharu. Contohnya, pertimbangkan tetapan sifat Teks bagi kawalan Label untuk yang berikut:

"Line 1
Line 2
Line 3"

Formula di atas menghasilkan tiga baris yang ditunjukkan dalam kawalan label:

Rentetan teks terbenam dan kawalan label menunjukkan tiga baris dengan Garis 1, Garis 2 dan Garis 3.

Baris baharu juga disokong dengan interpolasi rentetan, seperti yang ditunjukkan di bawah:

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

Formula di atas menghasilkan output yang sama:

Formula interpolasi rentetan dan kawalan label menunjukkan tiga baris dengan Garis 1, Garis 2 dan Garis 3.

Sumber Imej dan Media

Melalui menu Fail, anda boleh menambah fail imej, video dan audio sebagai sumber aplikasi. Nama fail yang diimport menjadi nama sumber dalam aplikasi. Dalam grafik ini, logo Northwind Traders yang bernama nwindlogo, telah ditambah pada aplikasi:

Sumber Northwind.

Untuk menggunakan sumber ini dalam aplikasi, tentukan ia dalam sifat Imej untuk kawalan Imej:

Imej Northwind.

URI untuk imej dan media lain

Anda boleh mengkaji sedikit lebih mendalam ke dalam contoh terakhir dengan menetapkan sifat Teks bagi kawalan Label kepada nwindlogo. Label menunjukkan rentetan teks:

Teks Northwind.

Aplikasi kanvas merujuk kepada setiap imej atau fail media lain, sama ada ia berada dalam awan atau ditambah sebagai sumber aplikasi, oleh rentetan teks URI.

Contohnya, sifat Imej bagi kawalan imej menerima bukan sahaja sumber aplikasi tetapi juga pautan ke imej pada web seperti "https://northwindtraders.com/logo.jpg". Sifat ini juga menerima imej dalam baris yang menggunakan skim URI data, seperti dalam contoh ini:

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

URI tersebut memaparkan versi dua berlian ungu yang dinaik taraf:

Berlian berganda.

Anda boleh menunjukkan imej terkini yang ditangkap dalam kawalan Kamera jika anda menetapkan sifat Imej bagi kawalan imej kepada sifat Foto untuk kawalan kamera. Aplikasi menyimpan imej dalam memori, dan sifat Foto kawalan kamera mengembalikan rujukan URI kepada imej. Contohnya, anda mungkin mengambil gambar, dan sifat Foto kamera akan mengembalikan "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Anda menggunakan URI untuk merujuk imej atau fail media lain yang disimpan dalam pangkalan data. Dengan cara ini, aplikasi tidak mendapatkan data sebenar sehinggalah ia benar-benar diperlukan. Contohnya, lampiran dalam jadual Microsoft Dataverse mungkin mengembalikan "appres://datasources/Contacts/table/..." Seperti dalam contoh kamera, anda boleh memaparkan imej ini dengan menetapkan sifat Imej kawalan imej kepada rujukan ini, yang mengambil data perduaan.

Apabila anda menyimpan jenis data media, seperti imej kepada pangkalan data, aplikasi menghantar imej sebenar atau data media, bukan rujukan URI.

Had saiz

Sebagai rentetan teks dan URI, jenis data ini tidak mempunyai had pratetap pada kepanjangannya.

Data perduaan yang dirujuk jenis data ini juga tidak mempunyai had pratetap pada saiz. Sebagai contoh, imej yang dirakam melalui kawalan kamera yang kini dirujuk sebagai "appres://..." boleh sebagai resolusi yang besar dan tinggi kerana kamera peranti boleh kumpulkan. Resolusi, kadar bingkai dan sifat lain fail media lain tidak terhad oleh jenis data, tetapi kawalan khusus untuk bermain dan menangkap media mungkin mempunyai had sendiri.

Walau bagaimanapun, semua saiz data adalah tertakluk kepada jumlah memori yang tersedia dalam aplikasi. Pelayar yang berjalan pada komputer desktop biasanya menyokong lebih daripada 100 megabait data. Walau bagaimanapun, jumlah memori yang tersedia pada peranti seperti telefon mungkin lebih rendah, biasanya dalam julat 30-70 megabait. Untuk menentukan sama ada aplikasi anda akan disiarkan dalam had ini, uji senario lazim pada semua peranti yang sepatutnya menjalankan aplikasi tersebut.

Sebagai amalan terbaik, simpan data dalam memori hanya selagi perlu. Muat naik imej ke pangkalan data sebaik sahaja anda boleh; muat turun imej hanya apabila pengguna aplikasi memintanya.

Nombor

Nota

Power Apps hanya menyokong Float hari ini dan ia adalah jenis semua nombor. Sokongan perpuluhan akan ditambah tidak lama lagi.

Power Fx menyokong dua jenis nombor: Perpuluhan dan Terapung (dengan sinonim Nombor dan Mata Wang ).

Perpuluhan adalah yang terbaik untuk kebanyakan pengiraan perniagaan. Ia boleh mewakili nombor dengan tepat dalam makna asas 10 yang 0.1 boleh diwakili dengan tepat dan tidak akan terdedah kepada kesilapan pembundaran semasa pengiraan. Ia mempunyai julat yang cukup besar untuk sebarang keperluan perniagaan, sehingga 1028 dengan sehingga 28 digit ketepatan. Perpuluhan ialah jenis data angka lalai untuk kebanyakan Power Fx hos, digunakan jika seseorang hanya menulis 2*2.

Float adalah yang terbaik untuk pengiraan saintifik. Ia boleh mewakili nombor dalam julat yang jauh lebih besar, sehingga 10308. Ketepatan terhad kepada 15 tempat perpuluhan dan matematik adalah berdasarkan asas 2 supaya ia tidak dapat mewakili beberapa nilai perpuluhan biasa dengan tepat. Terapung juga mempunyai prestasi yang lebih tinggi dan disukai jika itu adalah faktor dan ketepatan tidak kritikal.

Nombor perpuluhan

Jenis data perpuluhan paling kerap menggunakan jenis data perpuluhan.NET. Sesetengah hos, seperti Dataverse lajur formula yang dijalankan dalam SQL Serer, menggunakan jenis data perpuluhan SQL Server.

Perpuluhan melakukan matematik seperti yang anda pelajari di sekolah, menggunakan asas 10 digit. Itu sangat penting untuk mengelakkan kesilapan pembundaran dari perbezaan yang sangat kecil yang dapat dikumpulkan ketika menggunakan matematik asas 2 (seperti yang digunakan oleh Terapung).

Julatnya adalah dari 79,228,162,514,264,337,593,543,950,335 positif hingga negatif 79,228,162,514,264,337,593,543,950,335. Pemisah perpuluhan boleh diletakkan di mana-mana dalam nombor ini, memberikan sehingga 28 digit ketepatan, dan masih diwakili dengan tepat. Sebagai contoh, 79,228,162,514,264.337593543950335 boleh diwakili dengan tepat, begitu juga 7.9228162514264337593543950335.

Nombor titik terapung

Jenis data Terapung , juga dikenali sebagai Nombor atau Mata Wang, menggunakan standard titik terapung berketepatan dua IEEE 754. Standard ini memberikan julat yang sangat besar dari segi nombor untuk berfungsi, dari –1.79769 x 10308 sehinggga 1.79769 x 10308. Nilai terkecil yang boleh diwakili ialah 5 x 10–324.

Terapung betul-betul boleh mewakili nombor bulat (atau integer) antara –9,007,199,254,740,991 (–(253 – 1)) dan 9,007,199,254,740,991 (253 – 1), termasuk. Julat ini lebih besar daripada jenis data integer 32 bit (atau 4-bait) yang menggunakan pangkalan data yang biasa digunakan. Walau bagaimanapun, aplikasi kanvas tidak mewakili jenis data integer 64-bit (atau 8-bait). Anda mungkin mahu menyimpan nombor dalam medan teks atau menggunakan lajur yang dihitung untuk membuat salinan nombor dalam medan teks, supaya ia dipetakan ke dalam jenis data Teks dalam aplikasi kanvas. Dengan cara ini, anda boleh menyimpan, memaparkan dan memasukkan nilai ini, serta membandingkannya untuk menentukan sama ada ia sama; walau bagaimanapun, anda tidak boleh melaksanakan pengiraan berangka dalam borang ini.

Aritmetik titik terapung ialah anggaran, jadi kadangkala boleh memberikan keputusan yang tidak diduga dengan banyak contoh yang didokumenkan. Anda mungkin menjangkakan formula 55 / 100 * 100 untuk mengembalikan dengan tepat 55 dan (55 / 100 * 100) - 55 untuk mengembalikan sifat dengan tepat. Walau bagaimanapun, formula terakhir mengembalikan 7.1054 x 10–15, yang sangat kecil tetapi bukan sifar. Bahawa perbezaan kecil selalunya tidak menyebabkan masalah, dan aplikasi itu membukanya apabila menunjukkan keputusan. Walau bagaimanapun, perbezaan kecil boleh mengkompaun dalam pengiraan seterusnya dan memberikan jawapan yang salah.

Sistem pangkalan data sering menyimpan mata wang dan melakukan pengiraan dengan menggunakan matematik perpuluhan, yang menawarkan julat yang lebih kecil tetapi kawalan lebih besar ke atas kejituan. Secara lalai, mata wang peta aplikasi kanvas dalam dan luar daripada nilai titik terapung; oleh itu, hasilnya mungkin berbeza daripada pengiraan yang dilakukan dalam jenis data perpuluhan asli. Jika jenis percanggahan ini akan menyebabkan masalah, anda mungkin mahu menggunakan nilai ini sebagai Teks, sama seperti anda mungkin lakukan dengan integer besar yang dijelaskan lebih awal dalam bahagian ini.

Lalai dan penukaran

Nota

Power Apps hanya menyokong Float hari ini dan ia adalah jenis semua nombor. Sokongan perpuluhan akan ditambah tidak lama lagi.

Kebanyakan Power Fx hos menggunakan Perpuluhan secara lalai. Ini memberi kesan:

  • Nombor literal dalam formula. Nombor 1.234 tersebut akan ditafsirkan sebagai nilai Perpuluhan . Contohnya, formula 1.234 * 2 akan mentafsirkan 1.234 dan 2 sebagai Perpuluhan dan mengembalikan hasil Perpuluhan .
  • Fungsi nilai. Value( "1.234" ) akan mengembalikan nilai Perpuluhan . Contohnya, formula Value( "1.234" ) * 2 fungsi Nilai akan mentafsirkan kandungan rentetan "1.234" teks sebagai Perpuluhan.

Untuk bekerja dengan nilai Terapung , fungsi Float digunakan. Memperluaskan contoh di atas, Float( 1.234 ) akan menukar Perpuluhan1.234 ke Terapung. Terapung juga boleh digunakan sebagai pengganti Nilai untuk menukar rentetan yang mengandungi nombor titik terapung seperti Float( "1.234" ) kepada nilai Terapung , yang diperlukan jika nombor tidak boleh diwakili sebagai Perpuluhan.

Ringkasnya:

Penggunaan Perpuluhan Terapung
Nombor literal dalam formula 1.234 Float( 1.234 )
Float( "1.234" )
Penukaran daripada rentetan teks Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Penukaran antara jenis angka Decimal( float ) Float( decimal )
Penukaran kepada rentetan teks Text( decimal ) Text( float )

Mencampurkan jenis angka

Nilai apungan dan perpuluhan boleh dicampur secara bebas. Apabila dicampur,Nilai perpuluhan ditukar kepada nilai apungan disebabkan julat yang lebih besar. Oleh kerana ini boleh mengakibatkan kehilangan ketepatan, adalah penting untuk tidak mencampurkan kedua-duanya tanpa perlu. Oleh kerana Perpuluhan adalah jenis data literal lalai dan kebanyakan fungsi angka akan mengekalkan jenis, agak mudah untuk mengelakkan bergerak ke Terapung tanpa menginginkannya.

Sebagai contoh, pertimbangkan pengiraan berikut menggunakan pac power-fx repl selepas memasang Power Platform CLI. Oleh kerana kedua-dua nombor adalah Perpuluhan, pengiraan dilakukan dalam Perpuluhan, dan hasilnya mengekalkan ketepatan penuh:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Jika sebaliknya, operand kedua ditukar kepada Terapung maka keseluruhan pengiraan akan dilakukan dalam Terapung dan bahagian pecahan kecil akan hilang:

>> 1.0000000000000000000000000001 * Float(2)
2

Tarikh, Masa dan DateTime

Zon waktu

Nilai tarikh/masa jatuh dalam kategori ini:

  • Tempatan pengguna: Nilai ini disimpan dalam Waktu Universal Selaras, tetapi zon waktu pengguna aplikasi mempengaruhi cara aplikasi menunjukkan nilai ini dan cara pengguna aplikasi menentukannya. Sebagai contoh, saat yang sama muncul berbeza untuk pengguna di Kanada berbanding pengguna di Jepun.
  • Zon waktu bebas: Aplikasi menunjukkan nilai ini dengan cara yang sama dan pengguna aplikasi menentukan cara yang sama, tidak kira zon masa. Saat yang sama dipaparkan sama untuk pengguna di Kanada seperti pengguna di Jepun. Pengarang aplikasi yang tidak menjangka aplikasi mereka berjalan dalam zon waktu yang berbeza menggunakan nilai ini kerana ia lebih mudah keseluruhannya.

Jadual ini menunjukkan beberapa contoh:

Jenis tarikh/masa Nilai disimpan dalam pangkalan data Nilai dipaparkan dan memasuki 7 jam barat UTC Nilai dipaparkan dan memasuki 4 jam timur UTC
Tempatan pengguna Ahad,Mei19,2019
4:00 PG
Sabtu,Mei18,2019
9:00 PTG
Ahad,Mei19,2019
8:00 PG
Zon waktu bebas Ahad,Mei19,2019
4:00 PG
Ahad,Mei19,2019
4:00 PG
Ahad,Mei19,2019
4:00 PG

Untuk tarikh/masa Tempatan pengguna, aplikasi kanvas menggunakan zon waktu pelayar atau peranti, tetapi aplikasi dipacu model menggunakan tetapan pengguna dalam Dataverse. Tetapan ini biasanya sepadan, tetapi keputusan akan berbeza jika tetapan ini berbeza.

Gunakan fungsi DateAdd dan TimeZoneInformation untuk menukar masa tempatan ke UTC dan kembali semula. Lihat contoh di hujung pendokumenan untuk fungsi ini.

Kesamaan berangka

Aplikasi kanvas menyimpan dan mengira semua nilai tarikh/masa, sama ada Tempatan pengguna atau Zon waktu bebas dalam UTC. Aplikasi ini menterjemahkan nilai berdasarkan zon waktu pengguna aplikasi apabila memaparkannya dan apabila pengguna aplikasi menentukannya.

Apabila aplikasi kanvas membaca nilai Zon waktu bebas daripada sumber data atau menulis nilai tersebut kepada sumber data, aplikasi secara automatik melaraskan nilai untuk memberikan ruang untuk zon waktu pengguna aplikasi. Aplikasi kemudian menganggap nilai sebagai nilai UTC, konsisten dengan semua nilai tarikh/masa lain dalam aplikasi. Disebabkan oleh pampasan ini, nilai Zon waktu bebas asal dipaparkan apabila aplikasi melaraskan nilai UTC untuk zon waktu pengguna aplikasi.

Anda boleh melihat kelakuan ini lebih dekat dengan menggunakan fungsi Value untuk mengakses nilai berangka yang asas untuk nilai tarikh/masa. Fungsi ini mengembalikan nilai tarikh/masa sebagai bilangan milisaat sejak 1 Januari 1970 00:00:00.000 UTC.

Disebabkan setiap nilai tarikh/masa diadakan dalam UTC, formula Value( Date( 1970, 1, 1 ) ) tidak akan kembali sifar dalam kebanyakan bahagian dunia kerana fungsi Date mengembalikan tarikh tarikh dalam UTC. Sebagai contoh, formula akan mengembalikan 28,800,000 dalam zon waktu yang diimbangi dari UTC sebanyak lapan jam. Bilangan tersebut menggambarkan bilangan milisaat dalam masa lapan jam.

Kembali ke contoh kita dari atas:

Jenis tarikh/masa Nilai disimpan dalam pangkalan data Nilai dipaparkan dan memasuki 7 jam barat UTC Fungsi Nilai dikembalikan
Tempatan pengguna Ahad,Mei19,2019
4:00 PG
Sabtu,Mei18,2019
9:00 PTG
1,558,238,400,000
(Ahad,19Mei2019
4:00 AM UTC)
Zon waktu bebas Ahad,Mei19,2019
4:00 PG
Ahad,Mei19,2019
4:00 PG
1,558,263,600,000
(Ahad,19Mei2019
11:00 AM UTC)

Menukar masa Unix

Masa Unix menggambarkan bilangan saat sejak 1 Januari, 1970 00:00:00 UTC. Oleh kerana aplikasi kanvas menggunakan milisaat dan bukannya saat, anda boleh menukar antara keduanya dengan didarabkan atau dibahagikan dengan 1,000.

Sebagai contoh, masa Unix menunjukkan 9 September 2001, 01:46:40 UTC sebagai 1000000,000. Untuk menunjukkan bahawa nilai tarikh/masa dalam aplikasi kanvas, darabkan nombor itu dengan 1,000 untuk menukarnya kepada milisaat dan kemudian gunakannya dalam fungsi Text. Formula Teks( 1000000000 * 1000, DateTimeFormat.UTC ) mengembalikan rentetan 2001-09-09T01:46:40.000Z.

Walaubagaimanapun, fungsi mengembalikan Sabtu, 8 September 2001 18:46:40 jika anda menggunakan format DateTimeFormat.LongDateTime24 dalam zon waktu yang 7 jam diimbangai dari UTC (7 jam barat UTC). Keputusan ini menunjukkan nilai DateTime dengan betul berdasarkan zon waktu tempatan.

Untuk menukar kepada masa Unix, bahagikan keputusan daripada Nilai dengan 1,000:
RoundDown( Value( UnixTime ) / 1000, 0 )

Jika anda memerlukan masa Unix dalam nilai Tarikh untuk pengiraan atau paparan lanjut dalam Power Apps, gunakan formula ini:
DateAdd( Tarikh( 1970,1,1 ), UnixTime, Saat )

SQL Server

Pelayan SQL mempunyai Datetime, Datetime2, dan jenis data tarikh/masa lain yang tidak termasuk ofset zon waktu dan tidak menunjukkan zon waktu mereka berada. Aplikasi kanvas menganggap nilai ini disimpan dalam UTC dan menganggapnya sebagai Tempatan pengguna. Jika nilai bertujuan untuk menjadi bebas zon waktu, betulkan untuk terjemahan UTC dengan menggunakan fungsi TimeZoneOffset

Aplikasi kanvas menggunakan maklumat zon waktu termasuk dalam medan Datetimeoffset apabila menukar nilai kepada perwakilan UTC dalaman aplikasi. Aplikasi ini sentiasa menggunakan UTC sebagai zon waktu (ofset zon waktu sifar) apabila mereka menulis data.

Aplikasi kanvas membaca dan menulis nilai jenis data Masa dalam Pelayan SQL sebagai rentetan teks dalam format tempoh ISO 8601. Sebagai contoh, anda mesti menghuraikan format rentetan ini dan menggunakan fungsi Time untuk menukar rentetan teks "PT2H1M39S" kepada nilai Masa:

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)

Mencampurkan maklumat tarikh dan masa

Tarikh, Masa, dan DateTime mempunyai nama yang berbeza, tetapi semua mempunyai maklumat yang sama mengenai tarikh dan masa.

Nilai Tarikh boleh termasuk maklumat masa yang biasanya tengah malam. Nilai Masa boleh membawa maklumat tarikh, yang biasanya ialah 1 Januari 1970. Dataverse juga menyimpan maklumat masa dengan medan Tarikh Sahaja tetapi hanya menunjukkan maklumat tarikh secara lalai. Begitu juga, aplikasi kanvas kadangkala membezakan antara jenis data ini untuk menentukan format dan kawalan lalai.

Menambah dan menolak nilai tarikh dan masa secara langsung tidak disyorkan kerana zon waktu dan penukaran lain boleh menghasilkan keputusan yang mengelirukan. Sama ada menggunakan fungsi Value untuk menukar nilai tarikh/masa untuk milisaat terlebih dahulu dan mengambil kira zon waktu pengguna aplikasi, atau gunakan fungsi DateAdd dan DateDiff untuk menambah atau menolak daripada salah satu daripada nilai ini.

Pilihan dan Ya/Tidak

Pilihan dan dua pilihan jenis data menyediakan dua atau lebih pilihan bagi pengguna aplikasi untuk memilih. Contohnya, pilihan Status Pesanan mungkin menawarkan pilihan Baharu, Dihantar, Diinvois dan Ditutup. Jenis data dua pilihan hanya menawarkan dua pilihan.

Kedua-dua jenis data ini menunjukkan labelnya dalam konteks rentetan teks. Contohnya, kawalan label menunjukkan salah satu pilihan status pesanan jika sifat Teks kawalan ditetapkan kepada formula yang merujuk pilihan tersebut. Label pilihan mungkin disetempatkan untuk pengguna aplikasi di lokasi yang berbeza.

Apabila pengguna aplikasi memilih pilihan dan menyimpan perubahan, aplikasi menghantar data ke pangkalan data yang menyimpan data dalam perwakilan yang bebas daripada bahasa. Pilihan dalam pilihan dihantar dan disimpan sebagai nombor dan pilihan dalam dua pilihan jenis data dihantar dan disimpan sebagai nilai boolean.

Label hanya untuk tujuan paparan sahaja. Anda tidak boleh lakukan perbandingan langsung dengan label kerana ia khusus untuk bahasa. Sebaliknya, setiap pilihan mempunyai penomboran yang berfungsi dengan nombor dasar atau nilai boolean. Sebagai contoh, anda boleh menggunakan ciri ini:

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

Tetapi anda boleh menggunakan formula ini:

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

Untuk pilihan global (yang perkongsian jadual), nama penomboran set pilihan sepadan dengan nama pilihan global. Untuk pilihan tempatan (yang diskopkan ke jadual), nama mungkin mengandungi nama jadual. Perilaku ini mengelakkan konflik jika berbilang jadual mempunyai pilihan yang mempunyai nama yang sama. Contohnya, jadual Akaun mungkin mempunyai pilihan OrderStatus dan namanya mungkin OrderStatus (Akaun). Nama tersebut mengandungi satu atau lebih ruang dan tanda kurungan, jadi anda mesti mengelilingi dengan tanda petikan tunggal jika anda merujuknya dalam formula.

Selain itu, nilai dua pilihan juga boleh bertindak sebagai nilai Boolean. Contohnya, nilai dua pilihan bernama TaxStatus mungkin mengandungi label Boleh Dikenakan Cukai dan Tidak Boleh Dikenakan Cukai yang sesuai dengan benar dan salah masing-masing. Untuk tunjuk cara, anda boleh gunakan formula ini:

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

Anda juga boleh gunakan formula serupa ini:

If( ThisItem.Taxable, ...