Megosztás a következőn keresztül:


Adattípusok

Feljegyzés

A Microsoft Power Fx a vászonalapú alkalmazások képletnyelvének új neve. Ezek a cikkek még nem véglegesek; miközben kinyerjük a vászonalapú alkalmazás nyelvét, integráljuk más Microsoft Power Platform-termékekkel, és nyílt forráskódúként elérhetővé tesszük. A nyelv megismeréséhez először olvassa el A Microsoft Power Fx áttekintése című cikket.

Az információk egy alkalmazáson keresztül átáramlanak kis, diszkrét értékekben, hasonlóan egy táblázat celláihoz. Például egy Születésnap mezőben és egy Évforduló mezőben található adatok ugyanúgy Dátum értékként kerülnek átvitelre, amely tartalmazza az évet, a hónapot és a napot. Az alkalmazás tudja, hogyan kell formázni ezeket az értékeket, korlátozza a bemenetet az egyes értékeknek megfelelők szempontjából, és megosztja az értékeket egy adatbázissal. A születésnapok eltérnek az évfordulótól az emberek számára, de a rendszer pontosan ugyanolyan módon kezeli azokat. Ebben az esetben a Dátum az adattípus példája.

Ez a cikk a vászonalapú alkalmazások által támogatott adattípusokra vonatkozó részletes adatokat tartalmazza. Amikor egy alkalmazás külső adatforrást hoz létre, a forrásban szereplő minden adattípus vászonalapú alkalmazások egy adattípusára lesz leképezve.

