Typy údajov

Poznámka

Microsoft Power Fx je nový názov jazyka vzorcov pre aplikácie plátna. Tieto články sú rozpracované, pretože jazyk extrahujeme z aplikácií plátna a integrujeme ho s ostatnými produktmi Microsoft Power Platform, aby sme ho sprístupnili ako open source. Začnite s prehľadom Microsoft Power Fx ako úvod do jazyka.

Informácie tečú cez aplikáciu v malých, diskrétnych hodnotách, ktorá sa veľmi podobajú na bunky tabuľky. Napríklad údaje v poli Narodeniny a Výročie by pretekali cez hodnotu Dátum, ktorá obsahuje rok, mesiac a deň. Aplikácia vie, ako tieto hodnoty formátovať, obmedziť vstup na to, čo je pre každú z nich vhodné, a zdieľať ich s databázou. Narodeniny sa líšia od výročia pre ľudí, ale systém s nimi zaobchádza rovnako. V tomto prípade, Dátum je príkladom typu údajov.

V tomto článku sú uvedené podrobnosti o typoch údajov, ktoré aplikácie plátna podporujú. Keď sa aplikácia pripojí k externému zdroju údajov, každý typ údajov v tomto zdroji sa mapuje na typ údajov pre aplikácie plátna.

Typ údajov Popis Príklady
Boolean Hodnota pravda alebo nepravda. Môže byť použitá priamo vo funkciách If, Filter a v ďalších funkciách funkcie bez porovnávania. true
Farba Špecifikácia farby vrátane alfa kanála. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
Mena Hodnota meny uložená ako číslo s pohyblivou desatinnou čiarkou. Hodnoty mien sú rovnaké ako číselné hodnoty s možnosťou formátovania meny. 123
4,56
Dátum Dátum bez času v časovom pásme používateľa aplikácie. Date( 2019, 5, 16 )
Datetime Dátum s časom v časovom pásme používateľa aplikácie. DateTimeValue( "May 16, 2019 1:23:09 PM" )
Desatinný Číslo s vysokou presnosťou, základňou 10 operácií a obmedzeným dosahom. 123
Desatinné miesto( "1,2345" )
GUID Globálne jedinečný identifikátor. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hypertextové prepojenie Textový reťazec, ktorý obsahuje hypertextový odkaz. "https://powerapps.microsoft.com"
Image Textový reťazec Jednoznačný identifikátor zdroja (URI) k obrázku vo formáte .jpeg, .png, .svg, .gif alebo v inom bežnom formáte web-image. MyImage pridané ako zdroj aplikácie
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Médium Textový reťazec URI pre video alebo zvukový záznam. MyVideo pridané ako zdroj aplikácie
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Číslo alebo plavák Číslo so štandardnou presnosťou, operáciami základne 2 a širokým rozsahom. 123
8,903e121
1.234E200
Voľba Výber z množiny možností podložených číslom. Tento typ údajov kombinuje lokalizovateľné textové označenie s číselnou hodnotou. Označenie sa objaví v aplikácii a číselná hodnota sa uloží a použije na porovnanie. ThisItem.OrderStatus
Záznam Záznam hodnôt údajov. Tento zložený typ údajov obsahuje inštancie iných typov údajov, ktoré sú uvedené v tejto téme. Ďalšie informácie: Práca s tabuľkami. { Company: "Northwind Traders",
Personál: 35,
NonProfit: nepravda }
Odkaz na záznam Odkaz na záznam v tabuľke. Takéto odkazy sa často používajú pri polymorfných vyhľadávaniach. Ďalšie informácie: Práca s odkazmi. First(Accounts).Owner
Table Tabuľka záznamov. Všetky záznamy musia mať rovnaké názvy pre svoje polia s rovnakými typmi údajov a vynechané polia sa považujú za prázdne. Tento zložený typ údajov obsahuje inštancie iných typov údajov, ktoré sú uvedené v tejto téme. Ďalšie informácie: Práca s tabuľkami. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Text Textový reťazec Unicode. "Ahoj, svet"
Čas Čas bez dátumu v časovom pásme používateľa aplikácie. Time( 11, 23, 45 )
Dve možnosti Výber z množiny dvoch možností podložených boolovskou hodnotou. Tento typ údajov kombinuje lokalizovateľné textové označenie s boolovskou hodnotou. Označenie sa objaví v aplikácii a boolovská hodnota sa uloží a použije na porovnanie. ThisItem.Taxable
Netypový objekt Objekt nedeklarovaného typu. Základným objektom môže byť akýkoľvek existujúci typ a možno ho previesť na kompatibilné typy pomocou funkcií ako Boolean(), Value(), Tabuľka() atď. Ďalšie informácie nájdete v časti Netypový objekt a Práca s JSON. ParseJSON("{ ""Field"" : 1234 }").Field

