Veri türleri
Not
Microsoft Power Fx, tuval uygulamaları formül dilinin yeni adıdır. Dili tuval uygulamalarından ayırdığımız, Microsoft Power Platform ürünlerine entegre ettiğimiz ve açık kaynak olarak sunduğumuz bu süreçte bu makaleler geliştirilmeye devam eder. Dilin tanıtımı için Microsoft Power Fx Genel Bakış makalesiyle başlayın.
Bilgiler bir uygulama üzerinden, bir elektronik tablonun hücrelerine benzer şekilde, küçük, ayrık değerler halinde akar. Örneğin, bir Doğum Günü alanı ve Yıl Dönümü alanındaki veriler yılı, ayı ve günü içeren bir Tarih değeri olarak akar. Uygulama, bu değerleri biçimlendirmeyi, her biri için uygun girişleri sınırlandırmayı ve veritabanıyla değerleri paylaşmayı bilir. Doğum günleri ile yıl dönümleri insanlar için farklıdır ancak sistem ikisini de aynı şekilde işler. Bu durumda, Tarih bir veri türü örneğidir.
Bu makalede, tuval uygulamalarının desteklediği veri türlerinin ayrıntıları sağlanmaktadır. Bir uygulama bir dış veri kaynağına bağlandığında bu kaynaktaki her veri türü, tuval uygulamaları için bir veri türüne eşlenir.
Veri türü | Açıklama | Örnekler |
---|---|---|
Boolean | Doğru veya yanlış bir değer. Bir karşılaştırmaya gerek kalmadan doğrudan If, Filter ve diğer işlevlerde kullanılabilir. | doğru |
Renk | Alfa kanalı dahil, renk belirtimi. | Renk.Kırmızı Renk Değeri( "#102030" ) RGBA( 255, 128, 0, 0.5 ) |
Para birimi | Kayan nokta sayısı içinde depolanan para birimi değeri. Para birimi değerleri, para birimi biçimlendirme seçeneklerinin sayı değerleriyle aynıdır. | 123 4.56 |
Tarih | Uygulamanın kullanıcısının saat dilimindeki saati olmayan bir tarih. | Tarih( 2019, 5, 16 ) |
DateTime (Tarih Saat) | Uygulamanın kullanıcısının saat dilimindeki saati olan bir tarih. | DateTimeValue( "16 Mayıs, 2019 1:23:09 PM" ) |
On -da -lık | Yüksek duyarlığa, 10 tabanlı işlemlere ve sınırlı değer aralığına sahip bir sayıdır. | 123 Ondalık( "1.2345" ) |
GUID | Genel Benzersiz Tanımlayıcı. | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
Köprü | Köprü tutan metin dizesi. | "https://powerapps.microsoft.com" |
Resim | .jpeg, .png, .svg, .gif veya başka bir sık kullanılan web görüntüsü biçimindeki bir görüntüye Evrensel Kaynak Tanımlayıcı (URI) metin dizesi. | MyImage bir uygulama kaynağı olarak eklendi "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
Medya | Bir video veya ses kaydı için URI metin dizesi. | MyVideo , uygulama kaynağı olarak eklendi "https://northwindtraders.com/intro.mp4" "appres://blobmanager/3ba411c..." |
Sayı veya Şamandıra | Standart duyarlığa, 2 tabanlı işlemlere ve geniş değer aralığına sahip bir sayıdır. | 123 8.903e121 1.234e200 |
Seçim | Bir sayıyla desteklenen seçenekler kümesinden seçim. Bu veri türü, yerelleştirilebilir metin etiketini sayısal bir değerle birleştirir. Etiket uygulamada görünür ve sayısal değer depolanıp karşılaştırma için kullanılır. | ThisItem.OrderStatus |
Kayıt | Veri değerlerinin kaydı. Bu bileşik veri türü, bu konu başlığında listelenen diğer veri türlerinin örneklerini içerir. Daha fazla bilgi: Tablolarla çalışma. | { Şirket: "Northwind Tüccarları", Çalışan: 35, Kâr Amacı Gütmeyen: yanlış} |
Kayıt referansı | Tablodaki bir kayda yapılan başvuru. Bu tür başvurular çoğu zaman polimorfik aramalarda kullanılır. Daha fazla bilgi: Başvurularla çalışma. | İlk(Hesaplar). Sahip |
Masa | Kayıtlar tablosu. Tüm kayıtların, aynı veri türüne sahip alanlarda aynı adlara sahip olması gerekir ve atlanan alanlar boş kabul edilir. Bu bileşik veri türü, bu konu başlığında listelenen diğer veri türlerinin örneklerini içerir. Daha fazla bilgi: Tablolarla çalışma. | Tablo( { Ad: "Sidney", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Anderson" } ) |
Metin | Unicode metin dizesi. | "Merhaba Dünya" |
Saat | Uygulamanın kullanıcısının saat dilimindeki tarihi olmayan bir saat. | Zaman( 11, 23, 45 ) |
İki seçenek | Bir Boolean değeriyle desteklenen iki seçenek kümesinden seçim. Bu veri türü, yerelleştirilebilir metin etiketini bir Boolean değeriyle birleştirir. Etiket uygulamada görünür ve Boolean değeri depolanıp karşılaştırma için kullanılır. | ThisItem.Taxable |
türü belirtilmemiş nesne | Türü bildirilmemiş nesne. Temeldeki nesne, varolan herhangi bir türde olabilir ve Boolean(), Value(), Table() vb. işlevler kullanılarak uyumlu bir türe dönüştürülebilir. Daha fazla bilgi için Türü belirtilmemiş nesne ve JSON ile çalışma bölümlerine bakınız. | ParseJSON("{ ""Alan"" : 1234 }"). Alan |
Bu veri türlerinin çoğu benzerdir ve Metin olarak işlenen Köprü alanı gibi, aynı temel gösterime sahiptir. Ek veri türleri, formlarda ve diğer denetimlerde daha iyi varsayılan deneyimler sağlar.
Tüm veri türleri boş değere sahip olabilir (yani değersiz olabilir). "Null" terimi genellikle bu kavram için ilgili veritabanlarında kullanılır.
Değişkeni veya alanı boş olarak ayarlamak için Blank işlevini Set veya Patch işleviyle kullanın. Örneğin, Set( x, Blank() ) x genel değişkenindeki tüm değerleri kaldırır.
IsBlank işlevini kullanarak boş değeri test edin. Coalesce işlevini kullanarak olası boş değerleri boş olmayan değerlerle değiştirin.
Tüm veri türleri boş değerini desteklediğinden, Boolean ve İki seçenek veri türleri, etkin olarak üç olası değere sahiptir.
Bu veri türlerinin dördü de bir Unicode metin dizesine dayanır.
Bir formüldeki katıştırılmış metin dizeleri çift tırnak işareti içine alınır. Metin dizesindeki tek bir çift tırnağı göstermek için iki çift tırnağı birlikte kullanın. Örneğin, aşağıdaki formülü bir Button denetiminin OnSelect özelliğinde kullanma:
Notify( "Jane said ""Hello, World!""" )
düğmeye basıldığında bir başlığın açılmasına neden olur. Burada birinci ve sonuncu çift tırnaklar metin dizesini sınırladıkları için atlanır ve Merhaba, Dünya! ifadesinin yanlarındaki yinelenen çift tırnak işaretleri tek tırnak işareti ile değiştirilir:
Tek tırnak işareti, özel karakterler içeren ve bir metin dizesi içinde özel bir anlamı olmayan tanımlayıcı adlar için kullanılır.
Formülleri bir metin dizesine katıştırmak için dize ilişkilendirme kullanın. Bu, Concatenate işlevini veya & operatörünü kullanmaya kıyasla daha kolay bir yoldur ve çıktıyı görselleştirmek de daha kolaydır.
Metin dizesine bir dolar işareti $ ile önek ekleyin ve katıştırılacak formülü büyük ayraçlar { } içine alın. Metin dizesine büyük ayraçlar eklemek için tekrarlanan büyük ayraçlar kullanın: {{ veya }}. Dize ilişkilendirme, standart bir metin dizesinin kullanılabileceği her yerde kullanılabilir.
Örneğin, Elma genel değişkeninin 3 ve Muz genel değişkeninin 4 olarak tanımlandığı bu formülü düşünün:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Bu formül, 3 elma ve 4 muz olmak üzere toplam 7 meyvemiz var metin dizesini döndürür. Elma ve Muz değişkenleri, metindeki büyük ayraçların yerine Elma+Muz matematiksel formülünün sonucuyla birlikte eklenir. Büyük ayraçların etrafındaki boşluklar ve diğer karakterler olduğu gibi korunur.
Katıştırılmış formüller, herhangi bir işlevi veya operatörü içerebilir. Bunun niçin tek gereken, formül sonucunun bir metin dizesine zorlanabilmesidir. Örneğin, bir selamlama metninde yer alan bu formül Takma Ad veya takma ad yoksa Ad değerini metne ekleyecektir:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )
Takma Ad "Joe" olarak ayarlanmışsa bu formül Hoş geldin Joe, tanıştığımıza memnun oldum! metin dizesini üretir. Ancak Takma Ad değeri boş ve Ad değeri "Joseph" ise bu formül Sevgili Joseph, tanıştığımıza memnun oldum! metin dizesini oluşturur.
Dize ilişkilendirme, katıştırılmış formülde standart metin dizeleri içerebilir. Örneğin, Takma Ad ve Ad değerlerinin ikisi de sağlanmadıysa bunların yerine "Arkadaş" kelimesinin kullanılmasını sağlayabiliriz:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Dize ilişkilendirmeleri iç içe bile olabilir. Selamlama metninde Ad, İkinci Ad ve Soyadı değerlerinin tamamının kullanıldığı örneğe bir göz atalım. Bu değerlerden biri veya ikisi boş olsa bile ad bölümleri arasında doğru sayıda boşluk olur. Değerlerin hiçbirinin sağlanmadığı durumlarda iç dize ilişkilendirmesi boş bir dizeye daraltılır ve Coalesce işlevi "Arkadaş" değeri ile değiştirilir.
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Ad | İkinci Ad | Soyadı | Sonuç |
---|---|---|---|
John | Qunicy | Doe | Welcome John Quincy Doe! |
John | boş | Doe | Welcome John Doe! |
boş | boş | Doe | Welcome Doe! |
boş | boş | boş | Welcome Friend! |
Katıştırılmış metin dizeleri yeni satırlar içerebilir. Örneğin, bir Label denetiminin Text özelliğini aşağıdaki gibi ayarlamadığınızı düşünün:
"Line 1
Line 2
Line 3"
Yukarıdaki formül, Label denetiminde gösterilen üç satırla sonuçlanır:
Yeni satırlar, aşağıda gösterildiği gibi dize ilişkilendirme ile de desteklenir:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Yukarıdaki formül aynı çıktıyla sonuçlanır:
Dosya menüsünden, uygulama kaynağı olarak görüntü, video ve ses dosyaları ekleyebilirsiniz. İçeri aktarılan dosyanın adı uygulamada kaynak adı olur. Bu grafikte, nwindlogo adlı Northwind Traders logosu bir uygulamaya eklenmiştir:
Bu kaynağı bir uygulamada kullanmak için bir Image denetiminin Image özelliğinde belirtin:
Label denetiminin Text özelliğini nwindlogo olarak ayarlayarak son örneği daha ayrıntılı inceleyebilirsiniz. Etiket bir metin dizesi gösterir:
Tuval uygulamaları, ister bulutta ister bir uygulama kaynağı olarak eklenmiş olsun her görüntü veya başka medya dosyasına bir URI metin dizesi aracılığıyla başvurur.
Örneğin, bir görüntünün Image özelliği yalnızca uygulama kaynaklarını değil, web üzerindeki görüntülere bağlantıları da kabul eder. Örneğin "https://northwindtraders.com/logo.jpg"";. Özellik veri URI şemasını kullanan satır içi görüntüleri de kabul eder. Örneğin:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
URI, iki mor dörtgenin ölçeklenmiş bir sürümünü görüntüler:
Image denetiminin Image özelliğini camera denetiminin Photo özelliğine ayarladığınızda Camera denetiminde yakalanan en son görüntüyü gösterebilirsiniz. Uygulama görüntüyü bellekte tutar ve camera denetiminin Photo özelliği görüntüye bir URI başvurusu döndürür. Örneğin, bir resim çektiğinizde kameranın Photo özelliği "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1" döndürebilir.
Veritabanında depolanan bir görüntü veya başka bir ortam dosyasına başvurmak için bir URI kullanın. Bu şekilde, uygulama gerçekten gerekli olana kadar gerçek verileri almaz. Örneğin, bir Microsoft Dataverse tablosundaki bir ek "appres://datasources/Contacts/table/..." döndürebilir. Kamera örneğinde olduğu gibi, ikili verileri alan bu başvuruya bir görüntü denetiminin Image özelliğini ayarlayarak bu görüntüyü görüntüleyebilirsiniz.
Görüntü gibi bir ortam veri türünü bir veritabanına kaydettiğinizde, uygulama URI başvurusunu değil, gerçek görüntüyü veya ortam verilerini gönderir.
Metin dizeleri ve URI'lar olarak, bu veri türlerinin uzunlukları üzerinde ön tanımlı limiti yoktur.
Bu veri türlerinin başvurduğu ikili verilerin de boyut üzerinde ön tanımlı limiti yoktur. Örneğin, şimdi "appres://..." olarak başvurulan camera denetimi aracılığıyla yakalanan bir görüntü cihazın kamerasının işleyebileceği kadar yüksek çözünürlüklü olabilir. Ortam dosyalarının çözünürlük, kare hızı ve diğer öznitelikleri veri türüyle sınırlı değildir ancak ortamı yürütmek ve yakalamak için kullanılan belirli denetimlerin kendi sınırları olabilir.
Ancak tüm veri boyutları uygulamada kullanılabilir bellek miktarına bağlıdır. Masaüstü bilgisayarda çalışan tarayıcılar genellikle 100 megabayttan fazla veri destekler. Ancak telefon gibi bir cihazda kullanılabilir bellek miktarı çok daha az olabilir ve bu miktar genellikle 30-70 megabayt aralığındadır. Uygulamanızın bu sınırlar içinde çalışıp çalışmayacağını belirlemek için uygulamayı çalıştıracağınız tüm cihazlarda yaygın senaryoları test edin.
En iyi uygulama olarak, verileri yalnızca gerektiği kadar bellekte tutun. Görüntüleri olabildiğince kısa sürede veritabanına yükleyin; görüntüleri yalnızca uygulamanın kullanıcısı bunları istediğinde indirin.
Not
Şu anda Power Apps yalnızca Kayan türünü destekler ve bu, tüm sayıların türüdür. Ondalık sayı desteği yakında eklenecektir.
Power Fx, iki tür sayıyı destekler: Ondalık ve Kayan (Sayı ve Para Birimi ile eşanlamlıdır).
Ondalık sayı, çoğu iş hesaplaması için en iyisidir. Sayıları 10 tabanında doğru bir şekilde temsil edebilir, başka bir deyişle 0.1
tam olarak temsil edilebilir ve hesaplamalar sırasında yuvarlama hatalarına neden olmaz. Her türlü iş gereksinimi için 28 basamağa kadar duyarlıkla 1028'e kadar yeterince geniş bir aralığa sahiptir. Ondalık , çoğu Power Fx ana bilgisayar için varsayılan sayısal veri türüdür ve biri basitçe yazarsa 2*2
kullanılır.
Şamandıra , bilimsel hesaplamalar için en iyisidir. Sayıları, 10308'e kadar çok daha geniş bir aralıkta temsil edebilir. Duyarlık, 15 ondalık basamakla sınırlıdır ve işlemler 2 tabanını temel alır, bu nedenle bazı genel ondalık değerleri tam olarak temsil edemez. Float ayrıca daha yüksek performansa sahiptir ve bu bir faktörse ve hassasiyet kritik değilse tercih edilir.
Ondalık veri türü çoğu zaman .NET ondalık veri türünü kullanır. SQL Server'de çalıştırılan Dataverse formül sütunları gibi bazı ana bilgisayarlar SQL Server ondalık veri türünü kullanır.
Ondalık sayı, 10 basamak tabanını kullanarak matematiği okulda öğrendiğiniz şekilde yapar. Bu, 2 tabanlı işlemler kullanıldığında (Kayan tarafından kullanıldığı gibi) birikebilecek çok küçük farklardan kaynaklanan yuvarlama hatalarını önlemek için çok önemlidir.
Aralık, artı 79,228,162,514,264,337,593,543,950,335 ile eksi 79,228,162,514,264,337,593,543,950,335 arasındadır. Ondalık ayracı bu sayılar içinde herhangi bir yere yerleştirilebilir ve 28 basamağa kadar duyarlık sağlar ve yine de tam olarak temsil edilebilir. Örneğin, 79,228,162,514,264.337593543950335, 7.9228162514264337593543950335 şeklinde tam olarak temsil edilebilir.
Kayan veri türü Sayı veya Para Birimi olarak da bilinir ve IEEE 754 çift duyarlıklı kayan nokta standardını kullanır. Bu standart –1,79769 x 10308 ile 1,79769 x 10308 arasında çok geniş bir sayı aralığı sunar. Gösterilebilen en küçük değer 5 x 10–324.
Float , –9,007,199,254,740,991 (–(253 – 1)) ve 9,007,199,254,740,991 (253 – 1) arasındaki tam sayıları (veya tam sayıları) tam olarak temsil edebilir. Bu aralık veritabanlarının yaygın olarak kullandığı 32 bit (veya 4 bit) tamsayı veri türlerinden büyüktür. Ancak tuval uygulamaları 64 bit (veya 8 bit) tamsayı veri türlerini gösteremez. Sayıyı bir metin alanında depolayabilir veya sayının metin alanında bir kopyasını oluşturmak için hesaplanmış bir sütun kullanabilirsiniz. Böylece tuval uygulamasında Metin veri türüne eşlenir. Bu şekilde, bu değerleri tutabilir, görüntüleyebilir ve girebilir; eşit olup olmadığını belirlemek için bunları karşılaştırabilirsiniz ancak bu formda bunlar üzerinde sayısal hesaplamalar yapamazsınız.
Kayan nokta aritmetiği yaklaşık bir işlemdir, yani belgelenen örneklerin çoğunda beklenmeyen sonuçlar verebilir. 55 / 100 * 100 formülünün tam olarak 55 döndürmesini, (55 / 100 * 100) - 55 formülünün tam olarak sıfır döndürmesini bekleyebilirsiniz. Ancak ikinci formül, çok küçük olsa da sıfır olmayan, 7,1054 x 10–15 döndürür. Bu küçük fark normalde sorun oluşturmaz ve uygulama sonuçları gösterirken bu sonucu yuvarlar. Ancak küçük farklılıklar sonraki hesaplamalarda birleşip yanlış yanıtı verebilir.
Veritabanı sistemleri genellikle, ondalık matematik kullanarak para birimlerini depolar ve hesaplamalar gerçekleştirir. Bu, daha küçük bir aralık sunsa da hassasiyeti artırır. Varsayılan olarak, tuval uygulamaları para birimlerini kayan nokta değerlerinin içinde ve dışında eşler. Bu nedenle, sonuç yerel ondalık veri türünde yapılan hesaplamalardan farklı olabilir. Bu tür bir tutarsızlık sorunlara neden olursa bu bölümün önceki kısımlarında açıklanan büyük tamsayılarda olduğu gibi, bu değerlerle Metin olarak çalışabilirsiniz.
Not
Şu anda Power Apps yalnızca Kayan türünü destekler ve bu, tüm sayıların türüdür. Ondalık sayı desteği yakında eklenecektir.
Çoğu Power Fx ana bilgisayarı varsayılan olarak Ondalık kullanır. Bu durum şunları etkiler:
- Formüllerdeki değişmez sayılar.
1.234
sayısı Ondalık değeri olarak yorumlanır. Örneğin,1.234 * 2
formülü1.234
ve2
sayılarını Ondalık olarak yorumlar ve bir Ondalık sonuç döndürür. - Value işlevi.
Value( "1.234" )
, Ondalık bir değer döndürür. Örneğin,Value( "1.234" ) * 2
formülü Value işlevi,"1.234"
metin dizesinin içeriğini Ondalık olarak yorumlar.
Kayan değerleriyle çalışmak için Float işlevi kullanılır. Yukarıdaki örneği genişletirsek Float( 1.234 )
, Ondalık1.234
değerini Kayan değerine dönüştürür. Float , örneğin kayan noktalı bir sayı içeren bir dizeyi, sayının Ondalık Sayı olarak Float( "1.234" )
temsil edilememesi durumunda gerekli olan Float değerine dönüştürmek için Değer'in yerinede kullanılabilir.
Özet olarak:
Kullanım | On -da -lık | Yüzmek |
---|---|---|
Formüllerdeki değişmez sayılar | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Metin dizesinden dönüştürme | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Sayısal türler arasında dönüştürme | Decimal( float ) |
Float( decimal ) |
Metin dizesine dönüştürme | Text( decimal ) |
Text( float ) |
Float ve Decimal değerleri serbestçe karıştırılabilir. Karıştırıldıklarında Ondalık değerler daha geniş aralık nedeniyle Kayan değerlere dönüştürülür. Bu durum duyarlık kaybına neden olabileceğinden ikisini gereksiz yere karıştırmamak önemlidir. Ondalık varsayılan değişmez veri türü olduğundan ve çoğu sayısal işlev bu türü koruyacağından istemeden Kayan türüne geçmeyi önlemek nispeten kolaydır.
Örneğin, Power Platform CLI yüklendikten sonra pac power-fx repl
kullanılarak yapılan aşağıdaki hesaplamayı ele alalım. Her iki sayı da Ondalık olduğundan hesaplama Ondalık olarak yapılır ve sonuç tam duyarlığı korur:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Bunun yerine, ikinci işlenen Kayan olarak değiştirilseydi tüm hesaplama Kayan olarak yapılırdı ve küçük kesirli kısım kaybolurdu:
>> 1.0000000000000000000000000001 * Float(2)
2
Tarih/saat değerleri bu kategorilere ayrılır:
- Kullanıcı yerel: Bu değerler UTC'de (Eşgüdümlü Evrensel Saat) depolanır, ancak uygulama kullanıcısının saat dilimi, uygulamanın bu değerleri nasıl gösterdiğini ve uygulama kullanıcısının bunları nasıl belirttiğini etkiler. Örneğin, aynı an Kanada'daki bir kullanıcıyla Japonya'daki bir kullanıcı için farklıdır.
- Saat diliminden bağımsız: Uygulama bu değerleri aynı şekilde gösterir ve uygulama kullanıcısı saat diliminden bağımsız olarak bunları aynı şekilde belirtir. Aynı an Kanada'daki bir kullanıcıyla Japonya'daki bir kullanıcı için aynıdır. Uygulamalarının farklı saat dilimlerinde çalıştırılmasını beklemeyen uygulama yazarları bu değerleri genel olarak daha basit oldukları için kullanırlar.
Bu tabloda bazı örnekler verilmiştir:
Tarih/saat türü | Veritabanında depolanan değer | Değer UTC'nin 7 saat batısında görüntülenir ve girilir | Değer UTC'nin 4 saat doğusunda görüntülenir ve girilir |
---|---|---|---|
Kullanıcı yerel | 19Mayıs2019Pazar 04:00 |
18Mayıs2019Cumartesi 21:00 |
19Mayıs2019Pazar 08:00 |
Saat diliminden bağımsız | 19Mayıs2019Pazar 04:00 |
19Mayıs2019Pazar 04:00 |
19Mayıs2019Pazar 04:00 |
Kullanıcının saat diliminde tarih/saatleri için, tuval uygulamaları tarayıcının veya cihazın saat dilimini kullanır ancak model yönetimli uygulamalar, kullanıcının Dataverse'teki ayarını kullanır. Bu ayarlar genellikle eşleşir ancak bu ayarlar farklıysa sonuçlar farklı olur.
Yerel saati UTC'ye ve UTC'yi yerel saate dönüştürmek için DateAdd ve TimeZoneInformation işlevlerini kullanın. Bu işlevlerin örneklerini belgenin sonunda bulabilirsiniz.
Tuval uygulamaları ister Kullanıcının saat diliminde ister Saat diliminden bağımsız olsun, tüm tarih/saat değerlerini UTC olarak tutar ve hesaplar. Uygulama değerleri gösterirken ve uygulama kullanıcısı belirlediğinde, bu değerleri uygulama kullanıcının saat dilimine göre çevirir.
Tuval uygulaması, veri kaynağından Saat diliminden bağımsız değerini okuduğunda veya veri kaynağına böyle bir değeri yazdığında uygulama kullanıcısının saat dilimini dengelemek için değeri otomatik olarak ayarlar. Uygulama bu değeri uygulamadaki diğer tüm tarih/saat değerleriyle tutarlı olarak UTC değeri olarak kabul eder. Bu dengeleme nedeniyle özgün Saat diliminden bağımsız değer, uygulama kullanıcının saat dilimine göre UTC değerini ayarladığında görünür.
Tarih/saat değeri için temel sayısal değere erişerek Value işlevini kullanarak bu davranışı daha yakından gözlemleyebilirsiniz. Bu işlev, tarih/saat değerini 1 Ocak 1970 00:00:00,000 UTC anından itibaren geçen milisaniyelerin sayısı olarak döndürür.
Her tarih/saat değeri UTC olarak tutulduğundan, Date işlevi UTC cinsinden bir tarih döndürdüğünden, Value( Date( 1970, 1, 1 ) ) formülü dünyanın çoğu bölgesinde sıfır döndürmez. Örneğin, formül, UTC'den sekiz saat farklı olan bir saat diliminde 28.800.000 döndürür. Bu sayı, sekiz saatteki milisaniye sayısını yansıtır.
Yukarıdaki örneğimize dönelim:
Tarih/saat türü | Veritabanında depolanan değer | Değer UTC'nin 7 saat batısında görüntülenir ve girilir | Değer fonksiyonu döndürür |
---|---|---|---|
Kullanıcı yerel | 19Mayıs2019Pazar 04:00 |
18Mayıs2019Cumartesi 21:00 |
1,558,238,400,000 (19Mayıs2019Pazar 04:00 UTC) |
Saat diliminden bağımsız | 19Mayıs2019Pazar 04:00 |
19Mayıs2019Pazar 04:00 |
1,558,263,600,000 (19Mayıs2019Pazar 11:00 UTC) |
Unix saatleri 1 Ocak 1970 00:00:00 UTC anından itibaren geçen saniye sayısını yansıtır. Tuval uygulamaları saniye yerine milisaniye kullandığından, 1000 ile çarparak veya 1000'e bölerek iki değer arasında dönüştürme yapabilirsiniz.
Örneğin, Unix saati 9 Eylül 2001 01:46:40 UTC anını 1.000.000.000 olarak gösterir. Bu tarih/saat değerini bir tuval uygulamasında göstermek için bu sayıyı 1000 ile çarpıp milisaniyeye çevirin ve ardından bir Text işlevinde kullanın. Text( 1000000000 * 1000, DateTimeFormat.UTC ) formülü 2001-09-09T01:46:40.000Z dizesini döndürür.
Ancak UTC'den -7 saat farklı bir saat diliminde (UTC'nin 7 saat batısında) DateTimeFormat.LongDateTime24 biçimini kullandığınızda bu işlev 8 Eylül 2001 Cumartesi 18:46:40 döndürür. Bu sonuç Tarih Saat değerini yerel saat dilimine göre doğru olarak gösterir.
Saati Unix biçimine dönüştürmek için Value ile elde edilen sonucu 1000'e bölün:
RoundDown( Değer( UnixTime ) / 1000, 0 )
Daha ayrıntılı hesaplamalar veya Power Apps'te görüntülemek için Tarih değerinde Unix saat gerekliyse şu formülü kullanın:
DateAdd( Date( 1970,1,1 ), UnixTime, Saniye )
SQL Server Tarih Saat, Tarih Saat2 ve diğer tarih/saat veri türlerine sahiptir. Bu veri türleri saat dilimi dengelemesi içermez ve bulundukları saat dilimini göstermez. Tuval uygulamaları bu değerlerin UTC olarak depolandığını varsayar ve bunları Kullanıcının saat diliminde kabul eder. Bu değerlerin saat diliminden bağımsız olmaları gerekiyorsa TimeZoneOffset işlevini kullanarak UTC çevirilerini düzeltin.
Tuval uygulamaları bir değeri uygulamanın dahili UTC gösterimine dönüştürürken Datetimeoffset alanlarında yer alan saat dilimi bilgilerini kullanır. Uygulama, verileri yazarken her zaman saat dilimi (sıfır saat dilimi dengesi) olarak UTC kullanır.
Tuval uygulamaları SQL Server'daki Saat veri türünün değerlerini ISO 8601 süre biçiminde metin dizeleri olarak okur ve yazar. Örneğin bu dize biçimini ayrıştırmanız ve "PT2H1M39S" metin dizesini bir Saat değerine dönüştürmek için Time işlevini kullanmanız gerekir:
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)
Date, Time ve DateTime farklı adlara sahiptir, ancak hepsi tarihler ve saatler hakkında aynı bilgileri içerir.
Tarih değeri saat bilgisini de içerebilir. Bu bilgi genellikle gece yarısıdır. Saat değeri tarih bilgilerini taşıyabilir. Bu bilgi genellikle 1 Ocak 1970'tir. Dataverse saat bilgilerini Yalnızca Tarih alanıyla birlikte depolar ancak varsayılan olarak yalnızca tarih bilgilerini gösterir. Benzer şekilde, tuval uygulamaları bazen varsayılan biçimleri ve denetimleri belirlemek için bu veri türlerini birbirinden ayırır.
Saat dilimi ve diğer dönüştürmeler karışık sonuçlara yol açabileceğinden tarih ve saat değerlerini doğrudan eklemek ve çıkarmak önerilmez. Önce, tarih/saat değerlerini milisaniyeye dönüştürmek için Value işlevini kullanıp uygulama kullanıcısının saat dilimini dikkate alabilir ya da bu değerlerden birini eklemek veya çıkarmak için DateAdd ve DateDiff işlevlerini kullanabilirsiniz.
Seçenekler ve iki seçenekli veri türleri, bir uygulama kullanıcısının seçmesi için iki veya daha fazla seçenek sağlar. Örneğin, bir Sipariş Durumu seçeneği Yeni, Sevk Edildi, Faturalandı ve Kapalı seçeneklerini sunabilir. İki seçenek veri türü yalnızca iki seçenek sunar.
Bu veri türlerinin ikisi de etiketlerini bir metin dizesi bağlamında gösterir. Örneğin bir label denetimi, denetimin Text özelliği bu seçeneğe başvuran bir formüle ayarlanmışsa sipariş durumu seçeneklerinden birini gösterir. Seçenek etiketleri farklı konumlardaki uygulama kullanıcıları için yerelleşmiş olabilir.
Bir uygulama kullanıcısı bir seçeneği belirlediğinde ve bu değişikliği kaydettiğinde, uygulama verileri, dilden bağımsız bir gösterimde depolayan veritabanına iletir. Seçimdeki yer alan bir seçenek bir sayı olarak iletilir ve saklanır ve iki seçenekli bir veri türündeki bir seçenek bir boole değeri olarak iletilir ve saklanır.
Etiketler yalnızca görüntüleme amacıyla kullanılır. Bir dile özgü olduklarından etiketlerle doğrudan karşılaştırma yapamazsınız. Bunun yerine her seçenek, temel alınan sayı veya boole değeriyle çalışan bir numaralandırmaya sahiptir. Örneğin, şu formülü kullanamazsınız:
If( ThisItem.OrderStatus = "Active", ...
Ancak şu formülü kullanabilirsiniz:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Genel seçimler için (tabloların paylaştığı), seçenek kümesi numaralandırmasının adı, genel seçimin adıyla eşleşir. Yerel seçimler için (bir tabloyla sınırlıdırlar) ad, tablonun adını içerebilir. Bu davranış birden çok tabloda aynı ada sahip seçenekler varsa çakışmaları önler. Örneğin, Firmalar tablosunun bir OrderStatus seçeneği olabilir ve adı OrderStatus (Firmalar) olabilir. Bu ad bir veya daha fazla boşluk ve parantez içerir; bu nedenle, bir formülde bu ada başvurursanız, başına ve sonuna tek tırnak işareti eklemeniz gerekir.
Ayrıca iki seçenek değerleri de Boolean değeri gibi davranabilir. Örneğin, TaxStatus adlı iki seçenek değeri Vergiye Tabi ve Vergiye Tabi Değil etiketlerine sahip olabilir. Bu etiketler sırasıyla doğru ve yanlış değerlerine karşılık gelir. Gösterim amacıyla, şu formülü kullanamazsınız:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Buna denk olan şu formülü de kullanabilirsiniz:
If( ThisItem.Taxable, ...