Adattípus Ismertetés Példák
logikai Igaz vagy hamis érték. Közvetlenül használható a If, Filter és egyéb funkciókban, összehasonlítás nélkül. igaz
Szín Színmeghatározás, beleértve az alfa-csatornát is. Szín.Piros
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
Valuta Lebegőpontos számban tárolt pénznemérték. A pénznemértékek megegyeznek a pénznemformázási beállításokkal rendelkező számúértékekkel. 123
4.56
Dátum Időpontot nem tartalmazó dátum az alkalmazás felhasználójának időzónájában. Dátum( 2019, 5, 16 )
DateTime Időpontot tartalmazó dátum az alkalmazás felhasználójának időzónájában. DateTimeValue( "május 16., 2019 1:23:09 PM" )
Tizedes Nagy pontosságú szám, 10-es alapú művelet és korlátozott hatótávolság. 123
Decimális( "1.2345" )
GUID Globálisan egyedi azonosító. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hivatkozás Hiperhivatkozást tartalmazó szöveges karakterlánc. "https://powerapps.microsoft.com"
Kép Az univerzális erőforrás-azonosító (URI) szöveges karakterlánca egy .jpeg, .png, .svg, .gif vagy egyéb gyakori webes képformátumhoz. MyImage alkalmazás-erőforrásként hozzáadva
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Média URI szöveges karakterlánca egy videóhoz vagy hangfelvételhez. MyVideo alkalmazás-erőforrásként hozzáadva
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Szám vagy úszó Szabványos pontosságú szám, 2-es alapú műveletek és széles tartomány. 123
8.903e121
1.234e200
Választás A választási lehetőségek egy csoportjának egyike, amelyet egy szám támogat. Ez az adattípus a honosítható szöveges címkéket egy numerikus értékkel ötvözi. A címke megjelenik az alkalmazásban, és a numerikus értéket tárolja a rendszer, valamint összehasonlításokhoz használja. ThisItem.OrderStatus
Rekord Adatértékek rekordja. Ez az összetett adattípus a témakörben szereplő egyéb adattípusok példányait tartalmazza. További információ: A táblázatok használata. { Vállalat: "Northwind Traders",
Személyzet: 35,
NonProfit: false }
Rekord hivatkozás Hivatkozás egy táblázatban lévő rekordra. Az ilyen hivatkozásokat gyakran polimorf keresésekkel használják. További információ: A hivatkozások használata. Először (fiókok). Tulajdonos
Asztal Bejegyzések táblázata. Az összes rekordnak azonos nevű mezőkkel és azonos adattípusokkal kell rendelkezniük, a kihagyott mezőket pedig a rendszer üresnek tekinti. Ez az összetett adattípus a témakörben szereplő egyéb adattípusok példányait tartalmazza. További információ: A táblázatok használata. Table( { Keresztnév: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
SMS Egy Unicode szöveges sztring. "Helló, világ"
Idő Időpont dátum nélkül, az alkalmazás felhasználójának időzónájában. Idő( 11, 23, 45 )
Két lehetőség Két beállításból álló választási lehetőség, amelyet egy logikai érték támogat. Ez az adattípus a honosítható szöveges címkéket egy logikai értékkel ötvözi. A címke megjelenik az alkalmazásban, és a logikai értéket tárolja a rendszer, valamint összehasonlításokhoz használja. ThisItem.Taxable
be nem írt objektum Be nem jelentett típusú objektum. A háttérben lévő objektum bármilyen meglévő típusú lehet, és kompatibilis típusokká is átalakítható a következő funkciók használatával: Logikai(), Érték(), Tábla() stb. További információ: Típus nélküli objektum és A JSON használata. ParseJSON("{ ""Field"" : 1234 }"). Mező

Az ilyen adattípusok közül sok hasonló, és ugyanazzal a reprezentációval rendelkezik, például egy Hivatkozás típusú mező, amelyet a rendszer Szöveg elemként kezel. A további adattípusok jobb alapértelmezett élményeket nyújtanak az űrlapokon és egyéb vezérlőkben.

Blank

Minden adattípushoz tartozhat üres érték (más szóval nincs érték). Erre a fogalomra gyakran használatos a "null" kifejezés az adatbázisokban.

Az Blank függvényt a Set vagy Patch függvénnyel használva beállíthat egy változót vagy egy mezőt az üres értékre. Például a Set( x, Blank() ) beállítás eltávolít minden értéket az x globális változóból.

Teszteljen blank értékre az IsBlank funkció használatával. Cserélje fel a lehetséges üres értékeket nem üres értékekkel a az Coalesce függvény segítségével.

Mivel az összes adattípus támogatja az üres értéket, a Logikai és a Két lehetőség adattípusok gyakorlatilag három lehetséges értékkel rendelkeznek.

Az ilyen adattípusok közül mind a négy egy Unicode szöveges sztring.

Beágyazott szöveg

A képletekben lévő beágyazott szöveges sztringeket idézőjelek közé kell foglalni. Két idézőjel együttes használatával jelölhet egyetlen idézőjelet a szöveges sztringben. Például a következő képlet használata egy Gomb vezérlő OnSelect tulajdonságában:

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

A gomb megnyomásakor egy bannert eredményez, ahol az első és az utolsó idézőjelek nem jelennek meg (mivel a szöveges sztringet határolják), és az ismétlődő dupla idézőjelek a Helló, világ! körül egyetlen kettős idézőjelre lesznek lecserélve:

előugró értesítés az üzenettel, amelybe Jane azt mondta: „Helló, világ.”

Az aposztrófok használhatók speciális karaktereket tartalmazó azonosítónevekhez, és nem bírnak speciális jelentőséggel egy szöveges sztringben.

Sztringinterpoláció

A sztringinterpoláció használatával képleteket ágyazhat szöveges sztringekbe. Ezzel gyakran könnyebb dolgozni és megjeleníteni a kimenetet, mint az Összefűz függvény vagy & operátor használatával.

A szöveges sztringet lássa el dollárjel ($) előtaggal, a beágyazás érdekében pedig foglalja kapcsos zárójelek ({ }) közé a képletet. Ha kapcsos zárójelet is szeretne felvenni a szöveges sztringbe, használjon ismételten kapcsos zárójeleket: {{ vagy }}. A sztringinterpoláció bárhol használható, ahol szabványos szöveges sztring használható.

Vegyük például a következő képletet, amely a következő globális változókkal rendelkezik: Almák, amelynek értéke 3, és Banánok, amelynek értéke 4.

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

Ez a képlet a következő szöveges sztringet jeleníti meg: Van 3 almánk és 4 banánunk, ami összesen 7 gyümölcs. Az Almák és Banánok változókat a rendszer beszúrja a szövegbe a kapcsos zárójelek helyére, valamint kiegészíti azt az Almák+Banánok matematikai képlet eredményével. A kapcsos zárójelek körüli szóközöket és egyéb karaktereket a rendszer változatlanul megőrzi.

A beágyazott képletek bármilyen függvényt vagy operátort tartalmazhatnak. Ehhez csupán arra van szükség, hogy a képlet eredményét konvertálni lehessen szöveges sztringgé. Például ez a képlet beszúrja a NickName értékét, ha meg van adva, vagy a FirstName értékét, ha nincs megadva, a köszöntésbe:

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

Ha a NickName értéke „Joe”, akkor a képlet a következő szöveges sztringet jeleníti meg: Üdvözöljük Joe, örülünk, hogy megismerhettük!. Azonban ha a NickName értéke üres és a FirstName értéke „Joseph”, akkor a képlet ehelyett a következő szöveget hozza létre: Kedves Joseph, örülünk, hogy megismerhettük!.

A sztringinterpoláció standard szöveges sztringeket is belefoglalhat a beágyazott képletbe. Ha például a NickName és a FirstName értékét sem adták meg, helyettesítésként megadhatjuk a „Barát” értéket:

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

A sztringinterpolációkat be is lehet ágyazni. Vegyük a következő példát, amelyben a Vezetéknév, a Középső név és az Utónév egyaránt használatos a köszöntésben. Még ha az értékek közül egy vagy kettő üres is, a névösszetevők között a megfelelő számú szóköz lesz. Ha egyik összetevő sincs megadva, a belső sztringinterpoláció összecsukódik egy üres sztringgé, a rendszer pedig a Coalesce függvény használatával a „Barát” értékkel helyettesíti azt.

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Első Középre utolsó Result
John Qunicy Doe Welcome John Quincy Doe!
John üres Doe Welcome John Doe!
üres üres Doe Welcome Doe!
üres üres üres Welcome Friend!

Sortörések

A beágyazott szöveges sztringek sortöréseket is tartalmazhatnak. Például állítsa át a Szöveg tulajdonságát egy Címke vezérlőelemnek a következőre:

"Line 1
Line 2
Line 3"

A fenti képlet eredménye három sor, amely a címke vezérlőelemben jelenik meg:

Beágyazott szöveges karakterlánc és címke vezérlőelem, amely három sort jelenít meg az 1., 2. és 3. sorral.

A sortöréseket a sztringinterpoláció is támogatja, amint az alább is látható:

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

A fenti képlet eredménye ugyanaz a kimenet:

Karakterlánc-interpolációs képlet és címkevezérlés, amely három sort mutat az 1., 2. és 3. sorral.

Kép- és média-erőforrások

A Fájl menüben kép-, videó- és hangfájlokat adhat hozzá alkalmazás-erőforrásokként. Az importált fájl neve az alkalmazásban az erőforrás neve lesz. Ebben a grafikában a nwindlogo nevű Northwind Traders logót adták hozzá egy alkalmazáshoz:

Northwind erőforrás.

Ha egy alkalmazásban szeretné használni ezt az erőforrást, akkor adja meg azt egy Kép vezérlő Kép tulajdonságában:

Northwind kép.

A képekhez és egyéb médiumokhoz tartozó URI-azonosítók

Az utolsó példában egy kicsit mélyebbre lehet ásni, ha a Címke vezérlőelem Szöveg tulajdonságát nwindlogo értékre állítja be. A címke egy szöveges sztringet jelenít meg:

Northwind szöveg.

A vászonalapú alkalmazások minden képre vagy más médiafájlra, legyen szó akár a felhőben, akár alkalmazás-erőforrásként, egy URI szöveges sztringgel hivatkoznak.

A képvezérlő Kép tulajdonsága például nem csak az alkalmazás-erőforrásokat fogadja el, hanem a weben található képekre mutatókat is, például „https://northwindtraders.com/logo.jpg"”;. A tulajdonság elfogadja az adat URI-sémát használó beágyazott képeket is, mint ebben a példában:

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

Az URI a két lila gyémánt méretezett változatát jeleníti meg:

Dupla gyémántok.

Megjelenítheti a Kamera vezérlőben rögzített legfrissebb képet, ha a képvezérlő Kép tulajdonságát a kameravezérlő Fotó értékére állítja be. Az alkalmazás tárolja a képet a memóriában, és a kameravezérlő Fotó tulajdonsága egy URI-hivatkozást ad vissza a képhez. Például, ha elkészít egy képet, a kamera Fotó tulajdonsága a következőt adhatja vissza: "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Egy URI-azonosító segítségével hivatkozhat egy képre vagy egy másik médiafájlra, amely egy adatbázisban van tárolva. Így az alkalmazás nem olvassa be a tényleges adatokat, amíg ténylegesen nincs rájuk szükség. Például egy Microsoft Dataverse-táblázatban szereplő melléklet a következőt jelenítheti meg: „appres://datasources/Contacts/table/...” A fényképezőgépes példához hasonlóan ezt a képet úgy jelenítheti meg, hogy egy képvezérlő Kép tulajdonságát erre a hivatkozásra állítja be, amely lekérdezi a bináris adatokat.

Egy média adattípusnak, például egy képnek az adatbázisba való mentésekor az alkalmazás a tényleges képet vagy médiaadatokat küldi el, nem pedig az URI-hivatkozást.

Méretkorlátok

Szöveges sztringként és URI-ként ezek az adattípusok nem rendelkeznek előre meghatározott hosszkorláttal.

A bináris adatoknak, amelyekre ezek az adattípusok hivatkoznak, szintén nincsenek előre beállított méretkorlátjaik. Egy olyan kép például, amelyet a kameravezérlő rögzített, és amelyre most "appres://..." néven hivatkoznak, olyan nagy méretű és felbontású lehet, amekkorát csak az eszköz kamerája kezelni képes. A médiafájlok felbontását, a képkockasebességet és a többi attribútumot az adattípus nem korlátozza, de a médiafájlok lejátszására és rögzítésére vonatkozó konkrét vezérlők saját korlátozásokkal rendelkezhetnek.

Az összes adatméret azonban az alkalmazásban rendelkezésre álló memória mennyiségének függvénye. Az asztali számítógépen futó böngészők jellemzően több mint 100 megabájt adatot támogatnak. Előfordulhat azonban, hogy az eszközön – például egy telefonon – a rendelkezésre álló memóriaterület sokkal alacsonyabb, általában a 30-70 megabájt tartományban van. Ha meg szeretné állapítani, hogy az alkalmazás a fenti korlátozásokon belül fut-e, akkor tesztelje a gyakori eseteket minden olyan eszközön, amelyen futnia kell.

Gyakorlati tanácsként csak a szükséges ideig tartsa memóriában az adatot. A képeket a lehető leghamarabb töltse fel egy adatbázisba. A képek csak akkor legyenek letöltve, ha az alkalmazás felhasználója kéri azokat.

Számok

Feljegyzés

Power Apps ma csak a Float-ot támogatja , és ez az összes szám típusa. A decimális támogatás hamarosan hozzáadásra kerül.

Power Fx kétféle számot támogat:Decimális és Lebegőpontos (Szám és Pénznem szinonimákkal ).

A tizedes a legjobb a legtöbb üzleti számításhoz. Pontosan ábrázolhatja a 10-es bázisú számokat, ami azt jelenti, hogy pontosan ábrázolható, 0.1 és nem lesz hajlamos kerekítés hibákra a számítások során. Elég nagy hatótávolsággal rendelkezik bármilyen üzleti igényhez, akár 1028-ig , akár 28 számjegy pontossággal. A decimális a legtöbb Power Fx gazdagép alapértelmezett numerikus adattípusa, amelyet akkor használnak, ha valaki egyszerűen ír. 2*2

Az úszó a legjobb a tudományos számításokhoz. Sokkal nagyobb tartományban ábrázolhat számokat, akár 10308-ig. A pontosság 15 tizedesjegyre korlátozódik, és a matematika a 2-es alapú alapú, így nem tud pontosan ábrázolni néhány gyakori decimális értéket. A lebegtetés nagyobb teljesítményt is nyújt, és előnyben részesítik, ha ez tényező, és a pontosság nem kritikus.

Decimális számok

A Decimális adattípus leggyakrabban a.NET decimális adattípust használja. Egyes állomások, például Dataverse az SQL Sererben futó képletoszlopok az SQL Server decimális adattípusát használják.

A tizedes úgy végzi a matematikát, ahogy az iskolában tanultad, 10 számjegy alapján. Ez nagyon fontos, hogy elkerüljük a nagyon kis különbségekből származó kerekítés hibákat, amelyek felhalmozódhatnak a 2. alap matematika használatakor (ahogy azt a Float használja).

A tartomány a pozitív 79,228,162,514,264,337,593,543,950,335-től a negatív 79,228,162,514,264,337,593,543,950,335-ig terjed. A tizedeselválasztó bárhol elhelyezhető ezeken a számokon belül, akár 28 számjegy pontosságot biztosítva, és továbbra is pontosan ábrázolható. Például a 79,228,162,514,264.337593543950335 pontosan ábrázolható, akárcsak a 7.9228162514264337593543950335.

Lebegőpontos számok

A Float adattípus, más néven szám vagy pénznem, az IEEE 754 dupla pontosságú lebegőpontos szabványt használja. Ez a szabvány nagyon nagy mennyiségű számot biztosít a munkához, –1,79769 x 10308 és 1,79769 x 10308 között. A megjeleníthető legkisebb érték az 5 x 10–324.

A lebegő pontos egész számokat (vagy egész számokat) jelölhet –9,007,199,254,740,991 (–(253 – 1)) és 9,007,199,254,740,991 (253 – 1) között. Ez a tartomány nagyobb, mint az adatbázisok által általánosan használt 32 bites (vagy 4 bájtos) egész szám adattípusok. A vászonalapú alkalmazások azonban nem reprezentálhatnak 64 bites (vagy 8 bájtos) egész szám adattípust. Előfordulhat, hogy egy szöveges mezőben szeretné tárolni a számot, vagy egy számított oszlop használatával másolatot szeretne készíteni a számról egy szöveges mezőben, hogy azt egy Szöveg adattípusba képezze le. Ilyen módon megtarthatja, megjelenítheti és beírhatja ezeket az értékeket, valamint összehasonlíthatja azokat annak meghatározásával, hogy azok egyenlőek-e. Ezen az űrlapon azonban nem hajthatók végre numerikus számítások.

A lebegőpontos aritmetika közelítő értéket ad, így időnként sok dokumentált példával néha váratlan eredményeket adhat. Előfordulhat, hogy az 55 / 100 * 100 képlet pontosan az 55, az (55 / 100 * 100) - 55 pedig pontosan nulla értéket ad vissza. Az utóbbi formula azonban a 7,1054 x 10–15 értéket adja vissza, ami nagyon kicsi, de nem nulla. Ez az apró különbség általában nem okoz problémát, és az alkalmazás az eredmény megjelenítésekor lekerekíti. A kisebb eltérések azonban a későbbi számításokban is összegződhetnek, és úgy tűnhet, hogy rossz választ adnak eredményül.

Az adatbázisrendszerek gyakran tárolnak pénznemeket, és a számításokat decimális matematika használatával hajtják végre, amely kisebb tartományt kínál, de nagyobb pontosságot biztosít. A vászonalapú alkalmazások alapértelmezés szerint a lebegőpontos értékeken kívüli pénznemeket képeznek. Az eredmény tehát eltérhet a natív decimális adattípusban végzett számításoktól. Ha az ilyen típusú ellentmondás problémát okoz, akkor célszerű lehet ezeket az értékeket Szövegként használni, mint ahogy az ebben a szakaszban korábban ismertetett nagy egész számoknál is.

Alapértelmezések és konverziók

Feljegyzés

Power Apps ma csak a Float-ot támogatja , és ez az összes szám típusa. A decimális támogatás hamarosan hozzáadásra kerül.

A legtöbb Power Fx állomás alapértelmezés szerint a tizedesjegyet használja . Ez a következőkre van hatással:

  • Literális számok a képletekben. A szám 1.234 decimális értékként lesz értelmezve. A képlet 1.234 * 2 például tizedesjegyként 1.234 2 értelmezi az és értéket , és Decimális eredményt ad eredményül .
  • Érték függvény. Value( "1.234" ) decimális értéket ad eredményül . A Value Value( "1.234" ) * 2 függvény képlete például decimálisként "1.234" értelmezi a szöveges karakterlánctartalmát.

A Float értékekkel való munkához a Float függvényt kell használni. A fenti Float( 1.234 ) példa kiterjesztése a tizedesjegyet1.234 lebegővé alakítja. A Float a Value helyettesítésére is használható lebegőpontos számot tartalmazó karakterlánc, például Float érték átalakítására , ami akkor szükséges, ha a szám nem ábrázolható decimálisként Float( "1.234" ) .

Összefoglalva:

Felhasználás Tizedes Lebeg
Literális számok a képletekben 1.234 Float( 1.234 )
Float( "1.234" )
Átalakítás szöveges karakterláncból Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Numerikus típusok közötti konverzió Decimal( float ) Float( decimal )
Átalakítás szöveges karakterlánccá Text( decimal ) Text( float )

Numerikus típusok keverése

A lebegő és decimális értékek szabadon keverhetők. Keverés esetén a decimális értékek a nagyobb tartomány miatt lebegő értékekké alakulnak . Mivel ez a pontosság elvesztését eredményezheti, fontos, hogy ne keverjük össze feleslegesen a kettőt. Mivel a decimális az alapértelmezett literális adattípus, és a legtöbb numerikus függvény megőrzi a típust, viszonylag könnyű elkerülni a Float-ra való áttérést anélkül, hogy szeretné.

Fontolja meg például a következő számítást a pac power-fx repl Power Platform CLI telepítése után. Mivel mindkét szám decimális, a számítás decimálisan történik, és az eredmény teljes pontosságot biztosít:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Ha ehelyett a második operandust Float-ra változtatnánk, akkor a teljes számítást Float-ban végeznénk el, és az apró törtrész elveszne:

>> 1.0000000000000000000000000001 * Float(2)
2

Dátum, Idő és DateTime

Időzónák

A dátum/idő értékei a következő kategóriákba sorolhatók:

  • Felhasználó helyi: Ezek az értékek UTC (egyezményes világidő) szerintvannak tárolva, de az alkalmazás felhasználójának időzónája befolyásolja, hogy az alkalmazás hogyan jeleníti meg ezeket az értékeket, és hogyan adja meg őket. Példaként ugyanaz a pillanat másképp jelenik meg a kanadai felhasználónál, mint a japán felhasználónál.
  • Időzónától független: Az alkalmazás ugyanúgy jeleníti meg ezeket az értékeket, és az alkalmazás felhasználója ugyanúgy adja meg őket, időzónától függetlenül. Ugyanaz a pillanat ugyanúgy jelenik meg a kanadai felhasználónál, mint a japán felhasználónál. Az olyan alkalmazásszerzők, akik nem várják, hogy az alkalmazásuk különböző időzónákban fusson, ezeket az értékeket használják, mert összességében egyszerűbbek.

Az alábbi táblázat néhány példát mutat be:

Dátum/idő típus Az adatbázisban tárolt érték A megjelenített és beírt érték 7 órára az UTC-től nyugatra A megjelenített és beírt érték 4 órára az UTC-től keletre
Felhasználó helyi Vasárnap,május19.,2019.
4:00
Szombat,május18.,2019.
21:00
Vasárnap,május19.,2019.
8:00
Időzónától független Vasárnap,május19.,2019.
4:00
Vasárnap,május19.,2019.
4:00
Vasárnap,május19.,2019.
4:00

A Felhasználó helyi időzónája szerinti dátum/idő esetén a vászonalapú alkalmazások a böngésző vagy az eszköz időzónáját használják, de a modellvezérelt alkalmazások a felhasználó beállítását használják a Dataverse alkalmazásban. Ezek a beállítások általában megegyeznek, de az eredmények eltérőek, ha ezek eltérnek egymástól.

A DateAdd és a TimeZoneInformation függvények segítségével helyi időt alakíthat át UTC-re és vissza. Tekintse meg a függvények dokumentációjának végén található példákat.

Numerikus ekvivalensek

A vászon alkalmazások UTC-ben tárolják és számítják ki az összes dátum/idő értéket, akár a Felhasználó helyi időzónája, akár az Időzónától független beállítás érvényes. Az alkalmazás az alkalmazás felhasználójának időzónája alapján fordítja le az értékeket fordítja le, amikor megjeleníti őket, és amikor az alkalmazás felhasználója megadja azokat.

Amikor egy vászon alkalmazás egy Időzónától független értéket olvas be egy adatforrásból, vagy egy ilyen értéket ír egy adatforrásba, az alkalmazás automatikusan beállítja az alkalmazást használó időzónájának kompenzálására szolgáló értéket. Az alkalmazás ezt követően az értéket UTC-értékként kezeli, az alkalmazásban az összes többi dátum- és időértékkel összhangban. A kompenzáció miatt az eredeti Időzónától független érték akkor jelenik meg, amikor az alkalmazás módosítja az alkalmazás felhasználójának időzónájának UTC értékét.

Ezt a viselkedést alaposabban megfigyelheti, amikor a Value függvény használatával fér hozzá a dátum- és időérték alapjául szolgáló numerikus értékhez. Ez a függvény a dátum- és időértéket adja eredményül az 1970. január 1., 00:00:00.000 UTC óta eltelt ezredmásodpercek számában.

Mivel minden dátum- és időértéket UTC-ben tartanak, a Value( Date( 1970, 1, 1 ) ) képlet a világ legtöbb részén nem ad vissza nulla értéket, mivel a Date függvény egy dátumot ad vissza UTC-ben. A képlet például egy olyan időzónában, amely 8 órával tér el az UTC-től, a 28 800 000 értéket adja vissza. Ez a szám a nyolc óra ezredmásodperceinek számát mutatja.

A fenti példánkhoz visszatérve:

Dátum/idő típus Az adatbázisban tárolt érték A megjelenített és beírt érték 7 órára az UTC-től nyugatra A Value függvény a következőt adja vissza:
Felhasználó helyi Vasárnap,május19.,2019.
4:00
Szombat,május18.,2019.
21:00
1,558,238,400,000
(Vasárnap,május19.,2019.
4:00 UTC)
Időzónától független Vasárnap,május19.,2019.
4:00
Vasárnap,május19.,2019.
4:00
1,558,263,600,000
(Vasárnap,május19.,2019.
11:00 UTC)

A Unix-idők átalakítása

A Unix-idők az 1970. január 1., 00:00:00 UTC óta eltelt másodpercek számát tükrözik. Mivel a vászonalapú alkalmazások ezredmásodpercet használnak másodpercek helyett, a kettő között átszímíthatja az értéket 1000-rel szorozva vagy osztva.

Például a Unix-idő 2001. szeptember 9., 01:46:40 UTC-nél az 1 000 000 000 értéket jeleníti meg. Ha meg szeretné jeleníteni a vászonalapú alkalmazásban a dátum- és időértéket, szorozza meg ezt a számot 1000-rel, és ezt követően használja egy Text függvényben. A Text( 1000000000 * 1000, DateTimeFormat.UTC ) képlet a 2001-09-09T01:46:40.000Z sztringet adja vissza.

A függvény azonban a Saturday, September 8, 2001 18:46:40 értéket adja vissza, ha a DateTimeFormat.LongDateTime24 formátumot használja egy időzónában, amely az UTC-hez képest -7 óra eltolással helyezkedik el (az UTC-től 7 órára nyugatra). Ez az eredmény a DateTime helyesen a helyi időzónán alapuló értékét jeleníti meg.

A Unix-időre való konvertáláshoz a Value eredményét 1000-rel kell osztani:
RoundDown( érték( UnixTime ) / 1000, 0 )

Ha a további számításokhoz és a megjelenítéshez a Power Apps alkalmazáson belül a Unix-időre van szüksége egy Dátum értékben:
DateAdd( Date( 1970,1,1 ), UnixTime, Másodperc )

SQL Server

Az SQL Server Datetime, Datetime2, és egyéb dátum és idő típusú adatokkal rendelkezik, amelyek nem tartalmaznak időzóna-eltolást, és nem jelzik, hogy melyik időzónában vannak. A vászonalapú alkalmazások feltételezik, hogy ezek az értékek UTC-ben vannak tárolva, és a Felhasználó helyi időzónája értékeként kezelik azokat. Ha az értékeket időzónától függetlenek szánták, akkor az UTC-fordítások esetében korrigálhat a TimeZoneOffset függvény használatával.

A vászonalapú alkalmazások a mellékelt időzóna-információkat használják a Datetimeoffset mezőkben, amikor egy értéket átalakítanak az alkalmazás belső UTC-reprezentációjára. Az alkalmazások az adatok írásakor mindig az UTC-t használják időzónáként (nulla időzóna eltolás).

A vászonalapú alkalmazások a Time adattípus értékeinek olvasását és írását az SQL Server alkalmazásban szöveges sztringként, ISO 8601 időtartam-formátumban hajtják végre. Ha például ezt a sztringformátumot kell elemeznie, és a Time függvényt használja a "PT2H1M39S" szöveges sztring Idő értékre való átalakításához:

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)

Dátum- és időadatok keverése

A Date,Time és a DateTime különböző nevekkel rendelkezik, de mindegyik ugyanazokat az információkat tartalmazza a dátumokról és időpontokról.

A Date érték tartalmazhat időinformációt is, amely általában éjfél. A Time érték dátumra vonatkozó információkat hordozhat, amely általában 1970. január 1. A Dataverse az időadatokat is tárolja egy Csak dátum mezőben, de alapértelmezésben csak a dátuminformációkat jeleníti meg. Ehhez hasonlóan a vászonalapú alkalmazások is megkülönböztetik ezeket az adattípusokat az alapértelmezett formátumok és vezérlőelemek meghatározásához.

A dátum- és időértékek közvetlen hozzáadása és kivonása nem javasolt, mert a időzóna és a többi konverzió megtévesztő eredményt adhat. Vagy használja a Value függvényt a dátum- és időértékek ezredmásodpercre történő átalakításához, és vegye figyelembe az alkalmazás felhasználójának időzónáját, vagy használja a DateAdd és DateDiff függvényeket az értékek egyikéhez történő hozzáadáshoz vagy kivonásához.

Feletválasztó és igen/nem

A Feletválasztós és a két opciót tartalmazó adattípusok két vagy több választási lehetőséget biztosítanak az alkalmazás felhasználója számára. Például a Megrendelés állapota kiválasztása esetén az Új, a Kiszállítva, a Számlázva és a Lezárva lehetőségek közül választhat. A két lehetőség adattípus csak két lehetőséget kínál.

Mindkét adattípus egy szöveges sztring kontextusban jeleníti meg a címkéit. Egy címkevezérlő például a rendelési állapot egyik lehetőségét jeleníti meg, ha a vezérlő Szöveg tulajdonsága egy olyan függvényre van beállítva, amely erre a lehetőségre hivatkozik. Előfordulhat, hogy a lehetőség címkéi a különböző helyeken lévő alkalmazás-felhasználók számára honosítva vannak.

Amikor egy alkalmazás felhasználója kiválaszt egy lehetőséget, és menti a módosítást, az alkalmazás továbbítja az adatokat az adatbázisnak, amely a nyelvtől független ábrázolásban tárolja az adatokat. Egy feleletválasztós opciót számként, a kétopciós adattípus opcióját pedig Boole-féle értékként továbbítja és tárolja a rendszer.

A címkék csak megjelenítési célra szolgálnak. A címkékkel nem hajthatók végre közvetlen összehasonlítások, mert nyelvspecifikusak. Ehelyett minden választásnak van egy jegyzéke, amely a mögöttes számmal vagy Boole-féle értékkel működik. Nem használhatja például a következő képletet:

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

Ezt a képletet azonban használhatja:

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

Globális választások esetén (amelyek közösek a táblázatokban) az opciókészlet jegyzékének neve megegyezik a globális választás nevével. A helyi választások esetében (amelyek egy táblázatra vannak korlátozva) a név tartalmazhatja a táblázat nevét. Ezzel a viselkedéssel elkerülhetők az abból eredő konfliktusok, ha több táblázatban szerepelnek azonos nevű választási lehetőségek. Például a Számlák táblának lehet egy OrderStatus választás, és a neve lehet OrderStatus (Számlák). A név egy vagy több szóközt és zárójelet tartalmaz, így azt egyszeres idézőjelek közé kell tenni, ha egy képletben hivatkozik rá.

Emellett a két lehetőség értékek viselkedhetnek logikai értékekként is. Például egy TaxStatus nevű kétértékű elem rendelkezhet az Adóköteles és a Nem adóköteles címkékkel, amelyek megfelelnek a true és a false értéknek. Ennek bemutatásához használhatja a következő képletet:

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

Ezt a vele egyenértékű képletet is használhatja:

If( ThisItem.Taxable, ...