Mnohé z týchto typov údajov sú podobné a majú rovnaké základné zobrazenie, ako napríklad pole hypertextový odkaz sa považuje za Text. Dodatočné typy údajov poskytujú lepšie štandardné skúsenosti vo formulároch a iných ovládacích prvkoch.

Blank

Všetky typy údajov môžu mať hodnotu prázdny (inými slovami, žiadna hodnota). Termín „null“ sa často používa v databázach pre tento koncept.

Použite funkciu Blank s funkciou Set alebo Patch na nastavenie premennej alebo poľa na prázdne. Napríklad Set( x, Blank() ) odstráni akúkoľvek hodnotu z globálnej premennej x.

Test hodnoty prázdne použitím funkcie IsBlank. Vymeňte možné hodnoty prázdne neprázdnymi hodnotami pomocou funkcie Coalesce.

Pretože všetky typy údajov podporujú hodnotu prázdne, typy údajov Boolovský a Dve možnosti majú efektívne tri možné hodnoty.

Všetky štyri z týchto typov údajov sú založené na textovom reťazci Unicode.

Vložený text

Vložené textové reťazce vo vzorci sú uzavreté v dvojitých úvodzovkách. Použite dve dvojité úvodzovky, aby predstavovali jednu dvojitú citáciu v textovom reťazci. Napríklad pomocou nasledujúceho vzorca vo vlastnosti OnSelect ovládacieho prvku Tlačidlo:

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

výsledkom je banner, keď sa stlačí tlačidlo, kde sa vynechá prvá a posledná dvojitá úvodzovka (pretože oddeľujú textový reťazec) a opakované dvojité úvodzovky okolo Ahoj, svet! budú nahradené jednou dvojitou úvodzovkou:

kontextové upozornenie so správou Jane povedala: „Ahoj, svet.“

Jednoduché úvodzovky sa používajú pre mená identifikátorov, ktoré obsahujú špeciálne znaky a nemajú špeciálny význam v textovom reťazci.

Interpolácia reťazca

Použite interpoláciu reťazca na vloženie vzorcov do textového reťazca. Práca s výstupom a jeho vizualizácia je často jednoduchšia ako použitie funkcie Concatenate alebo & operator.

Pred textový reťazec uveďte znak dolára $ a uzatvorte vzorec, ktorý sa má vložiť, do zložených zátvoriek {} . Ak chcete do textového reťazca zahrnúť zloženú zátvorku, použite opakované zložené zátvorky: {{ alebo }}. Interpolácia reťazca sa dá použiť všade, kde je možné použiť štandardný textový reťazec.

Zvážte napríklad tento vzorec s globálnymi premennými Jablká nastavenými na 3 a Banány nastavenými na 4:

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

Tento vzorec vráti textový reťazec Máme 3 jablká, 4 banány, spolu 7 plodov. Premenné Jablká a Banány sa vložia do textu namiesto zložených zátvoriek spolu s výsledkom matematického vzorca Jablká + Banány. Medzery a iné znaky okolo zložených zátvoriek sa zachovajú tak, ako sú.

Vložené vzorce môžu obsahovať ľubovoľné funkcie alebo operátory. Všetko, čo je potrebné, je, aby sa výsledok vzorca mohol preniesť do textového reťazca. Napríklad tento vzorec vloží do pozdravu Prezývku, ak je zadaná, alebo Meno, ak nie je:

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

