Typy údajov

Informácie sa presúvajú cez službu Power Fx v malých diskrétnych hodnotách, ako sú napríklad bunky tabuľkového hárka. Napríklad údaje v poli Birthday ( Narodeniny) a anniversary (Výročie ) prechádzajú cez údaje ako hodnotu dátumu obsahujúcu rok, mesiac a deň. Power Fx formátuje tieto hodnoty, obmedzuje vstup na to, čo je vhodné pre každú, a zdieľa hodnoty s databázou. Narodeniny a výročia sa môžu odlišovať od ľudí, ale systém ich spracováva rovnakým spôsobom. V tomto prípade, Dátum je príkladom typu údajov.

V tomto článku sa vysvetľuje, ako každý typ údajov v službe Power Fx funguje a ako sa mapujú k externým zdrojom údajov.

Typ údajov Description Príklady
Boolean Hodnota pravda alebo nepravda. Môžete ju použiť priamo v funkciách If, Filter a ďalších bez porovnania. pravda
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. Funkcia Type podporuje tento typ údajov, ak používate inštanciu poľa Výber podľa názvu. ThisItem.OrderStatus
Farba Špecifikácia farby, ktorá obsahuje alfa kanál. Farba.Červená
ColorValue( "#102030")
RGBA ( 255, 128, 0, 0,5 )
mena Hodnota meny uložená v čísle s pohyblivou rádovou čiarkou. Hodnoty mien sú rovnaké ako číselné hodnoty s možnosťou formátovania meny. Funkcia Type nepodporuje typ údajov Mena . 123
4.56
Dátum Dátum bez časového pásma v časovom pásme používateľa aplikácie. Dátum (5, 16 2019)
DateTime Dátum s časom v časovom pásme používateľa aplikácie. DateTimeValue( "16. máj, 2019 1:23:09 PM" )
Desatinné Číslo s vysokou presnosťou, operáciami base 10 a obmedzeným rozsahom. 123
Desatinné ("1,2345")
Dynamické (predtým UntypedObject) Typ hodnoty je dynamický a v režime runtime sa môže líšiť. Dynamická hodnota môže byť ľubovoľným existujúcim typom a možno ju skonvertovať na kompatibilné typy pomocou funkcií ako boolean(), Value(), Table(), atď. Ďalšie informácie nájdete v téme Dynamické hodnoty a Práca s kódom JSON. ParseJSON("{ ""Pole"" : 1234 }").Pole
Plávať Číslo so štandardnou presnosťou, základnými operáciami 2 a širokým rozsahom. 123
8.903e121
1,234e-200
GUID Globálne jedinečný identifikátor. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hypertextový odkaz Textový reťazec, ktorý obsahuje hypertextové prepojenie. "https://powerapps.microsoft.com"
Obrázok Textový reťazec URI (universal resource identifier) na obrázok v službách .jpeg, .png, .svg, .gifalebo inom bežnom formáte webového obrázka. Funkcia Type nepodporuje typ údajov Obrázok . MyImage bol pridaný ako zdroj aplikácie
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Médiá Textový reťazec URI pre video alebo zvukový záznam. Funkcia Type nepodporuje typ údajov Médiá . MyVideo pridané ako zdroj aplikácie
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
číslo Alias ​​pre Decimal (väčšina Power Fx hostiteľov) alebo Float (aplikácie Canvas). Ak môžete v prípade situácie použiť niektorý z rôznych typov čísel, na maximálnu kompatibilitu použite možnosť Číslo . 123
0,0123
1e4
Záznam Záznam hodnôt údajov. Tento zložený typ údajov obsahuje inštancie iných typov údajov uvedených v tomto článku. Ďalšie informácie nájdete v téme Práca s tabuľkami. Ak používate inštanciu záznamu, funkcia Type tento typ údajov podporuje. { Spoločnosť: "Northwind Traders",
Personál: 35,
NonProfit: nepravda }
Odkaz na záznam Odkaz na záznam v tabuľke. Tieto odkazy sa často používajú pri polymorfných vyhľadávaniach. Ďalšie informácie nájdete v téme Práca s referenciami. Funkcia Type tento typ údajov nepodporuje. Prvý (Účty). Vlastník
Tabuľka Tabuľka záznamov. Všetky záznamy musia mať rovnaké názvy polí a typy údajov a vynechané polia sa považujú za prázdne. Tento zložený typ údajov obsahuje inštancie iných typov údajov uvedených v tomto článku. Ďalšie informácie nájdete v téme Práca s tabuľkami. Funkcia Type podporuje tento typ údajov, ak používate inštanciu tabuľky. Tabuľka( { Meno: "Sidney",
Priezvisko: "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. Čas ( 11, 23, 45 )
Void Používa sa iba funkciami definovanými používateľom správania, indikuje, že funkcia nemá typ návratu. Funkcia Type tento typ údajov nepodporuje. Hoci funkcia nemá vrátený typ alebo hodnotu, vždy môže vrátiť chybu. Ahoj(): Void = { Upozorniť( "Ahoj!" ) }
Áno/Nie 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. Funkcia Type podporuje tento typ údajov, ak používate inštanciu poľa Áno/Nie podľa názvu. TátoPoložka.Zdaniteľné

Mnohé z týchto typov údajov sú podobné a majú rovnaké základné vyjadrenie, ako napríklad pole hypertextového prepojenia , ktoré sa považuje za text. Nadbytočné typy údajov poskytujú lepšie predvolené prostredie vo formulároch a iných ovládacích prvkoch.

Blank

Všetky typy údajov môžu mať prázdnu hodnotu (bez hodnoty). 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. Funkcia Set( x, Blank() ) napríklad odstráni hodnotu v globálnej premennej x.

Pomocou funkcie IsBlank môžete otestovať, či je hodnota prázdna. Vymeňte možné hodnoty prázdne neprázdnymi hodnotami pomocou funkcie Coalesce.

Keďže všetky typy údajov podporujú prázdne hodnoty, booleovské a dva typy údajov s možnosťami majú 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!""" )

Vytvorí banner pri stlačení tlačidla, pričom prvé a posledné dvojité úvodzovky sa vynechá (pretože sú oddelené textovým reťazcom) a opakované dvojité úvodzovky v okolí hello , world! sa nahradia 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. Tento prístup je často jednoduchší na prácu a vizualizáciu výstupu ako pomocou funkcie Concatenate alebo operátora & .

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. Vyžaduje sa len to, že výsledok vzorca sa môže vynútiť na textový reťazec. Tento vzorec napríklad vloží Prezývku , ak je zadaná, alebo Meno , ak nie, do pozdravu:

$"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 sa zachová 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 prázdna Doe Welcome John Doe!
prázdna prázdna Doe Welcome Doe!
prázdna prázdna prázdna 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 tohto 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é s interpoláciou reťazcov:

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

Výsledkom je rovnaký výstup:

Vzorec na interpoláciu reťazca a ovládací prvok označenia zobrazujúci tri riadky 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 s názvom nwindlogo:

Zdroj Northwind.

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

Obrázok Northwind.

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

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. Týmto spôsobom aplikácia nezíska skutočné údaje, kým to nebude 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 kamery, ktorý je označený ako "appres://..." môže byť taký veľký a s vysokým rozlíšením, ako dokáže kamera 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 zistiť, či vaša aplikácia beží v rámci týchto limitov, otestujte bežné scenáre na všetkých zariadeniach, na ktorých by mala bežať.

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

Služba Power Apps dnes podporuje iba float a je to typ všetkých čísel. Čoskoro bude pridaná podpora pre desiatkové .

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

Desatinné je najvhodnejšie pre väčšinu obchodných výpočtov. Dokáže presne reprezentovať čísla so základom 10, čo znamená, že 0.1 môže byť presne znázornené a zabráni chybám pri zaokrúhľovaní počas výpočtov. Má dostatočne veľký rozsah pre akékoľvek obchodné potreby, až 1028 s presnosťou až 28 číslic. Desatinné je predvolený číselný typ údajov pre väčšinu Power Fx hostiteľov, ktorý sa používa, ak sa jednoducho píše 2*2.

Float je najvhodnejší na vedecké výpočty. Môže reprezentovať čísla vo 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 predstavovať niektoré bežné desatinné hodnoty. Float má tiež vyšší výkon a je zvýhodnený, ak je to faktor a presnosť nie je kritická.

Desatinné čísla

Dátový typ Decimal najčastejšie používa .NET desiatkový dátový typ. Niektorí hostitelia, ako napríklad stĺpce vzorca Dataverse, ktoré sú spustené na SQL Serveri, používajú typ údajov desatinného čísla SQL Servera.

Desatinné počítava tak, ako ste sa učili v škole, s použitím základných 10 číslic, čo je dôležité, aby ste sa vyhli zaokrúhľovacím chybám z veľmi malých rozdielov, ktoré sa môžu nahromadiť pri použití matematiky so základom 2 (ako ho používa Float).

Rozsah je od kladnej 79,228,162,514,264,337,593,543,950,335 do zápornej 79,228,162,514,264,337,593,543,950,335. Desatinný oddeľovač je možné umiestniť kdekoľvek v rámci týchto čísel, pričom poskytuje presnosť až 28 číslic, pričom je stále presne znázornený. Napríklad 79,228,162,514,264.337593543950335 môže byť presne reprezentované, rovnako ako 7.9228162514264337593543950335.

Čísla s pohyblivou rádovou čiarkou

Dátový typ Float , známy aj ako Číslo alebo Mena, používa IEEE 754 s pohyblivou rádovou čiarkou s dvojitou presnosťou štandard. 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 (253 – 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ť uložiť číslo do textového poľa alebo použiť vypočítaný stĺpec na vytvorenie kópie čísla v textovom poli, aby sa namapovalo na Text údaje zadajte aplikáciu plátno. Týmto spôsobom môžete tieto hodnoty zadržať, zobraziť, zadať a porovnať ich, aby ste zistili, či sú rovnaké; v tejto podobe však s nimi nemôžete vykonávať číselné 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. V závislosti od potrieb presnosti aplikácie možno budete chcieť pracovať s týmito hodnotami ako s textom, ako je popísané vyššie v prípade veľkých celých čísel.

Predvolené nastavenia a konverzie

Poznámka

Služba Power Apps dnes podporuje iba float a je to typ všetkých čísel. Čoskoro bude pridaná podpora pre desiatkové .

Väčšina Power Fx hostiteľov používa v predvolenom nastavení desiatkové číslo . Toto predvolené nastavenie znamená:

  • Doslovné čísla vo vzorcoch. Číslo 1.234 je interpretované ako Desatinná hodnota. Napríklad vzorec 1.234 * 2 interpretuje 1.234 a 2 ako desiatkové a vráti a Desatinný výsledok.
  • Hodnotová funkcia. Value( "1.234" ) vráti Desatinnú hodnotu. Napríklad vo vzorci Value( "1.234" ) * 2 funkcia Hodnota interpretuje obsah textového reťazca "1.234" ako Desatinné.

Na prácu s Float hodnotami sa používa funkcia Float . Rozšírením nášho príkladu, Float( 1.234 ) konvertuje desatinné1.234 na Float. Float môže byť tiež použitý ako náhrada za Hodnota na konverziu reťazca obsahujúceho číslo s pohyblivou rádovou čiarkou, ako napríklad Float( "1.234" ) na a Float hodnota, ktorá sa vyžaduje, ak číslo nemožno reprezentovať ako a Desatinné.

V súhrne:

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

Float a Decimálne hodnoty je možné ľubovoľne miešať. Pri zmiešaní sa Desatinné hodnoty prevedú na Pohyblivé hodnoty kvôli väčšiemu rozsahu. Keďže táto konverzia môže mať za následok stratu presnosti, je dôležité, aby ste tieto dve konverzie zbytočne nemiešajte. Keďže desatinné číslo je predvolený doslovný typ údajov a väčšina číselných funkcií tento typ zachováva, je pomerne jednoduché vyhnúť sa prechodu na hodnotu Float bez toho, aby ste ju pustite.

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 v desiatkovej sústave 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 v Float 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í:

  • Miestny používateľ: Tieto hodnoty sú uložené v UTC (koordinovaný svetový čas), ale časové pásmo používateľa aplikácie ovplyvňuje, ako aplikácia zobrazuje tieto hodnoty a ako ich používateľ aplikácie špecifikuje. 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 určuje 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
Miestny používateľ Nedeľa,máj19,2019
4:00
Sobota,máj18,2019
21:00
Nedeľa,máj19,2019
8:00
Nezávislé na časovom pásme 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 líšia, 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áťme sa k nášmu príkladu:

Typ dátum/čas Hodnota uložená v databáze Hodnota zobrazená a zadaná 7 hodín západne od UTC Vráti funkcia Value
Miestny používateľ 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 UTC)
Nezávislé na časovom pásme 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 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:
Zaokrúhlenie nadol (hodnota (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 (Dátum (1970,1,1), UnixTime, sekundy)

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

Dátum, Čas a DátumČas 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 typy údajov s dvomi možnosťami poskytujú používateľovi aplikácie možnosť výberu z dvoch alebo viacerých možností. Napríklad voľba Stav objednávky môže ponúknuť možnosti Nové, Odoslané, Fakturované a Zatvorené. Typ údajov s dvomi možnosťami dáva iba dve možnosti.

Oba tieto typy údajov zobrazujú svoje označenia ako text. 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ácie na rôznych miestach.

Keď používateľ aplikácie vyberie možnosť a uloží zmenu, aplikácia odošle údaje do databázy, ktorá ich uloží tak, aby boli nezávislé od jazyka. Možnosť podľa voľby sa odošle a uloží ako číslo. Možnosť v údajovom type s dvomi možnosťami sa odošle a uloží ako booleovská hodnota.

Označenia sú určené len na zobrazenie. Označenia nie je možné priamo porovnať, pretože sú špecifické pre 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 lokálnych volieb (ktoré sú obmedzené na tabuľku) môže názov obsahovať názov tabuľky. Týmto správaním sa vyhnete konfliktom, ak majú viaceré tabuľky na výber s rovnakým názvom. 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 má medzery a zátvorky, takže ak naň odkazujete vo vzorci, musíte ho uzavrieť jednoduchými úvodzovkami.

Hodnoty s dvomi možnosťami sa tiež správajú ako booleovské hodnoty. Napríklad hodnota s dvomi možnosťami s názvom TaxStatus môže mať označenia Zdaniteľné a Neda taxovateľné, ktoré zodpovedajú hodnote true a false. Ak to chcete zobraziť, použite tento vzorec:

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

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

If( ThisItem.Taxable, ...