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
Boole 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. true
Renk Alfa kanalı dahil, renk belirtimi. Color.Red
ColorValue( "#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. Date( 2019, 5, 16 )
Tarih Saat Uygulamanın kullanıcısının saat dilimindeki saati olan bir tarih. DateTimeValue( "16 May 2019 13:23:09" )
Ondalı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"
Image .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 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 Kayan Standart duyarlığa, 2 tabanlı işlemlere ve geniş değer aralığına sahip bir sayıdır. 123
8,903e121
1.234e200
Seçenek 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 Traders",
Çalışan: 35,
Kâr Amacı Gütmeyen: yanlış}
Kayıt başvurusu 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. First(Accounts).Owner
Tablo 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. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Metin Unicode metin dizesi. "Merhaba, Dünya"
Time Uygulamanın kullanıcısının saat dilimindeki tarihi olmayan bir saat. Time( 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ü belirsiz 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("{ ""Field"" : 1234 }").Field

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.

Blank

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.

Katıştırılmış metin

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:

Jane

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.

Dize ilişkilendirme

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 blank Doe Welcome John Doe!
blank blank Doe Welcome Doe!
blank blank blank Welcome Friend!

Yeni satırlar

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:

Satır 1, Satır 2 ve Satır 3 ile üç satırı gösteren katıştırılmış metin dizesi ve Label denetimi.

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:

Satır 1, Satır 2 ve Satır 3 ile üç satırı gösteren dize ilişkilendirme formülü ve Label denetimi.

Görüntü ve Ortam kaynakları

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:

Northwind kaynağı.

Bu kaynağı bir uygulamada kullanmak için bir Image denetiminin Image özelliğinde belirtin:

Northwind resmi.

Görüntüler ve diğer ortamlar için URI'lar

Label denetiminin Text özelliğini nwindlogo olarak ayarlayarak son örneği daha ayrıntılı inceleyebilirsiniz. Etiket bir metin dizesi gösterir:

Northwind metni.

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:

İki dörtgen.

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.

Boyut limitleri

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.

Numaralar

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 desteği yakında sunulacaktır.

Power Fx, iki tür sayıyı destekler: Ondalık ve Kayan (Sayı ve Para Birimi ile eşanlamlıdır).

Ondalık, çoğu iş hesaplaması için idealdir. 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 basitçe 2*2 yazıldığında kullanılır.

Kayan, 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. Kayan, ayrıca daha yüksek performansa sahiptir ve bu bir faktörse ve duyarlık önemli değilse tercih edilir.

Ondalık sayılar

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, işlemleri okulda öğrendiğiniz şekilde, 10 tabanlı basamakları kullanarak 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 nokta sayıları

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.

Kayan tam olarak -9,007,199,254,740,991 (–(253 – 1)) ile 9,007,199,254,740,991 (253 – 1) arasındaki tam sayıları (veya tamsayıları) 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.

Varsayılanlar ve dönüştürmeler

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 desteği yakında sunulacaktır.

Ç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 ve 2 sayılarını Ondalık olarak yorumlar ve bir Ondalık sonuç döndürür.
  • Value işlevi. Value( "1.234" ), Ondalık 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. Kayan, Float( "1.234" ) gibi kayan noktalı bir sayı içeren bir dizeyi Kayan değerine dönüştürmek için Değer yerine de kullanılabilir. Bu, sayı Ondalık olarak temsil edilmiyorsa gereklidir.

Özet olarak:

Kullanım Ondalık Kayan
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 )

Sayısal türleri karıştırma

Kayan ve Ondalık değerler 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 ve Tarih Saat

Saat dilimleri

Tarih/saat değerleri bu kategorilere ayrılır:

  • Kullanıcının Saat Diliminde: Bu değerler UTC (Eşgüdümlü Evrensel Saat) biçiminde depolanır ancak uygulama kullanıcısının saat dilimi uygulamanın bu değerleri nasıl göstereceğini ve uygulama kullanıcı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 saat diliminden bağımsız olarak, aynı şekilde gösterir ve uygulama kullanıcısı 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ının saat diliminde 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.

Sayısal eşdeğerleri

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 Value işlevi döndürür
Kullanıcının saat diliminde 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 saatlerini dönüştürme

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( Value( 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, Seconds )

SQL Server

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)

Tarih ve saat bilgilerini karıştırma

Tarih, Saat ve Tarih Saat farklı adlara sahip olsa da hepsi tarih ve saat hakkında aynı bilgileri tutar.

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 Evet/Hayır

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, ...