Ak je Prezývka nastavená na „Joe“, potom tento vzorec vytvorí textový reťazec Vitaj Joe, rád ťa spoznávam!. Ak je však Prezývkaprázdna a Meno je „Joseph“, potom tento vzorec vytvorí namiesto toho Milý Joseph, rád ťa spoznávam!.

Interpolácia reťazca môže vo vloženom vzorci zahŕňať štandardné textové reťazce. Ak napríklad neboli zadané ani Prezývka ani Meno, mohli by sme ako náhradu použiť „Priateľ“:

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

Interpolácie reťazcov môžu byť dokonca vnorené. Zoberte si tento príklad, v ktorom sú Meno, Prostredné meno a Priezvisko skombinované do pozdravu. Aj keď jedna alebo dve z týchto hodnôt sú prázdne, medzi časťami názvu bude správny počet medzier. Ak nie je poskytnutá žiadna z častí, vnútorná interpolácia reťazca sa zrúti na prázdny reťazec a bude nahradená funkciou Coalesce za „Priateľ“.

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Prvé Stred Posledná Result
John Qunicy Doe Welcome John Quincy Doe!
John blank Doe Welcome John Doe!
blank blank Doe Welcome Doe!
blank blank blank Welcome Friend!

Nové riadky

Vložené textové reťazce môžu obsahovať nové riadky. Zvážte napríklad nastavenie vlastnosti Text ovládacieho prvku Označenie na nasledujúcu hodnotu:

"Line 1
Line 2
Line 3"

Výsledkom vyššie uvedeného vzorca sú tri riadky zobrazené v ovládacom prvku označenia:

Vložený textový reťazec a ovládací prvok označenia zobrazujúci tri riadky s riadkom 1, riadkom 2 a riadkom 3.

Nové riadky sú tiež podporované interpoláciou reťazcov, ako je uvedené nižšie:

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

Výsledkom vyššie uvedeného vzorca je rovnaký výstup:

Vzorec interpolácie reťazca a ovládací prvok označenia zobrazujúci tri čiary s riadkom 1, riadkom 2 a riadkom 3.

Zdroje obrázkov a médií

V ponuke Súbor môžete ako zdroje aplikácií pridať obrázkové, video a zvukové súbory. Názov importovaného súboru sa stane názvom zdroja v aplikácii. Na tomto obrázku bolo do aplikácie pridané logo Northwind Traders pomenované ako nwindlogo:

Zdroj severného vetra.

Ak chcete tento zdroj použiť v aplikácii, zadajte ho do vlastnosti Image ovládacieho prvku Obrázok:

Obrázok severného vetra.

URI pre obrázky a iné médiá

Do posledného príkladu sa môžete ponoriť trochu hlbšie nastavením vlastnosti Text ovládacieho prvku Označenie na nwindlogo. Označenie zobrazuje textový reťazec:

Text týkajúci sa severného vetra.

Aplikácie Canvas odkazujú na každý obrazový alebo iný mediálny súbor, či už je v cloude alebo je pridaný ako zdroj aplikácie, pomocou textového reťazca URI.

Napríklad vlastnosť Image ovládacieho prvku Obrázok akceptuje nielen zdroje aplikácie, ale aj odkazy na obrázky na webe, ako napríklad „https://northwindtraders.com/logo.jpg"“;. Táto vlastnosť akceptuje aj vložené obrázky, ktoré používajú schému údajov URI, ako v tomto príklade:

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

Tento identifikátor URI zobrazuje zväčšenú verziu dvoch fialových diamantov:

Dvojité diamanty.

Môžete zobraziť posledný obrázok nasnímaný v ovládacom prvku Fotoaparát, ak nastavíte vlastnosť Image ovládacieho prvku Obrázok na vlastnosť Photo ovládacieho prvku Fotoaparát. Aplikácia drží obrázok v pamäti a vlastnosť Photo ovládacieho prvku fotoaparátu vracia odkaz URI na obrázok. Napríklad môžete nasnímať fotografiu a vlastnosť Photo fotoaparátu by mala vrátiť "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Identifikátor URI sa používa na odkazovanie na obrázok alebo iný mediálny súbor uložený v databáze. Aplikácia tak nezíska skutočné údaje, kým nebudú skutočne potrebné. Napríklad príloha v tabuľke Microsoft Dataverse môže vrátiť „appres://datasources/Contacts/table/...“ Rovnako ako v príklade fotoaparátu, aj tento obrázok môžete zobraziť nastavením vlastnosti Obrázok ovládacieho prvku obrázka na tento odkaz, ktorá načíta binárne údaje.

