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. | pravda |
Farba | Špecifikácia farby vrátane alfa kanála. | Farba.Červená 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. | 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, základnými 10 operáciami a obmedzeným dosahom. | 123 Desatinné ("1,2345") |
GUID | A Globálne jedinečný identifikátor. | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000 ") |
Hypertextový odkaz | Textový reťazec, ktorý obsahuje hypertextový odkaz. | "https://powerapps.microsoft.com" ; |
Obrázok | 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édiá | Textový reťazec URI pre video alebo zvukový záznam. | Moje video pridaný ako zdroj aplikácie "https://northwindtraders.com/intro.mp4" ; "appres://blobmanager/3ba411c..." |
číslo alebo Plávať | Číslo so štandardnou presnosťou, základnými operáciami 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. | { Spoločnosť: "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. | Prvý(Účty).Vlastník |
Tabuľka | 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. | Tabuľka( { Krstné meno: "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. | Čas ( 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. | TátoPoložka.Zdaniteľné |
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("{ ""Pole"" : 1234 }").Pole |
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.
Text, hypertextový odkaz, obrázok a médiá
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:
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 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. 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ývka prá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 | 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 vyššie uvedeného vzorca sú tri riadky zobrazené v ovládacom prvku označenia:
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:
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:
Ak chcete tento zdroj použiť v aplikácii, zadajte ho do vlastnosti Image ovládacieho prvku Obrázok:
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:
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:
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 len Float dnes 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 zastúpené a nebude náchylný na chyby zaokrúhľovania 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ý dátový typ 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 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
Dátový typ Decimal najčastejšie používa .NET desiatkový dátový typ. Niektorí hostitelia, ako napríklad Dataverse stĺpce vzorcov, ktoré sú spustené v SQL Serer, používajú desiatkový typ údajov servera SQL Server.
Desatinné počítava tak, ako ste sa učili v škole, s použitím základných 10 číslic. To je veľmi dôležité, aby ste sa vyhli chybám zaokrúhľovania 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 štandard s pohyblivou rádovou čiarkou s dvojitou presnosťou. 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ť čí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é nastavenia a konverzie
Poznámka
Power Apps podporuje len Float dnes 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 . To ovplyvňuje:
- Doslovné čísla vo vzorcoch. Číslo
1.234
bude interpretované ako Desatinná hodnota. Napríklad vzorec1.234 * 2
bude interpretovať1.234
a2
ako desatinné a vráti a Desatinný výsledok. - Hodnotová funkcia.
Value( "1.234" )
vráti Desatinnú hodnotu. Napríklad vzorecValue( "1.234" ) * 2
funkcia Hodnota bude interpretovať obsah textového reťazca"1.234"
ako Desatinné.
Na prácu s Float hodnotami sa používa funkcia Float . Po rozšírení vyššie uvedeného príkladu Float( 1.234 )
skonvertuje 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 nemôže byť vyjadrené ako Decimálne.
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 to môže mať za následok stratu presnosti, je dôležité tieto dve veci zbytočne nemiešať. Keďže Decimal je predvolený doslovný dátový typ a väčšina numerických funkcií zachová typ, je pomerne jednoduché vyhnúť sa prechodu na Float bez toho, aby ste si to priali.
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 maličký 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 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 | 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 AM 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 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:
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 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, ...