Datové typy
Poznámka:
Microsoft Power Fx je nový název jazyka vzorců pro aplikace plátna. Práce na těchto článcích stále probíhá, jak extrahujeme jazyk z aplikací plátna, integrujeme jej s ostatními produkty Microsoft Power Platform a zpřístupňujeme jako open source. Začněte v části Přehled jazyka Microsoft Power Fx obsahující úvod do jazyka.
Informace proudí aplikací v malých, diskrétních hodnotách, velmi podobně jako v buňkách tabulky. Například data v poli Narozeniny a poli Výročí by protékala jako hodnota Datum, která zahrnuje rok, měsíc a den. Aplikace ví, jak tyto hodnoty formátovat, omezit vstup na to, co je pro každého vhodné, a sdílet hodnoty s databází. Narozeniny se liší od výročí pro lidi, ale systém je zpracovává přesně stejným způsobem. V tomto případě je Datum příklad datového typu.
Tento článek obsahuje podrobnosti o datových typech, které aplikace plátna podporují. Když se aplikace připojí k externímu zdroj dat, je každý datový typ v tomto zdroji mapován na datový typ pro aplikace plátna.
Datový typ | Popis | Příklady |
---|---|---|
logický | Hodnota pravda nebo nepravda. Lze použít přímo ve funkcích If, Filter a dalších bez porovnání. | věrný |
Barva | Specifikace barev, včetně alfa kanálu. | Barva.Červená ColorValue( "#102030" ) RGBA ( 255, 128, 0, 0,5 ) |
Měna | Hodnota měny uložená v plovoucí desetinné čárce. Hodnoty měn jsou stejné jako číselné hodnoty s možností formátování měny. | 123 4.56 |
Datum | Datum bez času v časovém pásmu uživatele aplikace. | Datum (5, 16 2019) |
Datum a čas | Datum s časem v časovém pásmu uživatele aplikace. | DateTimeValue( "16. května, 2019 1:23:09 PM" ) |
Desetinný | Číslo s vysokou přesností, operacemi se základem 10 a omezeným rozsahem. | 123 Desetinné ("1,2345") |
GUID | Globálně jedinečný identifikátor. | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000 ") |
Hypertextový odkaz | Textový řetězec, který obsahuje hypertextový odkaz. | "https://powerapps.microsoft.com" ; |
Obraz | Textový řetězec univerzálního identifikátoru zdroje (URI) k obrázku ve formátu .jpeg, .png, .svg, .gif nebo v jiném běžném formátu webového obrázku. | Můj obrázek přidán jako zdroj aplikace "https://northwindtraders.com/logo.jpg" ; "appres://blobmanager/7b12ffa2..." |
Média | Textový řetězec URI pro video nebo zvukový záznam. | MojeVideo přidán jako zdroj aplikace "https://northwindtraders.com/intro.mp4" ; "appres://blobmanager/3ba411c..." |
Číslo nebo Plovák | Číslo se standardní přesností, operacemi se základem 2 a širokým rozsahem. | 123 8.903e121 1,234e200 |
Výběr | Výběr ze sady možností opírající se o číslo. Tento datový typ kombinuje lokalizovatelný textový štítek s číselnou hodnotou. Štítek se objeví v aplikaci a číselná hodnota je uložena a použita pro srovnání. | ThisItem.OrderStatus |
Záznam | Záznam hodnot dat. Tento složený datový typ obsahuje instance jiných datových typů, které jsou uvedeny v tomto tématu. Další informace: Práce s tabulkami. | { Společnost: "Northwind Traders", Staff: 35, NonProfit: false } |
Odkaz na záznam | Odkaz na záznam v tabulce. Tyto odkazy se často používají s polymorfními vyhledáváními. Další informace: Práce s odkazy. | První (Účty). Vlastník |
Tabulka | Tabulka záznamů. Všechny záznamy musí mít stejný název svých polí se stejnými datovými typy a vynechaná pole jsou považována za prázdná. Tento složený datový typ obsahuje instance jiných datových typů, které jsou uvedeny v tomto tématu. Další informace: Práce s tabulkami. | Tabulka( { Jméno: "Sidney", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Anderson" } ) |
Text | Textový řetězec Unicode. | "Ahoj světe" |
Čas | Čas bez data v časovém pásmu uživatele aplikace. | Čas (11, 23, 45) |
Dvě možnosti | Výběr ze sady dvou možností opírající se o logickou hodnotu. Tento datový typ kombinuje lokalizovatelný textový štítek s logickou hodnotou. Štítek se objeví v aplikaci a logická hodnota je uložena a použita pro srovnání. | Tato položka. Zdanitelná |
netypový objekt | Objekt nedeklarovaného typu. Základní objekt může být jakýkoli existující typ a lze jej převést na kompatibilní typy pomocí funkcí, jako je např Boolean(), Value(), Table() atd. Více informací viz Netypovaný objekt a Práce s JSON. | ParseJSON("{ ""Pole"" : 1234 } ").Pole |
Mnohé z těchto datových typů je podobných a mají stejnou základní reprezentaci, například s polem Hyperlink se pracuje jako s datovým typem Text. Další datové typy poskytují lepší výchozí nastavení ve formulářích a dalších ovládacích prvcích.
Blank
Všechny datové typy mohou mít hodnotu prázdné (jinými slovy, žádná hodnota). Termín "null" je často používán v databázích pro tento koncept.
Použijte funkci Blank s funkcí Set nebo Patch pro nastavení proměnné nebo pole na prázdné. Například, Set(x, Blank() ) odebere jakoukoli hodnotu z globální proměnné x.
Prázdnou hodnotu otestujete pomocí funkce IsBlank. Výměnu možných prázdných hodnot za hodnoty, které nejsou prázdné, provedete pomocí funkce Coalesce.
Protože všechny datové typy podporují prázdnou hodnotu, logický datový typ a datový typ Dvě možnosti mají ve skutečnosti tři možné hodnoty.
Text, hypertextový odkaz, obrázek a média
Všechny tyto čtyři datové typy jsou založeny na textovém řetězci Unicode.
Vložený text
Vložené textové řetězce ve vzorci jsou uzavřeny v uvozovkách. Dvě dvojité uvozovky představují jednu dvojitou uvozovku v textovém řetězci. Například použití následujícího vzorce ve vlastnosti OnSelect ovládacího prvku Button:
Notify( "Jane said ""Hello, World!""" )
Při stisknutí tlačítka vyústí v banner, kde jsou vynechány první a poslední dvojité uvozovky (protože vymezují textový řetězec) a opakované dvojité uvozovky kolem Ahoj světe! jsou nahrazeny jednoduchou uvozovkou:
Jednoduché uvozovky se používají v názvech identifikátorů obsahujících speciální znaky a nemají žádný zvláštní význam v rámci textového řetězce.
Interpolace řetězců
Interpolaci řetězců použijte k vložení vzorců do textového řetězce. Často to usnadňuje práci s kódem a vizualizaci výstupu oproti funkci Concatenate nebo operátoru &.
Před textový řetězec zapište znak dolaru $ a vkládaný vzorec uzavřete do složených závorek {}. Chcete-li do textového řetězce vložit složenou závorku, použijte opakované složené závorky: {{ nebo }}. Interpolaci řetězců lze použít všude, kde lze použít standardní textový řetězec.
Ukažme si například tento vzorec s globálními proměnnými Apples (nastavenou na 3) a Bananas (nastavenou na 4):
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Tento vzorec vrátí textový řetězec Máme 3 jablka, 4 banány, celkem 7 kusů ovoce. Proměnné Apples a Bananas jsou vloženy do textu nahrazující složené závorky spolu s výsledkem matematického vzorce Apples+Bananas. Mezery a další znaky kolem složených závorek jsou zachovány tak, jak jsou.
Vložené vzorce mohou obsahovat libovolné funkce nebo operátory. Nutné je pouze to, aby výsledek vzorce mohl být převeden na textový řetězec. Například tento vzorec vloží do pozdravu hodnotu NickName (pokud je zadána), nebo místo ní FirstName:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )
Je-li hodnota NickName nastavena na "Joe", pak tento vzorec vytvoří textový řetězec Welcome Joe, it's great to meet you!. Ale pokud je hodnota NickName prázdná a FirstName je "Joseph", pak tento vzorec místo toho vrátí text Dear Joseph, great to meet you!
Interpolace řetězců může do vloženého vzorce zahrnout standardní textové řetězce. Pokud nebyl zadán NickName ani FirstName, stále jsme mohli jako náhradu předat údaj Friend":
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Řetězcové interpolace lze dokonce vnořovat. Zvažte tento příklad, kde jsou části jména First, Middle a Last spojena do pozdravu. I když jedna nebo dvě z těchto hodnot jsou prázdné, mezi částmi názvu bude správný počet mezer. Pokud není zadána žádná z částí jména, interpolace vnitřního řetězce se zhroutí na prázdný řetězec a bude nahrazena funkcí Coalesce, která vloží text "Friend".
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
First | Middle | Last | Výsledek |
---|---|---|---|
John | Qunicy | Doe | Welcome John Quincy Doe! |
John | prázdný | Doe | Welcome John Doe! |
prázdný | prázdný | Doe | Welcome Doe! |
prázdný | prázdný | prázdný | Welcome Friend! |
Nové řádky
Vložené textové řetězce mohou obsahovat nové řádky. Jako příklad nastavíme vlastnost Text ovládacího prvku Label na následující:
"Line 1
Line 2
Line 3"
Výsledkem výše uvedeného vzorce jsou tři řádky zobrazené v ovládacím prvku Label:
Nové řádky jsou také podporovány v řetězcové interpolaci, jak je znázorněno níže:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Výše uvedený vzorec má za následek stejný výstup:
Prostředky obrázků a médií
V nabídce Soubor můžete jako prostředky aplikace přidat obrazové, video a zvukové soubory. Název importovaného souboru se stane názvem prostředku v aplikaci. Na tomto obrázku je do aplikace přidáno logo Northwind Traders, které je pojmenováno nwindlogo:
Chcete-li tento prostředek použít v aplikaci, zadejte jej do vlastnosti Image ovládacího prvku Image:
URI pro obrázky a jiná média
Do posledního příkladu se můžete trochu více zahloubat nastavením vlastnosti Text ovládacího prvku Label na nwindlogo. Popisek zobrazuje textový řetězec:
Aplikace plátna odkazují na každý obrázek nebo jiný mediální soubor, ať už je v cloudu nebo přidán jako prostředek aplikace, pomocí textového řetězce URI.
Například vlastnost Image ovládacího prvku obrázku přijímá nejen prostředky aplikace, ale také odkazy na obrázky na webu, například "https://northwindtraders.com/logo.jpg"". Vlastnost také přijímá vložené obrázky, které používají schéma URI dat, jako v tomto příkladu:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Tento URI zobrazuje zvětšenou verzi dvou fialových diamantů:
Můžete zobrazit nejnovější snímek pořízený v ovládacím prvku Camera, pokud nastavíte vlastnost Image ovládacího prvku na vlastnost Photo ovládacího prvku kamery. Aplikace podrží obrázek v paměti a vlastnost Photo ovládacího prvku kamery vrátí odkaz URI na obrázek. Můžete například pořídit snímek a vlastnost Photo kamery může vrátit "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
Pomocí URI se odkazuje na obrázek nebo jiný mediální soubor uložený v databázi. Tímto způsobem aplikace nenačte skutečná data, dokud to není skutečně potřeba. Například příloha v tabulce Microsoft Dataverse může vrátit adresu URL "appres://datasources/Contacts/table/..." Stejně jako v příkladu s fotoaparátem můžete tento obrázek zobrazit nastavením vlastnosti Image ovládacího prvku obrázku na tento odkaz, který načte binární data.
Když uložíte datový typ médií, například obrázek, do databáze, aplikace odešle skutečný obrázek nebo data médií, nikoli odkaz na URI.
Omezení velikosti
Jako textové řetězce a identifikátory URI nemají tyto datové typy předvolené omezení na jejich délku.
Binární data, na která tyto datové typy odkazují, také nemají přednastavené omezení velikosti. Například obrázek pořízený pomocí ovládacího prvku kamery, na který se nyní odkazuje jako na "appres://...", může být stejně velký a ve stejně vysokém rozlišení, jaké dokáže zachytit kamera zařízení. Rozlišení, obnovovací kmitočet a další atributy mediálních souborů nejsou omezeny datovým typem, ale konkrétní ovládací prvky pro přehrávání a zachycení médií mohou mít svá vlastní omezení.
Všechny velikosti dat však závisí na množství dostupné paměti v aplikaci. Prohlížeče spuštěné ve stolním počítači obvykle podporují více než 100 megabajtů dat. Množství dostupné paměti na zařízení, jako je telefon, však může být mnohem nižší, obvykle v rozmezí 30–70 megabajtů. Chcete-li zjistit, zda vaše aplikace bude běžet v rámci těchto limitů, otestujte běžné scénáře na všech zařízeních, na kterých by měla být spuštěna.
Doporučujeme uchovávat data v paměti pouze tak dlouho, jak je to nutné. Nahrajte obrázky do databáze co nejdříve; stahujte obrázky pouze tehdy, když o ně uživatel aplikace požádá.
Čísla
Poznámka:
Power Apps dnes podporuje pouze číslo s plovoucí desetinnou čárkou a je typem pro všechna čísla. Desetinný podpora bude brzy přidána.
Power Fx podporuje dva druhy čísel: desetinná čísla a čísla s plovoucí desetinnou čárkou (se synonymy číslo a měna).
Desetinný je nejlepší pro většinu obchodních výpočtů. Může přesně reprezentovat čísla v základu 10, což znamená, že 0.1
může být přesně reprezentováno a nebude náchylné k zaokrouhlovacím chybám během výpočtů. Má dostatečně velký rozsah pro jakoukoli obchodní potřebu, až 1028 s přesností až 28 číslic. Desetinný je pro většinu výchozí číselný datový typ Power Fx hosts, používá se, pokud se jednoduše píše 2*2
.
Plovák je nejlepší pro vědecké výpočty. Může představovat čísla v mnohem větším rozsahu, až do 10308. Přesnost je omezena na 15 desetinných míst a matematika je založena na základu 2, takže nemůže přesně reprezentovat některé běžné desetinné hodnoty. Plovák má také vyšší výkon a je upřednostňován, pokud je to faktor a přesnost není kritická.
Desetinná čísla
Datový typ Desetinné číslo nejčastěji používá datový typ desetinného čísla .NET. Někteří hostitelé, jako např. sloupce vzorce Dataverse, které jsou spuštěny v SQL Server, používají desetinný datový typ serveru SQL Server.
Desetinný dělá matematiku tak, jak jste se učili ve škole, používá základní 10 číslic. To je velmi důležité, abyste se vyhnuli zaokrouhlovacím chybám z velmi malých rozdílů, které se mohou nahromadit při použití matematiky se základem 2 (jak ji používá Číslo s plovoucí desetinnou čárkou).
Rozsah je od kladného 79 228 162 514 264 337 593 543 950 335 do záporného 79 228 162 514 264 337 593 543 950 335. Oddělovač desetinných míst může být umístěn kdekoli v rámci těchto čísel, poskytuje přesnost až 28 číslic, a přesto bude přesně znázorněn. Například 79 228 162 514 264,337593543950335 může být přesně reprezentováno, stejně jako 7,9228162514264337593543950335.
Číslo s plovoucí desetinnou čárkou
Datový typ Číslo s plovoucí desetinnou čárkou neboli Číslo nebo Měna používá standard IEEE 754 s dvojitou přesností s plovoucí desetinnou čárkou. Tento standard poskytuje velmi široký rozsah čísel, ve kterých se pracuje, od –1,79769 x 10308 po 1,79769 x 10308. Nejmenší hodnota, kterou lze reprezentovat, je 5 x 10–324.
Plovák může přesně představovat celá čísla (nebo celá čísla) mezi –9,007,199,254,740,991 (–(2 53 – 1)) a 9,007,199,254,740,991 (2 53 – 1), včetně. Tento rozsah je větší než 32bitové (nebo 4bajtové) celočíselné datové typy, které databáze běžně používají. Aplikace plátna však nemohou představovat 64bitové (nebo 8bajtové) celočíselné datové typy. Možná budete chtít uložit číslo do textového pole nebo pomocí vypočítaného sloupce vytvořit kopii čísla v textovém poli, aby bylo mapováno na datový typ Text aplikace plátna. Tímto způsobem můžete tyto hodnoty podržet, zobrazit a zadat a také je porovnat a určit, zda jsou stejné; v této podobě však na nich nemůžete provádět číselné výpočty.
Aritmetika s pohyblivou řádovou čárkou je přibližná, takže dle mnoha dokumentovaných příkladů může někdy poskytnout neočekávané výsledky. Můžete očekávat, že vzorec 55 / 100 * 100 vrátí přesně 55 a (55 / 100 * 100) – 55 vrátí přesně nulu. Druhý vzorec však vrátí 7,1054 x 10–15, což je velmi malé číslo, ale ne nula. Tento nepatrný rozdíl obvykle nezpůsobuje problém a aplikace jej při zobrazení výsledku zaokrouhlí. Malé rozdíly se však mohou v následných výpočtech nakumulovat a může to vypadat, že je špatný výsledek.
Databázové systémy často ukládají měny a provádějí výpočty pomocí desetinné matematiky, která nabízí menší rozsah, ale větší kontrolu přesnosti. Aplikace plátna standardně mapují měny na hodnoty s pohyblivou desetinnou čárkou i mimo ně; výsledek se proto může lišit od výpočtů, které se provádějí v nativním desetinném datovém typu. Pokud tento typ nesrovnalostí způsobí problémy, možná budete chtít pracovat s těmito hodnotami jako Text, stejně jako u velkých celých čísel popsaných výše v této části.
Výchozí hodnoty a převody
Poznámka:
Power Apps dnes podporuje pouze číslo s plovoucí desetinnou čárkou a je typem pro všechna čísla. Desetinný podpora bude brzy přidána.
Ve výchozím nastavení používá většina hostitelů Power Fx desetinné číslo. To ovlivňuje:
- Doslovná čísla ve vzorcích. Číslo
1.234
bude interpretováno jako desetinná hodnota. Například vzorec1.234 * 2
bude interpretovat1.234
a2
jako desetinná čísla a vrátí a desetinný výsledek. - Funkce Value.
Value( "1.234" )
vrátí a Desetinný hodnota. Například vzorecValue( "1.234" ) * 2
funkce Value bude interpretovat obsah textového řetězce"1.234"
jako desetinné číslo.
Pro práci s hodnotami Číslo s plovoucí desetinnou čárkou se používá funkce Float. Když rozšíříme výše uvedený příklad, Float( 1.234 )
převedete desetinné číslo1.234
na číslo s plovoucí desetinnou čárkou. Plovák lze použít i jako náhradu Hodnota pro převod řetězce obsahujícího číslo s plovoucí desetinnou čárkou, např Float( "1.234" )
do a Plovák hodnota, která je vyžadována, pokud číslo nelze reprezentovat jako a Desetinný.
Souhrnně:
Využití | Desetinný | Plovák |
---|---|---|
Doslovná čísla ve vzorcích | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Převod z textového řetězce | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Převod mezi číselnými typy | Decimal( float ) |
Float( decimal ) |
Převod na textový řetězec | Text( decimal ) |
Text( float ) |
Míchání číselných typů
Plovák a Desetinný hodnoty lze libovolně míchat. Při smíchání jsou desetinné hodnoty převedeny na čísla s plovoucí desetinnou čárkou kvůli většímu rozsahu. Vzhledem k tomu, že to může vést ke ztrátě přesnosti, je důležité tyto dvě věci zbytečně nemíchat. Protože desetinné číslo je výchozí doslovný datový typ a většina numerických funkcí zachová typ, je relativně snadné vyhnout se přechodu na číslo s plovoucí desetinnou čárkou, aniž byste si to přáli.
Zvažte například následující výpočet pomocí pac power-fx repl
po instalaci rozhraní příkazového řádku Power Platform. Protože jsou obě čísla desetinná, výpočet se provádí v desetinných číslech a výsledek si zachovává plnou přesnost:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Pokud by se místo toho druhý operand změnil na číslo s plovoucí desetinnou čárkou , pak by se celý výpočet provedl v číslech s plovoucí desetinnou čárkou a malá zlomková část by byla ztracena:
>> 1.0000000000000000000000000001 * Float(2)
2
Datum, čas a DateTime
Časová pásma
Hodnoty data a času spadají do těchto kategorií:
- Místní uživatel : Tyto hodnoty jsou uloženy v UTC (koordinovaný světový čas), ale časové pásmo uživatele aplikace ovlivňuje, jak aplikace tyto hodnoty zobrazuje a jak je uživatel aplikace určuje. Například stejný okamžik se uživateli v Kanadě zobrazí jinak než uživateli v Japonsku.
- Nezávislé na časovém pásmu : Aplikace zobrazuje tyto hodnoty stejným způsobem a uživatel aplikace je určuje stejným způsobem, bez ohledu na časové pásmo. Stejný okamžik se uživateli v Kanadě zobrazí stejně jako uživateli v Japonsku. Autoři aplikací, kteří neočekávají spuštění svých aplikací v různých časových pásmech, používají tyto hodnoty, protože jsou celkově jednodušší.
V této tabulce jsou uvedeny některé příklady:
Typ data a času | Hodnota uložená v databázi | Hodnota zobrazená a zadaná 7 hodin západně od UTC | Hodnota zobrazená a zadaná 4 hodin východně od UTC |
---|---|---|---|
Místní uživatel | Neděle,19.května,2019 4:00 |
Sobota,18.května,2019 21:00 |
Neděle,19.května,2019 8:00 |
Nezávislé na časovém pásmu | Neděle,19.května,2019 4:00 |
Neděle,19.května,2019 4:00 |
Neděle,19.května,2019 4:00 |
Pro datum/čas Místního času uživatele aplikace plátna používají časové pásmo prohlížeče nebo zařízení, ale modelem řízené aplikace používají nastavení uživatele v Dataverse. Tato nastavení se obvykle shodují, ale výsledky se budou lišit, pokud se tato nastavení liší.
Použijte funkce DateAdd a TimeZoneInformation pro převod místního času na UTC a zpět. Podívejte se na příklady na konci dokumentace pro tyto funkce.
Číselné ekvivalenty
Aplikace plátna uchovávají a vypočítávají všechny hodnoty data a času, ať už se jedná o Místní čas uživatele nebo Nezávislý na časovém pásmu v UTC. Aplikace převádí hodnoty na základě časového pásma uživatele aplikace, když je zobrazuje a když je uživatel aplikace zadá.
Když aplikace plátna přečte hodnotu Nezávislý na časovém pásmu ze zdroje dat nebo zapíše takovou hodnotu do zdroje dat, aplikace automaticky upraví hodnotu tak, aby kompenzovala časové pásmo uživatele aplikace. Aplikace potom považuje tuto hodnotu za hodnotu UTC v souladu se všemi ostatními hodnotami data a času v aplikaci. Kvůli této kompenzaci se původní hodnota Nezávislý na časovém pásmu zobrazí, když aplikace upraví hodnotu UTC pro časové pásmo uživatele aplikace.
Toto chování můžete pozorněji sledovat pomocí funkce Value pro přístup k základní číselné hodnotě data / času. Tato funkce vrací hodnotu data/času jako počet milisekund od 1. ledna, 1970 00:00:00.000 UTC.
Protože každá hodnota data a času je uchovávána v UTC, vzorec Value( Date( 1970, 1, 1 ) ) ve většině částí světa nevrátí nulu, protože funkce Date funkce vrátí datum v UTC. Vzorec by například vrátil 28 800 000 v časové zóně, která je od UTC posunuta o osm hodin. Toto číslo odráží počet milisekund za osm hodin.
Návrat k našemu příkladu shora:
Typ data a času | Hodnota uložená v databázi | Hodnota zobrazená a zadaná 7 hodin západně od UTC | Hodnota funkce vrací |
---|---|---|---|
Místní uživatel | Neděle,19.května,2019 4:00 |
Sobota,18.května,2019 21:00 |
1,558,238,400,000 (Neděle,19.května,2019 4:00 UTC) |
Nezávislé na časovém pásmu | Neděle,19.května,2019 4:00 |
Neděle,19.května,2019 4:00 |
1,558,263,600,000 (Neděle,19.května,2019 11:00 AM UTC) |
Převod unixových časů
Unixové časy vyjadřují počet sekund od 1. ledna, 1970 00:00:00 UTC. Protože aplikace plátna používají milisekundy místo vteřin, můžete mezi nimi převést vynásobením nebo vydělením číslem 1000.
Například unixový čas ukazuje 9. září 2001 v 01:46:40 UTC jako 1 000 000 000. Chcete-li zobrazit hodnotu data a času v aplikaci plátna, vynásobte toto číslo číslem 1 000, čímž jej převedete na milisekundy a poté jej použijte ve funkci Text. Vzorec Text (1000000000 * 1000, DateTimeFormat.UTC) vrátí řetězec 2001-09-09T01:46:40.000Z.
Tato funkce však vrátí Sobota, 8. září 2001 18:46:40 pokud používáte formát DateTimeFormat.LongDateTime24 v časové zóně, která je o –7 hodin posunuta od UTC (7 hodin západně od UTC). Tento výsledek ukazuje hodnotu DateTime správně založenou na místním časovém pásmu.
Chcete-li ji převést na unixový čas, vydělte výsledek Hodnota číslem 1 000:
Zaokrouhlení dolů (hodnota (UnixTime) / 1000, 0)
Pokud potřebujete unixový čas pro hodnotu Datum pro další výpočty nebo zobrazení v Power Apps, použijte tento vzorec:
DateAdd (Datum (1970,1,1), UnixTime, Seconds)
SQL Server
SQL Server má datové typy Datetime, Datetime2 a další typy data a času, které neobsahují posun časového pásma a neuvádějí, ve kterém časovém pásmu jsou. Aplikace plátna předpokládají, že tyto hodnoty jsou uloženy v UTC a zachází s nimi jako s místním časem uživatele. Pokud mají být hodnoty nezávislé na časovém pásmu, opravte překlady UTC pomocí funkce TimeZoneOffset.
Aplikace plátna používají přiložené informace o časovém pásmu v polích Datetimeoffset při převodu hodnoty na interní reprezentaci UTC aplikace. Aplikace vždy používají UTC jako časové pásmo (nulové posunutí časového pásma), když zapisují data.
Aplikace plátna čtou a zapisují hodnoty datového typu Čas do platformy SQL Server jako textové řetězce ve formátu doby trvání ISO 8601. Například musíte analyzovat tento formát řetězce a použít funkci Time pro převod textového řetězce "PT2H1M39S" na hodnotu Čas:
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)
Míchání informací o datu a čase
Datum, Čas a Datum a čas mají různá jména, ale všechny obsahují stejné informace o datech a časech.
Hodnota Datum může zahrnovat také časovou informaci, která je obvykle půlnoc. Hodnota Čas může nést informace o datu, což je obvykle 1. ledna 1970. Dataverse také ukládá časové informace pomocí pole Pouze datum, ale ve výchozím nastavení zobrazuje pouze informace o datu. Podobně aplikace plátna někdy rozlišují mezi těmito datovými typy a určují výchozí formáty a ovládací prvky.
Přímé přidávání a odečítání hodnot data a času se nedoporučuje, protože časové pásmo a jiné převody mohou způsobit matoucí výsledky. Buď použijte funkci Value pro převod hodnoty data/času nejprve na milisekundy a vezměte v úvahu časové pásmo uživatele aplikace nebo použije funkce DateAdd a DateDiff pro přidání nebo odečtení jedné z těchto hodnot.
Volby a Ano/Ne
Volby a datové typy se dvěma možnostmi nabízejí uživateli aplikace dvě nebo více možností k výběru. Například volba Stav objednávky může nabídnout hodnoty Nová, Odesláno, Fakturováno, a Zavřeno. Datový typ s dvěma možnostmi nabízí pouze dvě možnosti.
Oba tyto datové typy zobrazují své popisky v kontextu textového řetězce. Například ovládací prvek popisku zobrazuje jednu z možností stavu objednávky, pokud je vlastnost Text ovládacího prvku nastavena na vzorec, který odkazuje na tuto volbu. Popisky možností mohou být lokalizovány pro uživatele aplikace na různých místech.
Když uživatel aplikace vybere některou možnost a uloží tuto změnu, aplikace odešle data do databáze, která uchovává tato data ve formě, která je nezávislá na jazyce. Možnost ve volbě se přenáší a ukládá jako číslo a volba v datovém typu se dvěma možnostmi se vysílá a ukládá jako logická hodnota.
Popisky jsou pouze pro účely zobrazení. Nemůžete provádět přímé srovnání mezi popisky, protože jsou specifické pro určitý jazyk. Místo toho má každá volba výčet, který pracuje s podkladovým číslem nebo logickou hodnotou. Nemůžete například použít tento vzorec:
If( ThisItem.OrderStatus = "Active", ...
Ale můžete tento ekvivalentní vzorec:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
U globálních voleb (které tabulky sdílejí) se název výčtu sady voleb shoduje s názvem globální volby. U místních voleb (které jsou omezeny na tabulku) může název obsahovat název tabulky. Toto chování zabrání konfliktům, pokud má více tabulek volby se stejným názvem. Například tabulka Účty může mít volbu Stav objednávky, jejíž název může být StavObjednávky (účty). Tento název obsahuje jednu nebo více mezer a závorky, takže pokud je ve vzorci odkazujete, musíte jej uzavřít do jednoduchých uvozovek.
Kromě toho se dvě hodnoty mohou chovat také jako logické hodnoty. Například hodnota s dvěma možnostmi s názvem Stav daně může mít popisky Zdanitelné a Nezdanitelné, které odpovídají hodnotám pravda, respektive nepravda. K předvedení můžete například použít tento vzorec:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Můžete také použít tento ekvivalentní vzorec:
If( ThisItem.Taxable, ...