Keď ukladáte typ mediálnych údajov, napríklad obrázok, do databázy, aplikácia odošle aktuálny obrázok alebo mediálne údaje, nie odkaz URI.

Obmedzenia veľkosti

Ako textové reťazce a identifikátory URI nemajú tieto typy údajov vopred nastavený limit na ich dĺžku.

Binárne údaje, na ktoré tieto typy údajov odkazujú, tiež nemajú žiadne vopred stanovené obmedzenia veľkosti. Napríklad obrázok nasnímaný pomocou ovládacieho prvku fotoaparátu, na ktorý sa odkazuje ako "appres://...", môže byť rovnako veľký a v takom rozlíšení, ako dokáže zachytiť fotoaparát zariadenia. Rozlíšenie, obnovovacia frekvencia a ďalšie atribúty mediálnych súborov nie sú obmedzené typom údajov, ale špecifické ovládacie prvky na prehrávanie a zachytávanie médií môžu mať svoje obmedzenia.

Všetky veľkosti údajov však závisia od množstva dostupnej pamäte v aplikácii. Prehliadače spustené v stolnom počítači zvyčajne podporujú viac ako 100 megabajtov údajov. Množstvo dostupnej pamäte na zariadení, ako je napríklad telefón, však môže byť oveľa nižšie, zvyčajne v rozsahu 30 – 70 megabajtov. Ak chcete určiť, či sa vaša aplikácia spustí v rámci týchto limitov, otestujte bežné scenáre na všetkých zariadeniach, na ktorých by sa mala spustiť.

Ako najlepšiu prax uchovávajte údaje v pamäti iba tak dlho, ako je to potrebné. Nahrajte obrázky do databázy čo najskôr; sťahujte obrázky iba vtedy, keď o ne používateľ aplikácie požiada.

Čísla

Poznámka

Power Apps podporuje Float iba dnes a je to typ všetkých čísel. Podpora desatinných miest bude pridaná čoskoro.

Power Fx podporuje dva druhy čísel: Desatinné číslo a Float (so synonymami Číslo a Mena ).

Desatinné číslo je najlepšie pre väčšinu obchodných výpočtov. Môže presne reprezentovať čísla v základe 10, čo znamená, že 0.1 môžu byť presne reprezentované a nebudú náchylné na chyby zaokrúhľovania počas výpočtov. Má dostatočne veľký dosah pre každú obchodnú potrebu, až 1028 s presnosťou až 28 číslic. Desatinné číslo je predvolený číselný typ údajov pre väčšinu Power Fx hostiteľov, ktorý sa používa, ak človek jednoducho píše 2*2.

Float je najlepší pre vedecké výpočty. Môže predstavovať čísla v oveľa väčšom rozsahu, až do 10308. Presnosť je obmedzená na 15 desatinných miest a matematika je založená na základe 2, takže nemôže presne reprezentovať niektoré bežné desatinné hodnoty. Float má tiež vyšší výkon a je uprednostňovaný, ak je to faktor a presnosť nie je kritická.

Desatinné čísla

Typ údajov Desatinné číslo najčastejšie používa typ desatinnýchúdajov .NET. Niektorí hostitelia, napríklad Dataverse stĺpce vzorcov, ktoré sú spustené v programe SQL Serer, používajú desatinný typ údajov SQL Servera.

Desatinné číslo robí matematiku tak, ako ste sa učili v škole, pomocou základných 10 číslic. To je veľmi dôležité, aby sa zabránilo chybám zaokrúhľovania z veľmi malých rozdielov, ktoré sa môžu nahromadiť pri použití matematiky základne 2 (ako ju používa Float).

