Vrste podataka
Napomena
Microsoft Power Fx novo je ime za jezik formula za aplikacije od gotovih gradivnih elemenata. Ovi su članci nedovršeni dok izdvajamo jezik iz aplikacija od gotovih gradivnih elemenata i integriramo ga s drugim Microsoft Power Platform proizvoda i činimo ga dostupnim kao otvoreni kod. Počnite s odjeljkom Pregled jezika Microsoft Power Fx za uvod u jezik.
Informacija teče kroz aplikaciju u malim, diskretnim vrijednostima, vrlo sličnim ćelijama proračunske tablice. Na primjer, podatci u polju Rođendan i Obljetnica bi se izvodili kao vrijednost Data koja uključuje godinu, mjesec i dan. Aplikacija zna kako oblikovati ove vrijednosti, ograničiti unos onoga što je za svakoga prikladno i dijeliti vrijednosti s bazom podataka. Rođendani se razlikuju od obljetnica do ljudi, ali sustav s njima postupa na potpuno isti način. U ovom slučaju Datum je primjer vrsta podataka.
Ovaj članak sadrži detalje za vrste podataka koje podržavaju aplikacije radnog područja. Kada se aplikacija poveže s vanjskim izvor podataka, svaka vrsta podataka u tom izvoru mapira se u vrstu podataka za aplikacije radnog područja.
Vrsta podataka | Opis | Primjeri |
---|---|---|
Booleova | Vrijednost true ili false. Može se koristiti izravno u If, Filter i drugim funkcijama bez usporedbe. | istinit |
Boja | Specifikacija boje, uključujući alfa kanal. | Boja.Crvena ColorValue( "#102030" ) RGBA( 255, 128, 0, 0.5 ) |
Valuta | Vrijednost valute koja je pohranjena u broju s pomičnom zarezom. Vrijednosti valuta jednake su brojčanim vrijednostima s mogućnostima oblikovanja valuta. | 123 4.56 |
Datum | Datum bez vremena, u vremenskoj zoni korisnika aplikacije. | Datum( 2019, 5, 16 ) |
DatumVrijeme | Datum s vremenom, u vremenskoj zoni korisnika aplikacije. | DateTimeValue( "16. svibnja, 2019 1:23:09 PM" ) |
Decimala | Broj s visokom preciznošću, bazom 10 operacija i ograničenim dometom. | 123 Decimalni ( "1.2345" ) |
GUID | Globalno jedinstveni identifikator. | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
Hiperveza | Tekstni niz koji sadrži hipervezu. | "https://powerapps.microsoft.com" |
Slika | Universal Resource Identifier (URI) tekstni niz za sliku u .jpeg, .png, .svg, .gif ili drugom uobičajenom formatu web-slike. | MyImage dodan kao resurs aplikacije "https://northwindtraders.com/logo.jpg" "appres://blobmanager/7b12ffa2..." |
Mediji | URI tekstni niz za snimak videozapisa ili audiozapisa. | MyVideo dodan kao resurs aplikacije "https://northwindtraders.com/intro.mp4" "appres://blobmanager/3ba411c..." |
Broj ili plovak | Broj sa standardnom preciznošću, bazom 2 operacija i širokim rasponom. | 123 8.903e121 1.234e200 |
Izbor | Izbor iz niza mogućnosti, poduprto brojem. Ova vrsta podataka kombinira lokaliziranu tekstnu oznaku s numeričkom vrijednošću. Oznaka se pojavljuje u aplikaciji, a brojčana vrijednost pohranjuje se i koristi za usporedbe. | ThisItem.OrderStatus |
Zapis | Zapis vrijednosti podataka. Ova složena vrsta podataka sadrži primjerice drugih vrsti podataka koje su navedene u ovoj temi. Više informacija: Rad s tablicama. | { Tvrtka: "Northwind Traders", Osoblje: 35, NonProfit: netočno } |
Upućivanje na zapis | Referenca na zapis u tablici. Takva upućivanja često se koriste kod polimorfnih pregleda. Više informacija: Rad s upućivanjima. | Prvo (računi). Vlasnik |
Stol | Tablica zapisa. Svi zapisi moraju imati iste nazive za svoja polja s istim vrstama podataka, a izostavljena polja tretiraju se kao prazna. Ova složena vrsta podataka sadrži primjerice drugih vrsti podataka koje su navedene u ovoj temi. Više informacija: Rad s tablicama. | Tablica( { Ime: "Sidney", Prezime: "Higa" }, { Ime: "Nancy", Prezime: "Anderson" } ) |
Tekstualna poruka | Tekstni niz Unicode. | "Zdravo, svijete" |
Vrijeme | Vrijeme bez datuma, u vremenskoj zoni korisnika aplikacije. | Vrijeme( 11, 23, 45 ) |
Dvije mogućnosti | Izbor iz skupa dviju opcija, poduprtih Booleovom vrijednošću. Ova vrsta podataka kombinira lokaliziranu tekstnu oznaku s Booleovom vrijednošću. Oznaka se pojavljuje u aplikaciji, a Booleova vrijednost pohranjuje se i koristi za usporedbe. | Ova stavka.Oporezivo |
netipizirani objekt | Objekt nedeklariranog tipa. Temeljni objekt može biti bilo koji postojeći tip i može se pretvoriti u kompatibilne tipove s pomoću funkcija kao što su Boolean(), Value(), Table() itd. Za više informacije pogledajte Neutipkani objekt i Rad s formatom JSON. | ParseJSON("{ ""Polje"": 1234 }"). Polje |
Mnoge od ovih vrsta podataka su slične i imaju isto pozadinsko predstavljanje, kao što je polje Hyperlink koje se tretira kao Text. Dodatne vrste podataka pružaju bolje zadano iskustvo u obrascima i drugim kontrolama.
Blank
Sve vrste podataka mogu imati vrijednost blank (drugim riječima, bez vrijednosti). Izraz "null" često se koristi u bazama podataka za ovaj koncept.
Koristite funkciju Blank s funkcijom Set ili Patch da biste postavili varijablu ili polje na prazno. Na primjer, Set( x, Blank() ) uklanja vrijednost u globalnoj varijabli x.
Testirajte vrijednost blank pomoću funkcije IsBlank. Zamijenite moguće vrijednosti blank vrijednostima koje nisu blank pomoću funkcije Coalesce.
Zbog toga što sve vrste podataka podržavaju blank, vrste podataka Boolean i Two option praktički imaju tri moguće vrijednosti.
Text, Hyperlink, Image i Media
Sve ove četiri vrste podataka temelje se na tekstnom nizu Unicode.
Ugrađeni tekst
Ugrađeni tekstni nizovi u formuli zatvoreni su u dvostruke navodnike. Upotrijebite dva dvostruka navodnika zajedno da predstavite jedan dvostruki citat u tekstnom nizu. Na primjer, koristeći sljedeću formulu u svojstvu OnSelect kontrole Button:
Notify( "Jane said ""Hello, World!""" )
rezultira natpisom kada se pritisne gumb, kad su prvi i zadnji dvostruki navodnici izostavljeni (jer oni ograničavaju tekstualni niz) i ponovljeni dvostruki navodnici oko Pozdrav, svijete! zamjenjuju se jednim dvostrukim navodnikom:
Jednostruki navodnici koriste se za nazive identifikatora koji obuhvaćaju posebne znakove i nemaju nikavo posebno značenje unutar tekstualnog niza.
Interpolacija niza
Koristite interpolaciju niza za ugrađivanje formula unutar tekstualnog niza. S tim je često lakše raditi i vizualizirati izlaz nego koristiti funkciju Concatenate ili & operator.
Kao prefiks tekstualnog niza stavite znak dolara $ i zatvorite formulu koja će se ugraditi vitičastim zagradama { }. Da biste uključili vitičastu zagradu u tekstualni niz, koristite ponovljene vitičaste zagrade: {{ ili }}. Interpolacija niza može se koristiti svugdje gdje se može koristiti standardni tekstualni niz.
Na primjer, razmotrite ovu formulu s globalnim varijablama jabukama postavljenima na 3 i bananama postavljenima na 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Formula vraća tekstualni niz Imamo 3 jabuke, 4 banana, što je ukupno 7 komada voća. Varijable jabuke i banane umeću se u tekst koji zamjenjuje vitičaste zagrade zajedno s rezultatom matematičke formule jabuke + banane. Razmaci i drugi znakovi oko vitičastih zagrada ostaju takvi kakvi jesu.
Ugrađene formule mogu uključivati bilo koje funkcije ili operatore. Sve što je potrebno je da se rezultat formule može prisiliti na tekstualni niz. Na primjer, ova formula će umetnuti Nadimak, ako je naveden, ili Ime ako nije, u pozdrav:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )
Ako je Nadimak postavljen na "Joe", tada ta formula da je tekstualni niz Dobro došao, Joe, drago mi je što se upoznajemo!. Ali ako je Nadimak prazan i Ime je "Joseph", tada ta formula da Dragi Joseph, drago mi je što se upoznajemo!.
Interpolacija niza može uključivati standardne tekstualne nizove u ugrađenoj formuli. Na primjer, ako ni Nadimak ni Ime nisu navedeni, još uvijek bismo mogli navesti "Prijatelj" kao zamjenu:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Interpolacije nizova mogu čak biti ugniježđene. Pogledajte primjer u kojem su Ime, Srednje ime i Prezime kombinirani u pozdrav. Čak i ako su jedna ili dvije od ovih vrijednosti prazne, točan broj razmaka bit će između dijelova naziva. Ako nijedan dio nije naveden, unutarnja interpolacija niza smanjit će se u prazan niz i zamijenit će je funkcija Coalesce s "Friend".
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Prvo | Sredina | Posljednji | Rezultat |
---|---|---|---|
John | Qunicy | Doe | Welcome John Quincy Doe! |
John | prazno | Doe | Welcome John Doe! |
prazno | prazno | Doe | Welcome Doe! |
prazno | prazno | prazno | Welcome Friend! |
Novi redovi
Ugrađeni tekstualni nizovi mogu sadržavati nove retke. Na primjer, postavite svojstvo Tekst kontrole Oznaka na sljedeće:
"Line 1
Line 2
Line 3"
Gornja formula rezultira s tri retka prikazana u kontroli oznake:
Novi redovi također su podržani s interpolacijom niza, kao što je prikazano u nastavku:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Gornja formula rezultira istim rezultatom:
Slikovni i medijski resursi
U izborniku Datoteka možete dodati sliku, videozapis i datoteke audiozapisa kao resurse aplikacije. Naziv uvezene datoteke postaje naziv resursa u aplikaciji. Na ovoj grafici, logotip Northwind Traders koji je nazvan nwindlogo, dodaj je aplikaciji:
Da biste koristiti ovaj resurs u aplikaciji, navedite ga u svojstvu Slika kontrole Slika:
URI-ji za slike i druge medije
Možete tražiti dalje u posljednjem primjeru postavljanjem svojstva Tekst kontrole Oznaka na nwindlogo. Oznaka pokazuje tekstni niz:
Aplikacije radnog područja povezuju svaku sliku ili drugu medijsku datoteku, bilo da je u oblaku ili je dodana kao resurs aplikacije, tekstnim nizom URI.
Na primjer, svojstvo Slika kontrole slike prihvaća ne samo resurse aplikacije već i veze na slike na webu kao što je "https://northwindtraders.com/logo.jpg". Svojstvo također prihvaća umetnute slike koje koriste shema URI podataka, kao u ovom primjeru:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Da URI prikazuje uvećanu verziju dva ljubičasta dijamanta:
Možete pokazati najnoviju sliku snimljenu u kontroli Kamera ako postavite svojstvo Slika kontrole slike na svojstvo Fotografija kontrole kamere. Aplikacija sadrži sliku u memoriji, a svojstvo Photo kontrole kamere vraća URI referencu na sliku. Na primjer, možete snimiti sliku, a svojstvo kamere Photo vratiti "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
Koristite URI za upućivanje na sliku ili drugu medijsku datoteku pohranjenu u bazi podataka. Na taj način, aplikacija ne dohvaća stvarne podatke dok to zaista i nije potrebno. Na primjer, privitak u tablici Microsoft Dataverse mogao bi vratiti "appres://datasources/Contacts/table/..." kao u primjeru fotoaparata, ovu sliku možete prikazati podešavanjem svojstvo Slika kontrole slike na ovu referencu koja dohvaća binarne podatke.
Kad spremate vrstu medijskog podatka kao što je slika u bazu podataka, aplikacija šalje stvarnu sliku ili medijske podatke, a ne URI referencu.
Ograničenja veličine
Kao tekstni nizovi i URI-ji, ove vrste podataka nemaju unaprijed postavljeno ograničenje glede njihove dužine.
Binarni podatci na koje se odnose ove vrste podataka također nemaju unaprijed postavljeno ograničenje glede veličine. Na primjer, slika snimljena kontrolom kamere koja se sada navodi kao "appres://..." može biti toliko velike i visoke razlučivosti koliko kamera uređaja može prikupiti. Razlučivost, broj slika u sekundi i drugi atributi medijskih datoteka nisu ograničeni vrstom podataka, ali posebne kontrole za reprodukciju i snimanje medija mogu imati svoja ograničenja.
Ipak, sve veličine podataka podliježu količini raspoložive memorije u aplikaciji. Preglednici koji rade na stolnom računalu obično podržavaju više od 100 megabajta podataka. Međutim, količina raspoložive memorije na uređaju kao što je telefon može biti daleko manja, obično u rasponu od 30 do 70 megabajta. Da biste odredili hoće li vaša aplikacija raditi u ovim granicama, testirajte uobičajene scenarije na svim uređajima na kojima bi se trebala pokrenuti.
Kao najbolja praksa držite podatke u memoriji samo onoliko dugo koliko je potrebno. Prenesite slike u bazu podataka što je prije moguće; preuzimajte slike samo kada ih korisnik aplikacije zatraži.
Brojevi
Napomena
Power Apps danas podržava samo Float i to je vrsta svih brojeva. Uskoro će biti dodana decimalna podrška.
Power Fx podržava dvije vrste brojeva: decimalni i float (sa sinonimima broj i valuta ).
Decimalna je najbolja za većinu poslovnih izračuna. Može točno predstaviti brojeve u bazi 10, što znači da se mogu 0.1
točno predstaviti i neće biti skloni pogreškama zaokruživanja tijekom izračuna. Ima dovoljno velik raspon za sve poslovne potrebe, do 1028 s preciznošću do 28 znamenki. Decimalni je zadani numerički tip podataka za većinu Power Fx hostova, koji se koristi ako se jednostavno piše 2*2
.
Float je najbolji za znanstvene izračune. Može predstavljati brojeve u mnogo većem rasponu, do 10308. Preciznost je ograničena na 15 decimalnih mjesta, a matematika se temelji na bazi 2 pa ne može precizno predstaviti neke uobičajene decimalne vrijednosti. Float također ima veće performanse i favoriziran je ako je to faktor i preciznost nije kritična.
Decimalni brojevi
Vrsta podataka Decimalno najčešće koristi .NET decimalni tip podataka. Neki hostovi, kao što Dataverse su stupci formule koji se pokreću u sustavu SQL Serer, koriste decimalnu vrstu podataka sustava SQL Server.
Decimalna matematika radi matematiku na način na koji ste učili u školi, koristeći bazu od 10 znamenki. To je vrlo važno kako bi se izbjegle pogreške zaokruživanja iz vrlo malih razlika koje se mogu akumulirati kada se koristi matematika s bazom 2 (kako je koristi Float).
Raspon je od pozitivnog 79,228,162,514,264,337,593,543,950,335 do negativnog 79,228,162,514,264,337,593,543,950,335. Decimalni razdjelnik može se postaviti bilo gdje unutar ovih brojeva, pružajući do 28 znamenki preciznosti, a i dalje biti precizno predstavljen. Na primjer, 79,228,162,514,264.337593543950335 može biti točno predstavljen, kao i 7.9228162514264337593543950335.
Brojevi s pomičnim zarezom
Vrsta podataka Float , poznata i kao Broj ili Valuta, koristi IEEE 754 standard s pomičnim zarezom s dvostrukom preciznošću. Ovaj standard pruža vrlo veliki raspon brojeva u kojima treba raditi, od –1,79769 x 10308 do 1,79769 x 10308. Najmanja vrijednost koja se može predstaviti je 5 x 10–324.
Float može točno predstavljati cijele brojeve (ili cijele brojeve) između –9,007,199,254,740,991 (–(253 – 1)) i 9,007,199,254,740,991 (253 – 1), uključivo. Ovaj raspon je veći od 32-bitnih (ili 4-bajtnih) cjelobrojnih vrsta podataka koje baze podataka obično koriste. Međutim, aplikacije radne površine ne mogu predstavljati 64-bitne (ili 8-bajtne) cjelobrojne vrste podataka. Možda želite pohraniti broj u tekstno polje ili upotrijebiti izračunati stupac za kopiranje broja u tekstnom polju tako da je preslikan u vrstu podataka Text u aplikaciji radne površine. Na ovaj način možete držati, prikazati i upisati ove vrijednosti te ih uspoređivati da biste utvrdili jesu li jednake; međutim, ne možete vršiti numeričke izračune u ovom obrascu.
Aritmetika s pomičnom točkom je približna, pa ponekad može dati neočekivane rezultate na mnogim dokumentiranim primjerima. Možete očekivati da formula 55 / 100 * 100 vrati točno 55 a (55 / 100 * 100) - 55 vrati točno nula. Međutim, zadnja formula vraća 7,1054 x 10–15, što je vrlo malo, ali nije nula. Ta sitna razlika obično ne stvara problem, a aplikacija to zaokružuje kad prikazuje rezultat. Međutim, male razlike mogu se složiti u kasnijim izračunima i čini se da daju pogrešan odgovor.
Sustavi baza podataka često pohranjuju valute i izvode izračune koristeći decimalnu matematiku, što nudi manji raspon, ali veću kontrolu nad preciznošću. Aplikacije radnog područja prema zadanome preslikavaju valute unutar i izvan krajnje vrijednosti; stoga se rezultat može razlikovati od izračuna koji se izvode u izvornoj decimalnoj vrsti podataka. Ako će ova vrsta odstupanja uzrokovati probleme, možda ćete htjeti raditi s ovim vrijednostima kao Text, baš kao što biste mogli s velikim cijelim brojevima opisanim u ovom odjeljku.
Zadane postavke i konverzije
Napomena
Power Apps danas podržava samo Float i to je vrsta svih brojeva. Uskoro će biti dodana decimalna podrška.
Većina Power Fx hostova prema zadanim postavkama koristi Decimal . To utječe na:
- Doslovni brojevi u formulama. Broj
1.234
će se protumačiti kao decimalna vrijednost. Na primjer, formula1.234 * 2
će protumačiti1.234
i2
kao decimalno i vratiti decimalni rezultat. - Funkcija vrijednosti.
Value( "1.234" )
vratit će decimalnu vrijednost. Na primjer, formula funkcija Value protumačit će sadržaj tekstnog nizaValue( "1.234" ) * 2
kao decimalu ."1.234"
Za rad s vrijednostima Float koristi se funkcija Float . Proširenje gornjeg primjera, Float( 1.234 )
pretvorit će Decimal1.234
u Float. Float se također može koristiti kao zamjena za Value za pretvaranje niza koji sadrži broj s pomičnim zarezom, kao što Float( "1.234" )
je Float vrijednost, što je potrebno ako se broj ne može predstaviti kao Decimal.
Ukratko:
Korištenje | Decimala | Plutati |
---|---|---|
Doslovni brojevi u formulama | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Pretvorba iz tekstnog niza | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Pretvorba između numeričkih tipova | Decimal( float ) |
Float( decimal ) |
Pretvorba u tekstualni niz | Text( decimal ) |
Text( float ) |
Miješanje numeričkih tipova
Float i decimalne vrijednosti mogu se slobodno miješati. Kada se miješaju, decimalne vrijednosti pretvaraju se u vrijednosti s plovkom zbog većeg raspona. Budući da to može rezultirati gubitkom preciznosti, važno je ne miješati to dvoje nepotrebno. Budući da je Decimal zadani doslovni tip podataka i većina numeričkih funkcija će sačuvati tip, relativno je lako izbjeći prelazak na Float bez želje.
Na primjer, razmotrite sljedeći izračun koji koristite pac power-fx repl
nakon instalacije CLI-ja Power Platform . Budući da su oba broja decimalna , izračun se vrši u decimalnom obliku, a rezultat zadržava punu preciznost:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Ako bi se umjesto toga drugi operand promijenio u Float , tada bi se cijeli izračun izvršio u Floatu i mali dio bi se izgubio:
>> 1.0000000000000000000000000001 * Float(2)
2
Date, Time i DateTime
Vremenske zone
Vrijednosti datum/vrijeme spadaju u ove kategorije:
- Lokalno korisnik: te su vrijednosti pohranjene u UTC-u (koordinirano univerzalno vrijeme), ali vremenska zona korisnika aplikacije utječe na to kako aplikacija prikazuje te vrijednosti i kako ih korisnik aplikacije specificira. Primjerice, isti trenutak prikazuje se drugačije korisniku u Kanadi od korisnika u Japanu.
- Neovisno o vremenskoj zoni: aplikacija prikazuje te vrijednosti na isti način, a korisnik aplikacije ih određuje na isti način, bez obzira na vremensku zonu. Isti trenutak prikazuje se na isti način korisniku u Kanadi kao i korisniku u Japanu. Autori aplikacija koji ne očekuju da se njihove aplikacije izvode u različitim vremenskim zonama koriste ove vrijednosti jer su sveukupno jednostavnije.
Ova tablica pokazuje neke primjere:
Vrsta Datum/vrijeme. | Vrijednost pohranjena u bazi podataka | Vrijednost prikazana i unesena 7 sati zapadno od UTC | Vrijednost prikazana i unesena 4 sati istočno od UTC |
---|---|---|---|
Lokalni korisnik | Nedjelja,19.svibnja2019. 4:00 |
Subota,18.svibnja2019. 21:00 |
Nedjelja,19.svibnja2019. 8:00 |
Neovisno o vremenskoj zoni | Nedjelja,19.svibnja2019. 4:00 |
Nedjelja,19.svibnja2019. 4:00 |
Nedjelja,19.svibnja2019. 4:00 |
Za datum/vrijeme za Lokalno vrijeme korisnika, aplikacije radnog područja koriste vremensku zonu preglednika ili uređaja, ali aplikacije stvorene prema modelu koriste korisničku postavku u Dataverse. Ove se postavke obično podudaraju, ali rezultati će se razlikovati ako se te postavke razlikuju.
Koristite funkcije DateAdd i Informacijeovremenskojzoni za pretvaranje lokalnog vremena korisnika na UTC i natrag. Pogledajte primjere na kraju dokumentacije za ove funkcije.
Numerički ekvivalenti
Aplikacije radnog područja uključuju i izračunavaju sve vrijednosti za datum/vrijeme, bez obzira na Lokalno vrijeme korisnika ili Neovisno o vremenoj zoni u UTC. Aplikacija prevodi vrijednosti na temelju vremenske zone korisnika aplikacije kada ih prikazuje i kada ih korisnik navodi.
Kada aplikacija radnog područja očitava vrijednost Neovisno o vremenskoj zoni iz izvora podataka ili upiše takvu vrijednost u izvor podataka, aplikacija automatski prilagođava vrijednost da nadoknadi vremensku zonu korisnika aplikacije. Aplikacija tada tretira vrijednost kao UTC vrijednost, u skladu sa svim ostalim vrijednostima za datum/vrijeme u aplikaciji. Zbog ove nadoknade, pojavljuje se izvorna vrijednost Neovisno o vremenskoj zoni kada aplikacija prilagodi UTC vrijednost za vremensku zonu korisnika aplikacije.
Ovo ponašanje možete pobliže promatrati pomoću funkcije Value za pristup izvornoj brojčanoj vrijednosti za vrijednost datum/vrijeme. Ova funkcija vraća vrijednost datum/vrijeme kao broj milisekundi od 1. siječnja, 1970. 00:00:00.000 UTC.
S obzirom na to da se svaka vrijednosti datum/vrijeme održava u UTC, formula Value( Date( 1970, 1, 1 ) ) neće vratiti nulu u većini dijelova svijeta jer funkcija Date vraća datum u UTC. Na primjer, formula bi vratila 28.800.000 u vremensku zonu koja je od UTC pomaknuta za osam sati. Taj broj odražava broj milisekundi u osam sati.
Vraćamo se našem primjeru odozgo:
Vrsta Datum/vrijeme | Vrijednost pohranjena u bazi podataka | Vrijednost prikazana i unesena 7 sati zapadno od UTC | Funkcija vrijednosti vraća |
---|---|---|---|
Lokalni korisnik | Nedjelja,19.svibnja,2019. 4:00 |
Subota,18.svibnja,2019. 21:00 |
1,558,238,400,000 (Nedjelja,19.svibnja,2019. 4:00 AM UTC) |
Neovisno o vremenskoj zoni | Nedjelja,19.svibnja,2019. 4:00 |
Nedjelja,19.svibnja,2019. 4:00 |
1,558,263,600,000 (Nedjelja,19.svibnja,2019. 11:00 AM UTC) |
Pretvaranje Unix vremena
Unix vremena odražavaju broj sekundi od 1. siječnja, 1970. 00:00:00 UTC. S obzirom na to da aplikacije radne površine koriste milisekunde umjesto sekundi, možete ih pretvoriti množenjem ili dijeljenjem s 1.000.
Primjerice, Unix vrijeme pokazuje 9. rujna, 2001. u 01:46:40 UTC kao 1,000,000,000. Da biste pokazali vrijednosti datum/vrijeme u aplikaciji radnog područja, pomnožite taj broj s 1.000 da biste ga pretvorili u milisekunde, a zatim ga upotrijebite u funkciji Text. Formula Text( 1000000000 * 1000, DateTimeFormat.UTC ) vraća niz 2001-09-09T01:46:40.000Z.
Međutim, ta funkcija vraća Subota, 8. rujna, 2001. 18:46:40 ako koristite format Formatdatumvrijeme.Dugačakdatumvrijeme24 u vrmenskoj zoni koja je pomaknuta za -7 sati od UTC (7 sati zapadno od UTC). Ovaj rezultat pokazuje točnu vrijednost DateTime na temelju lokalne vremenske zone.
Da biste pretvorili u Unix vrijeme, podijelite rezultat iz Value sa 1,000:
RoundDown( Value( UnixTime ) / 1000, 0 )
Ako vam treba Unix vrijeme u vrijednosti Datum za daljnje izračune ili prikaz unutar Power Apps, koristite ovu formulu:
DateAdd( Datum( 1970,1,1 ), UnixTime, Sekunde )
SQL Server
SQL Server ima DateTime, DateTime2, i druge vrste podataka datum/vrijeme koji ne uključuju pomak vremenske zone i ne navode u kojoj se vremenskoj zoni nalaze. Aplikacije radnog područja pretpostavljaju da su ove vrijednosti pohranjene u UTC i tretiraju ih kao Lokalno vrijeme korisnika. Ako vrijednosti trebaju biti neovisne o vremenskoj zoni, ispravite za UTC prijevode pomoću funkcije TimeZoneOffset.
Aplikacije radnog područja koriste obuhvaćene informacije o vremenskoj zoni u poljima Pomakzadatumvrijeme prilikom pretvaranja vrijednosti na unutarnji UTC prikaz aplikacije. Aplikacije uvijek koriste UTC kao vremensku zonu (nulti pomak vremenske zone) kada upisuju podatke.
Aplikacije radnog područja čitaju i pišu vrijednosti vrste podataka Time u SQL Server kao tekstni niz u ISO 8601 format trajanja. Na primjer, morate raščlaniti ovaj format niza i koristiti funkciju Time za pretvaranje tekstnog niza "PT2H1M39S" u vrijednost 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)
Miješanje informacija o datumu i vremenu
Datum, vrijeme i datumVrijeme imaju različite nazive, ali svi sadrže iste podatke o datumima i vremenima.
Vrijednost Date može uključivati informacije o vremenu, što je obično ponoć. Vrijednost Time može obuhvaćati informacije o datumu, što je obično 1. siječnja, 1970. godine. Dataverse također pohranjuje informacije o vremenu s poljem Samo datum ali prema zadanome, pokazuje samo informacije o datumu. Slično tome, aplikacije radnog područja ponekad razlikuju ove vrste podataka za određivanje zadanih formata i kontrola.
Ne preporučuje se dodavanje i oduzimanje vrijednosti datuma i vremena jer vremenska zona i druge pretvorbe mogu prouzročiti zbunjujuće rezultate. Koristite funkciju Value da biste pretvorili vrijednosti datum/vrijeme u milisekunde i uzmite u obzir vremensku zonu korisnika aplikacije ili koristite funkcije DateAdd i DateDiff da biste dodali ili oduzeli jednu od ovih vrijednosti.
Izbori i Da/Ne
Izbori i vrste podataka s dvije mogućnosti pružaju dva ili više izbora za odabir korisnika aplikacije. Na primjer, izbor Stanje narudžbe može ponuditi izbore Novo, Otpremljeno, Fakturirano i Zatvoreno. Vrsta podataka dvije opcije nudi samo dva izbora.
Obje ove vrste podataka pokazuju svoje oznake u kontekstnom tekstnom nizu. Na primjer, kontrola oznake prikazuje jednu od mogućnosti statusa narudžbe ako je svojstvo Teksta kontrole postavljeno na formulu koja upućuje na taj izbor. Oznake mogućnosti mogu se lokalizirati za korisnike aplikacija na različitim lokacijama.
Kad korisnik aplikacije odabere mogućnost i spremi tu promjenu, aplikacija podatke šalje u bazu podataka, koja pohranjuje te podatke u reprezentaciji koja je neovisna o jeziku. Mogućnost u izboru prenosi se i pohranjuje kao broj, a mogućnost u vrsti podataka s dvije mogućnosti prenosi se i pohranjuje kao Booleova vrijednost.
Oznake služe samo za potrebe prikaza. Ne možete provesti direktne usporedbe s oznakama jer su one specifične za jezik. Umjesto toga, svaki izbor ima nabrajanje koje radi s osnovnim brojem ili Booleovom vrijednošću. Na primjer, ne možete koristiti ovu formulu:
If( ThisItem.OrderStatus = "Active", ...
Ali možete koristiti ovu formulu:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Za globalne izbore (koje tablice dijele) naziv nabrajanja skupa mogućnosti podudara se s nazivom globalnog izbora. Za lokalne izbore (koji su ograničeni na tablicu), naziv može sadržavati naziv tablice. Ovo ponašanje izbjegava sukobe ako više tablica ima izbore s istim nazivom. Na primjer, tablica Računi može imati izbor Stanje narudžbe, a njegov bi naziv mogao biti Status narudžbe (Računi). To ime sadrži jedan ili više razmaka i zagrade, pa ga morate okružiti jednim navodnicima ako ga upućujete u formuli.
Osim toga, vrijednosti s dvije mogućnosti mogu se ponašati kao Booleove vrijednosti. Na primjer, vrijednost s dvije mogućnosti pod nazivom Poreznistatus možda ima oznake Oporezivo i Neoporezivo, koje sukladno tome odgovaraju true i false. Za prikaz možete koristiti ovu formulu:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Možete koristiti i ovu ekvivalentnu formulu:
If( ThisItem.Taxable, ...