Rozsah je od pozitívnych 79,228,162,514,264,337,593,543,950,335 po negatívne 79,228,162,514,264,337,593,543,950,335. Oddeľovač desatinných miest môže byť umiestnený kdekoľvek v rámci týchto čísel, čo poskytuje presnosť až 28 číslic a stále je presne znázornený. Napríklad 79,228,162,514,264.337593543950335 môže byť presne zastúpený, rovnako ako 7.9228162514264337593543950335.

Čísla s pohyblivou rádovou čiarkou

Typ údajov Float , známy aj ako číslo alebo mena, používa štandard IEEE 754 s dvojitou presnosťou s pohyblivourádovou čiarkou. Táto norma poskytuje veľmi veľký počet čísel, s ktorými sa dá pracovať, od –1,79769 × 10308 do 1,79769 × 10308. Najmenšia hodnota, ktorú možno zobraziť, je 5 × 10–324.

Float môže presne reprezentovať celé čísla (alebo celé čísla) medzi –9,007,199,254,740,991 (–(253–1)) a 9,007,199,254,740,991 (2 53 –1) vrátane. Tento rozsah je väčší ako 32-bitové (alebo 4-bajtové) celočíselné typy údajov, ktoré databázy bežne používajú. Aplikácie plátna však nemôžu znázorniť 64-bitové (alebo 8-bajtové) celočíselné typy údajov. Možno budete chcieť číslo uložiť do textového poľa alebo pomocou vypočítaného stĺpca vytvoriť kópiu čísla v textovom poli tak, aby bolo mapované do typu údajov Text v aplikácii plátna. Týmto spôsobom môžete zaznamenávať, zobrazovať a zadávať tieto hodnoty a tiež ich porovnávať, aby ste zistili, či sú rovnaké; v tomto formulári však nemôžete vykonať numerické výpočty.

Aritmetika s pohyblivou rádovou čiarkou je približná, takže pri mnohých zdokumentovaných príkladoch môže niekedy poskytnúť neočakávané výsledky. Môžete očakávať, že vzorec 55/100 × 100 vráti presne 55 a (55/100 × 100) – 55 vráti presne nulu. Druhý vzorec však vracia 7,1054 × 10–15, čo je veľmi malé, ale nie nulové. Tento malý rozdiel zvyčajne nespôsobuje problém a aplikácia ho pri zobrazení výsledku zaokrúhľuje. Malé rozdiely sa však môžu v následných výpočtoch znásobiť a zdanlivo poskytnúť nesprávnu odpoveď.

Databázové systémy často ukladajú meny a vykonávajú výpočty pomocou desatinnej matematiky, ktorá ponúka menší rozsah, ale väčšiu kontrolu nad presnosťou. V predvolenom nastavení aplikácie canvas mapujú meny na vstupe aj výstupe na hodnoty s pohyblivou desatinnou čiarkou; výsledok sa preto môže líšiť od výpočtov, ktoré sa vykonávajú v natívnom desatinnom dátovom type. Ak tento typ nezrovnalostí spôsobí problémy, možno budete chcieť s týmito hodnotami pracovať ako s textom, rovnako ako s veľkými celými číslami opísanými vyššie v tejto časti.

Predvolené hodnoty a konverzie

Poznámka

Power Apps podporuje Float iba dnes a je to typ všetkých čísel. Podpora desatinných miest bude pridaná čoskoro.

Väčšina Power Fx hostiteľov predvolene používa desatinné číslo. To má vplyv:

  • Doslovné čísla vo vzorcoch. Číslo 1.234 sa bude interpretovať ako desatinná hodnota . Vzorec 1.234 * 2 napríklad interpretuje a ako 1.234 desatinné číslo a 2vráti desatinný výsledok.
  • Hodnotová funkcia. Value( "1.234" ) vráti desatinnú hodnotu. Napríklad vzorec Value( "1.234" ) * 2 funkcia Value bude interpretovať obsah textového reťazca "1.234" ako desatinné miesto.

Na prácu s hodnotami Float sa používa funkcia Float . Rozšírením vyššie uvedeného Float( 1.234 ) príkladu sa desatinné 1.234 číslo skonvertuje na plávajúce. Funkciu Float možno použiť aj ako náhradu za hodnotu Value na konverziu reťazca obsahujúceho číslo s pohyblivou desatinnou čiarkou, napríklad na hodnotu Float( "1.234" ) Float , ktorá sa vyžaduje, ak číslo nemožno reprezentovať ako desatinné miesto.

Zhrnutie:

Využitie Desatinný Plávať
Doslovné čísla vo vzorcoch 1.234 Float( 1.234 )
Float( "1.234" )
Konverzia z textového reťazca Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Konverzia medzi číselnými typmi Decimal( float ) Float( decimal )
Konverzia na textový reťazec Text( decimal ) Text( float )

Miešanie číselných typov

Plávajúce a desatinné hodnoty je možné ľubovoľne miešať. Pri zmiešaní sa desatinné hodnoty skonvertujú na hodnoty Float z dôvodu väčšieho rozsahu. Keďže to môže viesť k strate presnosti, je dôležité, aby sa tieto dve veci zbytočne nemiešali. Keďže desatinné číslo je predvolený doslovný typ údajov a väčšina číselných funkcií tento typ zachová, je relatívne ľahké vyhnúť sa prechodu na Float bez toho, aby ste si to želali.

Zvážte napríklad nasledujúci výpočet pomocou pac power-fx repl po inštalácii Power Platform CLI. Keďže obe čísla sú desatinné, výpočet sa vykonáva vdesatinnom čísle a výsledok si zachováva úplnú presnosť:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Ak by sa namiesto toho druhý operand zmenil na Float , potom by sa celý výpočet vykonal vo Floate a malá zlomková časť by sa stratila:

>> 1.0000000000000000000000000001 * Float(2)
2

Date, Time a DateTime

Časové pásma

Hodnoty dátum/čas patria do týchto kategórií:

  • Miestne nastavenie používateľa: Tieto hodnoty sú uložené v UTC (koordinovaný univerzálny čas), ale časové pásmo používateľa aplikácie ovplyvňuje spôsob, akým aplikácia zobrazuje tieto hodnoty a ako ich určuje užívateľ aplikácie. Napríklad ten istý okamih sa objaví inak pre používateľa v Kanade ako pre používateľa v Japonsku.
  • Nezávislé od časového pásma: Aplikácia zobrazuje tieto hodnoty rovnakým spôsobom a používateľ aplikácie ich zadáva rovnakým spôsobom bez ohľadu na časové pásmo. Ten istý okamih sa zobrazí rovnakým spôsobom pre používateľa v Kanade ako pre používateľa v Japonsku. Autori aplikácií, ktorí neočakávajú spustenie svojich aplikácií v rôznych časových pásmach, používajú tieto hodnoty, pretože sú celkovo jednoduchšie.

V tejto tabuľke sú uvedené niektoré príklady:

Typ dátum/čas Hodnota uložená v databáze Hodnota zobrazená a zadaná 7 hodín západne od UTC Hodnota zobrazená a zadaná 4 hodiny východne od UTC
Miestne nastavenie používateľa Nedeľa,máj19,2019
4:00
Sobota,máj18,2019
21:00
Nedeľa,máj19,2019
8:00
Nezávislé od časového pásma Nedeľa,máj19,2019
4:00
Nedeľa,máj19,2019
4:00
Nedeľa,máj19,2019
4:00

Pre dátum/čas Miestne nastavenie používateľa používajú aplikácie plátna časové pásmo prehliadača alebo zariadenia, ale aplikácie s podporou modelov používajú nastavenie používateľa v Dataverse. Tieto nastavenia sa zvyčajne zhodujú, ale výsledky sa budú líšiť, ak sa tieto nastavenia líšia.

Použite funkcie DateAdd a TimeZoneInformation na prevod miestneho času na UTC a späť. Pozrite si príklady týchto funkcií na konci dokumentácie.

Numerické ekvivalenty

Aplikácie plátna uchovávajú a vypočítavajú všetky hodnoty dátumu a času, či už Miestne nastavenie používateľa alebo Nezávislé od časového pásma v UTC. Aplikácia prekladá hodnoty na základe časového pásma používateľa aplikácie, keď ich zobrazuje a kedy ich používateľ špecifikuje.

Keď aplikácia plátna číta hodnotu Nezávislé od časového pásma zo zdroja údajov alebo zapíše takúto hodnotu do zdroja údajov, aplikácia automaticky upraví hodnotu tak, aby kompenzovala časové pásmo používateľa aplikácie. Aplikácia potom zaobchádza s hodnotou ako s hodnotou UTC, ktorá je konzistentná so všetkými ostatnými hodnotami dátumu a času v aplikácii. Z dôvodu tejto kompenzácie sa originálna hodnota Nezávislé od časového pásma objaví, keď aplikácia upraví hodnotu UTC pre časové pásmo používateľa aplikácie.

Toto správanie môžete pozornejšie sledovať pomocou funkcie Value na prístup k základnej číselnej hodnote pre hodnotu dátumu a času. Táto funkcia vráti hodnotu dátumu a času ako počet milisekúnd od 1. januára, 1970 00:00:00.000 UTC.

Pretože každá hodnota dátumu a času sa uchováva v UTC, vzorec Value( Date( 1970, 1, 1 ) ) vo väčšine častí sveta nevráti nulu, pretože funkcia Date vráti dátum v UTC. Vzorec by napríklad vrátil 28 800 000 v časovom pásme, ktoré je posunuté od UTC o osem hodín. Toto číslo odráža počet milisekúnd za osem hodín.

Vráťte sa k nášmu príkladu vyššie:

Typ Date/Time Hodnota uložená v databáze Hodnota zobrazená a zadaná 7 hodín západne od UTC Funkcia Value vráti
Miestne nastavenie používateľa Nedeľa,máj19,2019
4:00
Sobota,máj18,2019
21:00
1,558,238,400,000
(Nedeľa,máj19,2019
4:00 AM UTC)
Nezávislé od časového pásma Nedeľa,máj19,2019
4:00
Nedeľa,máj19,2019
4:00
1,558,263,600,000
(Nedeľa,máj19,2019
11:00 AM UTC)

Konverzia unixových časov

Unixové časy vyjadrujú počet sekúnd od 1. januára 1970 00:00:00 UTC. Pretože aplikácie plátna používajú milisekundy namiesto sekúnd, môžete medzi nimi konvertovať vynásobením alebo delením číslom 1000.

Napríklad unixový čas ukazuje 9. septembra 2001 o 01:46:40 UTC ako 1 000 000 000. Ak chcete v aplikácii plátna zobraziť túto hodnotu dátumu a času, vynásobte toto číslo číslom 1000, aby ste ju prepočítali na milisekundy, a potom ju použite vo funkcii Text. Vzorec Text( 1000000000 * 1000, DateTimeFormat.UTC ) vráti reťazec 2001-09-09T01:46:40.000Z.

Táto funkcia sa však vracia Sobota, september 8, 2001 18:46:40, ak používate formát DateTimeFormat.LongDateTime24 v časovom pásme, ktoré je posunuté o -7 hodín od UTC (7 hodín západne od UTC). Tento výsledok ukazuje hodnotu DateTime správne na základe miestneho časového pásma.

Ak chcete previesť na unixový čas, vydeľte výsledok z funkcie Value číslom 1000:
RoundDown( Value( UnixTime ) / 1000, 0 )

Ak potrebujete unixový čas v hodnote Date pre ďalšie výpočty alebo zobrazenie v rámci Power Apps, použite tento vzorec:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )

SQL Server

SQL Server má údajové typy pre dátum/čas Datetime, Datetime2 a ďalšie, ktoré neobsahujú posun časového pásma a neuvádzajú, v ktorom časovom pásme sa nachádzajú. Aplikácie plátna predpokladajú, že tieto hodnoty sú uložené v UTC a zaobchádzajú s nimi ako s Miestne nastavenie používateľa. Ak majú byť hodnoty nezávislé od časového pásma, korigujte preklady UTC pomocou funkcie TimeZoneOffset.

Aplikácie plátna používajú zahrnuté informácie o časovom pásme v poliach Datetimeoffset pri prevode hodnoty na interné zobrazenie UTC aplikácie. Aplikácie vždy používajú UTC ako časové pásmo (nulového posunutie časového pásma), keď zapisujú údaje.

Aplikácie plátna čítajú a zapisujú hodnoty typu údajov Time v SQL serveri ako textové reťazce vo formáte doby trvania podľa normy ISO 8601. Napríklad musíte analyzovať tento formát reťazca a použiť funkciu Time na prevod textového reťazca "PT2H1M39S" na hodnotu Time:

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)

Kombinácia informácií o dátume a čase

Date, Time a DateTime majú rôzne názvy, ale všetky majú rovnaké informácie o dátumoch a časoch.

Hodnota Date môže obsahovať časové informácie, ktoré sú zvyčajne o polnoci. Hodnota Time môže niesť informácie o dátume, čo je zvyčajne 1. január 1970. Dataverse ukladá tiež časové informácie pomocou poľa Iba dátum, ale predvolene zobrazuje iba informácie o dátume. Podobne aj aplikácie plátna niekedy rozlišujú medzi týmito typmi údajov, aby určili predvolené formáty a ovládacie prvky.

Priame pridanie a odčítanie hodnôt dátumu a času sa neodporúča, pretože časové pásmo a iné konverzie môžu spôsobiť mätúce výsledky. Buď použite funkciu Value, ktorá najskôr skonvertuje hodnoty dátumu a času na milisekundy a zohľadní časové pásmo používateľa aplikácie, alebo použite funkcie DateAdda DateDiff na pridanie alebo odčítanie jednej z týchto hodnôt.

Voľby a Áno/Nie.

Možnosti a dátové typy s dvoma možnosťami poskytujú používateľovi aplikácie dve alebo viac možností výberu. Napríklad voľba Stav objednávky môže ponúknuť možnosti Nové, Odoslané, Fakturované a Zatvorené. Typ údajov s dvoma možnosťami ponúka iba dve možnosti.

Oba tieto typy údajov zobrazujú svoje označenia v kontexte textového reťazca. Ovládací prvok označenia napríklad zobrazuje jednu z možností stavu objednávky, ak je vlastnosť Text ovládacieho prvku nastavená na vzorec, ktorý odkazuje na túto voľbu. Označenia možností môžu byť lokalizované pre používateľov aplikácií na rôznych miestach.

Keď používateľ aplikácie vyberie možnosť a uloží túto zmenu, aplikácia prenesie údaje do databázy, ktorá ich uloží do reprezentácie nezávislej od jazyka. Voľba vo voľbe sa prenáša a ukladá ako číslo a voľba v type údajov s dvoma možnosťami sa prenáša a ukladá ako booleovská hodnota.

Označenia slúžia iba na účely zobrazenia. Nemôžete vykonávať priame porovnania s označeniami, pretože sú špecifické pre určitý jazyk. Namiesto toho má každá voľba enumeráciu, ktorá pracuje s podkladovým číslom alebo booleovskou hodnotou. Napríklad nemôžete použiť tento vzorec:

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

Ale môžete použiť tento vzorec:

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

Pre globálne voľby (ktoré tabuľky zdieľajú) sa názov enumerácie množiny možností zhoduje s názvom globálnej voľby. V prípade miestnych volieb (ktoré sú rozsahom obmedzené na tabuľku) môže názov obsahovať názov tabuľky. Toto správanie zabráni konfliktom, ak má viacero tabuliek možnosti, ktoré majú rovnaký názov. Napríklad tabuľka Obchodné vzťahy môže obsahovať voľbu Stav objednávky a jej názov môže byť OrderStatus (Obchodné vzťahy). Tento názov obsahuje jednu alebo viac medzier a zátvoriek, takže ak ho vo vzorci odkazujete, musíte ho ohraničiť jednoduchými úvodzovkami.

Hodnoty s dvoma možnosťami sa môžu správať aj ako booleovské hodnoty. Napríklad hodnota s dvoma možnosťami pomenovaná TaxStatus môže mať označenia Zdaniteľný a Nezdaniteľný, ktoré zodpovedajú hodnotám pravda a nepravda. Na ukážku môžete použiť tento vzorec:

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

Môžete tiež použiť tento ekvivalentný vzorec:

If( ThisItem.Taxable, ...