Bendrinti naudojant


Duomenų tipai

Pastaba.

„Microsoft Power Fx” yra naujas drobės programų formulės kalbos pavadinimas. Šie straipsniai yra vis papildomi, mums ištraukiant kalbą iš drobės programų, integruojant ją su kitais „Microsoft Power Platform” produktais ir padarant ją pasiekiamą kaip atvirąjį kodą. Pradėkite nuo „Microsoft Power Fx” apžvalga įvadui į kalbą.

Informacijos srautai programoje naudojant mažas, abstrakčias reikšmes, labai panašiai kaip skaičiuoklės langelius. Pavyzdžiui, duomenys Gimtadienio lauke ir Sukakties lauke turėtų būti pateikiami kaip Datos reikšmė, kurioje yra metai, mėnuo ir diena. Programa žino, kaip formatuoti šias reikšmes, tinkamai apriboti įvestį ir bendrinti reikšmes su duomenų baze. Gimtadieniai skiriasi nuo žmonių sukakčių, tačiau sistema juos tvarko vienodai. Šiuo atveju Data yra duomenų tipo pavyzdys.

Šiame straipsnyje pateikiama informacija apie duomenų tipus, kuriuos palaiko drobės programa. Kai programa prisijungia prie išorinio duomenų šaltinio, kiekvienas to šaltinio duomenų tipas susiejamas su drobės programų duomenų tipu.

Duomenų tipas Aprašas Pavyzdžiai
Bulio logika Teisinga arba klaidinga reikšmė. Galima tiesiogiai naudoti If, Filter ir kitas funkcijas be palyginimo. teisingas
Spalva Spalvų specifikacija, įskaitant alfa kanalą. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
Valiuta Valiutos reikšmė – skaičius su slankiuoju kableliu. Valiutos reikšmės yra tokios pat kaip skaičių reikšmės su valiutos formatavimo parinktimis. 123
4.56
Data Data be laiko programos vartotojo laiko juostoje. Data( 2019, 5, 16 )
DateTime Data su laiku programos vartotojo laiko juostoje. DateTimeValue( „2019 m. gegužės 16 d. 1:23:09 PM“ )
Dešimtainis Didelio tikslumo skaičius, 10 bazinių operacijų ir ribotas diapazonas. 123
Dešimtainis( "1.2345" )
GUID Globaliai unikalus identifikatorius. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Hipersaitas Teksto eilutė, kurioje yra hipersaitas. "https://powerapps.microsoft.com"
Image Visuotinio išteklių identifikatoriaus (URI) teksto eilutė vaizdui .jpeg, .png, .svg, .gif arba kitu įprastu žiniatinklio vaizdo formatu. MyImage įtraukta kaip programos ištekliai
"https://northwindtraders.com/logo.jpg"
„appres://blobmanager/7b12ffa2...“
Medija URI teksto eilutė vaizdo arba garso įrašymui. MyVideo įtraukta kaip programos ištekliai
"https://northwindtraders.com/intro.mp4"
„appres://blobmanager/3ba411c...“
Skaičius arba plūdė Skaičius su standartiniu tikslumu, 2 bazinės operacijos ir platus diapazonas. 123
8.903e121
1.234e200
Pasirinkimas Pasirinkimas iš parinkčių rinkinio, kurį palaiko skaičius. Šis duomenų tipas sujungia lokalizuojamo teksto žymą su skaitine reikšme. Žyma rodoma programoje, o skaitinė reikšmė saugoma ir naudojama palyginimams. ThisItem.OrderStatus
Įrašas Duomenų reikšmių įrašas. Šiame kombinuotų duomenų tipe yra kitų duomenų tipų, išvardytų šioje temoje, egzempliorių. Daugiau informacijos: Darbas su lentelėmis. { Kompanija: „Northwind Traders”,
Darbuotojai: 35,
NonProfit: klaidinga }
Įrašo nuoroda Nuoroda į įrašą lentelėje. Tokios nuorodos dažnai naudojamos su polimorfinėmis peržvalgomis. Daugiau informacijos: Darbas su nuorodomis. First(Accounts).Owner
Table Įrašų lentelė. Visuose įrašuose turi būti tokie patys laukų pavadinimai su tais pačiais duomenų tipais, o praleisti laukai yra tvarkomi kaip tušti. Šiame kombinuotų duomenų tipe yra kitų duomenų tipų, išvardytų šioje temoje, egzempliorių. Daugiau informacijos: Darbas su lentelėmis. Lentelė( { FirstName: „Sidney”,
LastName: „Higa” },
{ FirstName: „Nancy”,
LastName: „Anderson” } )
Tekstas Unikodo teksto eilutė. „Labas, pasauli”
Laikas Laikas be datos programos vartotojo laiko juostoje. Laikas( 11, 23, 45 )
Dvi parinktys Pasirinkimas iš dviejų parinkčių rinkinio, kurį palaiko Bulio logikos reikšmė. Šis duomenų tipas sujungia lokalizuojamo teksto žymą su Bulio logikos reikšme. Žyma rodoma programoje, o Bulio logikos reikšmė saugoma ir naudojama palyginimams. ThisItem.Taxable
Netapatinamas objektas Nedeklaruoto tipo objektas. Pagrindinis objektas gali būti bet kokio esamo tipo ir jį galima konvertuoti į suderinamus tipus naudojant funkcijas, pvz., Bulio logikos(), Reikšmės(), Lentelės() ir kt. Daugiau informacijos ieškokite Netapatinamas objektas ir Dirbant su „JSON”. ParseJSON("{ "Laukas", 1234 }"). Laukas

Daugelis šių duomenų tipų yra panašūs ir turi tą patį pateikimą, pvz., Hipersaito lauką, laikomą Tekstu. Papildomi duomenų tipai suteikia geresnį numatytąjį formų bei kitų valdiklių naudojimą.

Tuščia

Visų duomenų tipų reikšmė gali būti tuščia (kitaip sakant, jokių reikšmių). Tokiai sąvokai duomenų bazėse dažnai vartojamas terminas „neapibrėžta“.

Naudokite funkciją Blank su funkcija Set arba Patch, kad nustatytumėte kintamąjį arba lauką į tuščia. Pavyzdžiui, Set( x, Blank() ) pašalina bet kokią reikšmę visuotiniame kintamajame x.

Patikrinkite tuščia reikšmę naudodami IsBlank funkciją. Pakeiskite galimas tuščias reikšmes netuščiomis reikšmėmis naudodami funkciją Coalesce.

Visi duomenų tipai palaiko tuščia, todėl Bulio logikos ir Dviejų parinkčių duomenų tipai turi tris galimas reikšmes.

Visi keturi šie duomenų tipai pagrįsti Unikodo teksto eilute.

Įdėtasis tekstas

Įdėtosios teksto eilutės formulėje pateikiamos dvigubose kabutėse. Kartu naudokite dvi dvigubas kabutes, kad nurodytumėte vieną viengubą kabutę teksto eilutėje. Pavyzdžiui, naudodami tokią formulę Mygtuko valdiklio OnSelect ypatybėje:

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

rezultatai reklamos juostoje, nuspaudus mygtuką, kur pirmosios ir paskutinės dvigubos kabutės praleidžiamos (nes jos atriboja teksto eilutę) ir pasikartojančios dvigubos kabutės aplink Sveikas, pasauli! keičiamos viengubomis kabutėmis:

iššokantis pranešimas su Jane žinute „Sveikas, pasauli.“

Viengubos kabutės naudojamos identifikatorių pavadinimams, kuriuose yra specialiųjų simbolių ir kurie teksto eilutėje neturi ypatingos reikšmės.

Eilučių tarpusavio sąveika

Norėdami į teksto eilutę įdėti formulės, naudokite eilučių tarpusavio sąveikas. Tai dažnai lengviau dirbti su išvestimi ir ją vizualizuoti, nei naudojant funkciją Concatenate or & operator.

Pradėkite teksto eilutę su dolerio ženklu $ ir pridėkite formulę, kuri bus įtraukta riestiniuose skliaustuose { }. Norėdami į teksto eilutę įtraukti riestinius skliaustus, naudokite pasikartojančius riestinius skliaustus {{ arba }}. Eilučių tarpusavio sąveika gali būti naudojama bet kurioje standartinės teksto eilutės vietoje.

Pavyzdžiui, atsižvelkite į šią formulės reikšmę su visuotiniais kintamaisiais Obuoliai, nustatytais kaip 3, Bananai, nustatytais kaip 4:

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

Ši formulė pateikia teksto eilutę Turime 3 obuolius, 4 bananus, iš viso 7 vaisiai. Kintamieji Obuoliai ir Bananai įterpiami į tekstą, pakeisdami riestinius skliaustus, kartu su matematinės formulės rezultatu Obuoliai+Bananai. Tarpai ir kiti simboliai aplink riestinius skliaustus išsaugomi tokie, kokie yra.

Įdėtosiose formulėse gali būti funkcijų arba operatorių. Tereikia, kad formulės rezultatą būtų galima priverstinai paversti teksto eilute. Pavyzdžiui, ši formulė į pasveikinimą įterps NickName, jei jis pateiktas, arba FirstName, jei nepateiktas:

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

Jei NickName reikšmė nustatyta į „Joe”, ši formulė pateikia teksto eilutę Sveiki, Joe, malonu jus matyti! Bet jei NickName yra tuščias, o FirstName yra „Joseph”, tada formulė pateiks tokią teksto eilutę: Joseph, malonu jus matyti!

Į įterptąją formulę galima įtraukti standartines teksto eilutes. Pavyzdžiui, jei nei NickName, nei FirstName nebuvo pateikti, vis tiek galėjome pateikti žodį „Draugas” kaip pakaitą:

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

Eilučių tarpusavio sąveikas galima net įterpti. Apsvarstykite šį pavyzdį, kai Pirmas ir Vidurinis vardai bei Pavardė sujungiami į pasveikinimą. Net jei viena arba dvi iš šių reikšmių nepateiktos, tinkamas tarpų skaičius bus paliktas tarp vardų dalių. Jei nepateikiama nė viena iš dalių, vidinė eilučių tarpusavio sąveika bus suvesta į tuščią eilutę ir pakeista eilute Suliejimo funkcija „Draugas”.

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Pirmas Viduryje Paskutinis Rezultatas
John Kvadratūra Doe Welcome John Quincy Doe!
John tuščia Doe Welcome John Doe!
tuščia tuščia Doe Welcome Doe!
tuščia tuščia tuščia Welcome Friend!

Naujos eilutės

Įdėtosiose teksto eilutėse gali būti naujų eilučių. Pavyzdžiui, nustatykite savybę Tekstas Žymos valdikliui:

"Line 1
Line 2
Line 3"

Aukščiau pateikta formulė nurodo tris žymos valdiklio eilutes:

Įdėtoji teksto eilutė ir etiketės valdiklis, rodantys tris eilutes su 1 eilute, 2 eilute ir 3 eilute.

Naujos eilutės taip pat palaikomos su eilučių tarpusavio sąveika, kaip parodyta toliau:

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

Pagal aukščiau pateiktą formulę gaunamas tas pats rezultatas:

Eilutės interpoliacijos formulė ir etiketės valdiklis, rodantys tris eilutes su 1 eilute, 2 eilute ir 3 eilute.

Vaizdų ir medijos ištekliai

Meniu Failas galite įtraukti vaizdo, vaizdo įrašų ir garso įrašų failų kaip programos išteklių. Importuoto failo pavadinimas programoje tampa išteklių pavadinimu. Šiame grafiniame elemente į programą įtrauktas „Northwind Traders“ logotipas, pavadintas nwindlogo:

Šiaurės vėjo ištekliai.

Norėdami naudoti šį išteklių programoje, nurodykite jį Vaizdo valdiklio Vaizdo ypatybėje:

Šiaurės vėjo vaizdas.

Vaizdų ir kitos medijos URI

Galite išsamiau panagrinėti paskutinį pavyzdį nustatydami Žymos valdiklio Teksto ypatybę į nwindlogo. Žymoje rodoma teksto eilutė:

Šiaurės vėjo tekstas.

Drobės programos nurodo kiekvieną vaizdą ar kitą medijos failą neatsižvelgiant į tai, ar jis yra debesyje, ar įtraukiamas kaip programos išteklius naudojant URI teksto eilutę.

Pavyzdžiui, Vaizdo ypatybė priima ne tik programos išteklius, bet ir žiniatinklio vaizdų saitus, pvz., „https://northwindtraders.com/logo.jpg"“. Ypatybė taip pat priima įdėtuosius vaizdus, kuriuose naudojama duomenų URI schema, kaip šiame pavyzdyje:

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

Tame URI rodoma padidinta dviejų violetinių deimantų versija:

Dvigubi deimantai.

Galite parodyti naujausią vaizdą, užfiksuotą Fotoaparato valdiklyje, jei vaizdo valdiklio Vaizdo ypatybę nustatote į fotoaparato valdiklio Nuotraukos ypatybę. Programa laiko vaizdą atmintyje, o fotoaparato valdiklio Nuotraukos ypatybė pateikia vaizdo URI nuorodą. Pavyzdžiui, galite fotografuoti, o fotoaparato Nuotraukos ypatybė gali grąžinti „appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1“.

Galite naudoti URI norėdami nurodyti vaizdą arba kitą medijos failą, saugomą duomenų bazėje. Taip programa negauna realių duomenų, kol jų iš tikrųjų nereikia. Pavyzdžiui, lentelės priedas gali pateikti „Microsoft Dataverse“ lentelė gali grįžti "appres://datasources/Contacts/table/..." kaip vaizdo kameros pavyzdyje, šį vaizdą galite matyti nustatę vaizdo valdiklio ypatybę Vaizdas su šia nuoroda, kuria nuskaitomi dvejetainiai duomenys.

Įrašius medijos duomenų tipą, pvz., vaizdą, į duomenų bazę, programa siunčia realius vaizdo arba medijos duomenis, o ne URI nuorodą.

Dydžio apribojimai

Kaip teksto eilutės ir URI, šie duomenų tipai neturi nustatyto ilgio apribojimo.

Dvejetainiai duomenys, kuriuos nurodo šie duomenų tipai, taip pat neturi nustatyto dydžio apribojimo. Pavyzdžiui, naudojant fotoaparato valdiklį užfiksuotas vaizdas, kuris dabar nurodomas kaip „appres://...“, gali būti tokio dydžio ir skiriamosios gebos, kokį gali pateikti įrenginio fotoaparatas. Skiriamoji geba, kadrų dažnis ir kiti medijos failų atributai nėra ribojami pagal duomenų tipą, tačiau savų apribojimų gali turėti specialūs medijos leidimo ir fiksavimo valdikliai.

Tačiau visi duomenų dydžiai priklauso nuo programoje esančios atminties kiekio. Stalinių kompiuterių naršyklės paprastai palaiko daugiau nei 100 megabaitų duomenų. Tačiau įrenginio, pvz., telefono, atminties kiekis gali būti gerokai mažesnis, paprastai 30–70 megabaitų. Norėdami nustatyti, ar programa veiks pagal šiuos apribojimus, patikrinkite įprastus scenarijus visuose įrenginiuose, kuriuose ji turėtų veikti.

Geriausia laikyti duomenis atmintyje tik tol, kol reikia. Kuo greičiau nusiųskite vaizdus į duomenų bazę; atsisiųskite vaizdus tik tada, kai programos vartotojas jų prašo.

Numeriai

Pastaba.

Power Apps šiandien palaiko tik "Float" ir tai yra visų skaičių tipas. Dešimtainis palaikymas netrukus bus pridėtas.

Power Fx palaiko dviejų tipų skaičius:Dešimtainis ir Float(su sinonimais Skaičius ir Valiuta ).

Dešimtainis skaičius geriausiai tinka daugumai verslo skaičiavimų. Jis gali tiksliai atspindėti skaičius 10 bazėje, tai reiškia, kad 0.1 jie gali būti tiksliai pavaizduoti ir nebus linkę į apvalinimas klaidas skaičiavimų metu. Jis turi pakankamai didelį asortimentą bet kokiems verslo poreikiams, iki 1028 su iki 28 skaitmenų tikslumu. Dešimtainis yra numatytasis daugelio Power Fx kompiuterių skaitinių duomenų tipas, naudojamas, jei tiesiog rašoma 2*2.

Plūdė geriausiai tinka moksliniams skaičiavimams. Jis gali reikšti skaičius daug didesniame diapazone, iki 10308. Tikslumas ribojamas iki 15 skaitmenų po kablelio, o matematika pagrįsta 2 pagrindu, todėl ji negali tiksliai atspindėti kai kurių įprastų dešimtainių reikšmių. Plūdė taip pat pasižymi didesniu našumu ir yra palanki, jei tai yra veiksnys, o tikslumas nėra labai svarbus.

Dešimtainiai skaičiai

Dešimtainių duomenų tipas dažniausiai naudoja .NET dešimtainių duomenų tipą. Kai kurie pagrindiniai kompiuteriai, pvz Dataverse ., formulės stulpeliai, paleisti SQL Serer, naudoja SQL serverio dešimtainių duomenų tipą.

Dešimtainis skaitmuo atlieka matematiką taip, kaip išmokote mokykloje, naudodami pagrindinius 10 skaitmenų. Tai labai svarbu norint išvengti apvalinimas klaidų dėl labai mažų skirtumų, kurie gali kauptis naudojant 2 bazės matematiką (kaip naudoja Float).

Diapazonas yra nuo teigiamo 79,228,162,514,264,337,593,543,950,335 iki neigiamo 79,228,162,514,264,337,593,543,950,335. Dešimtainis skyriklis gali būti dedamas bet kurioje šių skaičių vietoje, užtikrinant iki 28 skaitmenų tikslumą, ir vis tiek gali būti tiksliai pavaizduotas. Pavyzdžiui, 79,228,162,514,264.337593543950335 gali būti tiksliai pavaizduotas, kaip ir 7.9228162514264337593543950335.

Slankiojo kablelio skaičiai

Duomenų tipas Float , taip pat žinomas kaip skaičius arba valiuta, naudoja IEEE 754 dvigubo tikslumo slankiojo kablelio standartą. Šiame standarte pateikiama labai daug skaičių, kuriuos galima naudoti: nuo –1,79769 x 10308 iki 1,79769 x 10308. Mažiausia reikšmė, kuri gali būti pateikiama, yra 5 x 10–324.

Plūdė gali tiksliai pavaizduoti sveikus skaičius (arba sveikus skaičius) tarp –9,007,199,254,740,991 (–(253 – 1)) ir 9,007,199,254,740,991 (253 – 1), imtinai. Šis diapazonas yra didesnis nei 32 bitų (arba 4 baitų) sveikųjų skaičių duomenų tipai, kuriuos paprastai naudoja duomenų bazės. Tačiau drobės programos negali pateikti 64 bitų (arba 8 baitų) sveikųjų skaičių duomenų tipų. Gali reikėti išsaugoti skaičių teksto lauke arba naudoti apskaičiuojamąjį stulpelį, jei norite nukopijuoti skaičių į teksto lauką, kad jis būtų susietas su Teksto duomenų tipu drobės programoje. Tokiu būdu galite laikyti, rodyti ir įvesti šias reikšmes bei lyginti jas ir nustatyti, ar jos vienodos; tačiau šioje formoje negalima su jomis atlikti skaičiavimų.

Slankiojo kablelio aritmetika yra apytikrė, todėl kartais galimi netikėti rezultatai su daugeliu dokumentuotų pavyzdžių. Galite tikėtis, kad formulė 55 / 100 * 100 pateiks 55, o (55 / 100 * 100) - 55 pateiks nulį. Tačiau pastaroji formulė pateikia 7,1054 x 10–15 – tai yra labai mažai, bet ne nulis. Šis nedidelis skirtumas paprastai nesukelia problemų ir programa jį suapvalina rodydama rezultatą. Tačiau nedidelių skirtumų gali susidaryti vėlesniuose skaičiavimuose ir bus pateiktas klaidingas atsakymas.

Duomenų bazių sistemos dažnai saugo valiutas ir atlieka skaičiavimus naudodamos dešimtainę matematinę raišką, kuri siūlo mažesnį diapazoną, tačiau didesnį tikslumą. Pagal numatytuosius nustatymus drobės programos susieja valiutas su slankiojo kablelio reikšmėmis arba nesusieja; todėl rezultatas gali skirtis nuo skaičiavimų, atliktų naudojant paprastą dešimtainių duomenų tipą. Jei tokio tipo nesutapimas sukels problemų, galite su šiomis reikšmėmis dirbti kaip su Tekstu ir su anksčiau šiame skyriuje aprašytais dideliais sveikaisiais skaičiais.

Numatytieji nustatymai ir konversijos

Pastaba.

Power Apps šiandien palaiko tik "Float" ir tai yra visų skaičių tipas. Dešimtainis palaikymas netrukus bus pridėtas.

Dauguma Power Fx pagrindinių kompiuterių pagal numatytuosius nustatymus naudoja dešimtainį skaičių. Tai turi įtakos:

  • Pažodiniai skaičiai formulėse. Skaičius 1.234 bus interpretuojamas kaip dešimtainė reikšmė. Pavyzdžiui, formulė interpretuos 1.234 * 2 ir 1.234 kaip dešimtainį 2 ir pateiks dešimtainį rezultatą.
  • Vertės funkcija. Value( "1.234" ) pateiks dešimtainę reikšmę. Pavyzdžiui, formulė Value( "1.234" ) * 2 Reikšmė funkcija interpretuos teksto eilutės "1.234" turinį kaip dešimtainį skaičių.

Norėdami dirbti su "Float" reikšmėmis, naudojama funkcija "Float". Pratęsus aukščiau pateiktą pavyzdį, Float( 1.234 ) dešimtainis skaičius bus konvertuotas1.234 į plūdę. Plūdė taip pat gali būti naudojama kaip reikšmės pakaitalas, norint konvertuoti eilutę, kurioje yra slankiojo kablelio skaičius, pvz., Float( "1.234" ) į plūdės reikšmę, kuri reikalinga, jei skaičiaus negalima pateikti kaip dešimtainio skaičiaus.

Apibendrinant:

Naudojimas Dešimtainis Plūduriuoti
Pažodiniai skaičiai formulėse 1.234 Float( 1.234 )
Float( "1.234" )
Konvertavimas iš teksto eilutės Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Konvertavimas tarp skaitinių tipų Decimal( float ) Float( decimal )
Konvertavimas į teksto eilutę Text( decimal ) Text( float )

Skaitmeninių tipų maišymas

Plūdės ir dešimtainės vertės gali būti laisvai maišomos. Sumaišius, dešimtainės reikšmės konvertuojamos į Float reikšmes dėl didesnio diapazono. Kadangi dėl to gali sumažėti tikslumas, svarbu be reikalo nemaišyti šių dviejų dalykų. Kadangi dešimtainis skaičius yra numatytasis pažodinis duomenų tipas ir dauguma skaitinių funkcijų išsaugos tipą, gana lengva išvengti perėjimo prie "Float " to nenorint.

Pavyzdžiui, apsvarstykite šį skaičiavimą, naudodami pac power-fx repl įdiegę Power Platform CLI. Kadangi abu skaičiai yra dešimtainiai, skaičiavimas atliekamas dešimtainiu tikslumu, o rezultatas išlaiko visišką tikslumą:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Jei vietoj to antrasis operandas būtų pakeistas į "Float ", tada visas skaičiavimas būtų atliktas "Float " ir maža trupmeninė dalis būtų prarasta:

>> 1.0000000000000000000000000001 * Float(2)
2

Data, laikas ir DateTime

Laiko juostos

Datos / laiko reikšmės priskiriamos šioms kategorijoms:

  • Konvertuoti pagal laiko juostą: šios reikšmės saugomos UTC (universalusis laikas), bet programos vartotojo laiko juosta paveikia, kaip programa rodo šias reikšmes ir kaip programos vartotojas jas nurodo. Pavyzdžiui, tas pats momentas rodomas skirtingai Kanados vartotojui ir Japonijos vartotojui.
  • Nekonvertuoti pagal laiko juostą: programa rodo šias reikšmes taip pat ir programos vartotojas nurodo taip pat, neatsižvelgiant į laiko juostą. Tas pats momentas Kanados vartotojui ir Japonijos vartotojui rodomas vienodai. Programų autoriai, kurie nesitiki, kad jų programos bus naudojamos skirtingose laiko juostose, naudoja šias reikšmes, nes jos apskritai paprastesnės.

Šioje lentelėje pateikiami keli pavyzdžiai:

Datos / laiko tipas Duomenų bazėje saugoma reikšmė Reikšmė, rodoma ir įvesta 7 valandos į vakarus nuo UTC Reikšmė, rodoma ir įvesta 4 valandos į rytus nuo UTC
Konvertuoti pagal laiko juostą Sekmadienis,2019 m.gegužės19
4:00
Šeštadienis,2019 m.gegužės18
21:00
Sekmadienis,2019 m.gegužės19
8:00
Nekonvertuoti pagal laiko juostą Sekmadienis,2019 m.gegužės19
4:00
Sekmadienis,2019 m.gegužės19
4:00
Sekmadienis,2019 m.gegužės19
4:00

Naudojant Konvertuoti pagal laiko juostą datą / laiką, drobės programos naudoja naršyklės arba įrenginio laiko juostą, bet modeliu pagrįstos programos naudoja vartotojo nustatymą, esantį „Dataverse“. Šie parametrai paprastai atitinka, tačiau rezultatai skirsis, jei skirsis šie parametrai.

Naudokite DateAdd ir TimeZoneInformation funkcijas norėdami konvertuoti vietinį laiką į UTC ir atvirkščiai. Šių funkcijų pavyzdžius žr. dokumentų pabaigoje.

Skaitiniai atitikmenys

Drobės programos išlaiko ir apskaičiuoja visas datos / laiko reikšmes – UTC naudojant ir Konvertuoti pagal laiko juostą, ir Nekonvertuoti pagal laiko juostą. Programa pakeis reikšmes, pagrįstas programos vartotojo laiko juosta, kai jos bus rodomos ir kai programos vartotojas jas nurodys.

Kai drobės programa nuskaito Nekonvertuoti pagal laiko juostą reikšmę iš duomenų šaltinio arba parašo tokią reikšmę duomenų šaltinyje, programa automatiškai pakoreguoja reikšmę, kad kompensuotų atsižvelgiant į programos vartotojo laiko juostą. Tada programa traktuoja reikšmę kaip UTC reikšmę, kuri atitinka visas kitas programos datos / laiko reikšmes. Dėl šio kompensavimo originali Nekonvertuoti pagal laiko juostą reikšmė rodoma, kai programa pakoreguoja programos vartotojo laiko juostos UTC reikšmę.

Galite atidžiau stebėti šį veikimą naudodami Value funkciją, kad pasiektumėte esamą skaitinę datos / laiko reikšmę. Ši funkcija pateikia datos / laiko reikšmę kaip milisekundžių skaičių nuo 1970 m. sausio 1 d. 00:00:00.000 UTC.

Kadangi kiekviena datos / laiko reikšmė laikoma UTC, formulė Value( Date( 1970, 1, 1 ) ) nepateiks nulio daugelyje pasaulio dalių, nes Date funkcija pateikia datą UTC. Pavyzdžiui, formulė pateiks 28 800 000 laiko juostoje, kuri kompensuojama UTC atžvilgiu aštuoniomis valandomis. Šis skaičius atitinka aštuonių valandų milisekundžių skaičių.

Grįžimas į mūsų ankstesnį pavyzdį:

Datos / laiko tipas Duomenų bazėje saugoma reikšmė Reikšmė, rodoma ir įvesta 7 valandos į vakarus nuo UTC Value funkcija pateikia
Konvertuoti pagal laiko juostą Sekmadienis,2019 m.gegužės19
4:00
Šeštadienis,2019 m.gegužės18
21:00
1,558,238,400,000
(Sekmadienis,2019 m.gegužės19
4:00 AM UTC)
Nekonvertuoti pagal laiko juostą Sekmadienis,2019 m.gegužės19
4:00
Sekmadienis,2019 m.gegužės19
4:00
1,558,263,600,000
(Sekmadienis,2019 m.gegužės19
11:00 AM UTC)

„Unix“ laiko konvertavimas

„Unix“ laikas parodo sekundžių skaičių nuo 1970 m. sausio 1 d. 00:00:00 UTC. Kadangi drobės programos milisekundes naudoja vietoj sekundžių, galima konvertuoti iš vienų į kitas dauginant arba dalijant iš 1000.

Pavyzdžiui, „Unix“ laikas rodo 2001 m. rugsėjo 9 d. 01:46:40 UTC kaip 1 000 000 000. Jei norite matyti tą datos / laiko reikšmę drobės programoje, padauginkite tą skaičių iš 1000, kad konvertuotumėte į milisekundes, tada naudokite jį Text funkcijoje. Formulė Text( 1000000000 * 1000, DateTimeFormat.UTC ) pateikia eilutę 2001-09-09T01:46:40.000Z.

Tačiau ši funkcija pateikia 2001 m. rugsėjo 8 d., šeštadienis 18:46:40, jei naudojate DateTimeFormat.LongDateTime24 formatą laiko juostoje, kuri -7 valandomis kompensuojama UTC atžvilgiu (7 valandos į vakarus nuo UTC). Šis rezultatas rodo DateTime reikšmę teisingai, atsižvelgiant į vietos laiko juostą.

Norėdami konvertuoti į „Unix“ laiką, padalykite Reikšmės rezultatą iš 1000:
RoundDown( Value( UnixTime ) / 1000, 0 )

Jei reikia „Unix“ laiko Datos reikšmės tolesniems skaičiavimams arba norint parodyti „Power Apps“, naudokite šią formulę:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )

„SQL Server‟

„SQL Server“ yra Datetime, Datetime2 ir kiti datos / laiko duomenų tipai, neapimantys laiko juostos kompensavimo ir nenurodantys buvimo laiko juostos. Drobės programose laikoma, kad šios reikšmės saugomos UTC ir traktuojamos kaip Konvertuoti pagal laiko juostą. Jei reikšmės turi būti nekonvertuojamos pagal laiko juostą, pakoreguokite UTC konvertavimą naudodami TimeZoneOffset funkciją.

Drobės programos naudoja įtrauktą laiko juostos informaciją Datetimeoffset laukuose, kai reikšmė konvertuojama į programos vidinę UTC pateiktį. Kai rašo duomenis, programos visada kaip laiko juostą naudoja UTC (nulinės laiko juostos kompensavimas).

Drobės programos skaito ir rašo Laiko duomenų tipo reikšmes „SQL Server“ kaip teksto eilutes ISO 8601 trukmės formatu. Pavyzdžiui, turite išanalizuoti šį eilutės formatą ir naudoti Time funkciją norėdami konvertuoti teksto eilutę PT2H1M39S į Laiko reikšmę:

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)

Datos ir laiko informacijos sumaišymas

Data, Laikas ir DateTime pavadinimai skirtingi, tačiau visur laikoma ta pati informacija apie datas ir laiką.

Datos reikšmėje gali būti laiko informacija, kuri paprastai yra vidurnaktis. Laiko reikšmėje gali būti datos informacija, kuri paprastai yra 1970 m. sausio 1 d. „Dataverse“ taip pat saugoma laiko informacija su Tik datos lauku, bet pagal numatytuosius nustatymus rodoma tik datos informacija. Panašiai, drobės programos kartais atskiria šiuos duomenų tipus, kad būtų nustatyti numatytieji formatai ir valdikliai.

Nerekomenduojama datos ir laiko reikšmių pridėti bei atimti tiesiogiai, nes laiko juostos ir kitos konversijos gali pateikti klaidinančių rezultatų. Naudokite Value funkciją norėdami konvertuoti datos / laiko reikšmes į milisekundes ir atsižvelgti į programos vartotojo laiko juostą arba naudokite DateAdd ir DateDiff funkcijas norėdami pridėti arba atimti iš vienos iš šių reikšmių.

Pasirinkimai ir Taip /Ne

Pasirinkimai ir dviejų parinkčių duomenų tipai teikia du ar daugiau pasirinkimų, kuriuos programos vartotojas gali pasirinkti. Pavyzdžiui, pasirinkta užsakymo būsena gali pasiūlyti pasirinkimus Naujas, Išsiųstas, Išrašyta, ir Uždaryta. Dviejų parinkčių duomenų tipas siūlo tik du pasirinkimus.

Abu šie duomenų tipai rodo jų žymas teksto eilutės kontekste. Pavyzdžiui, žymos valdiklis rodo vieną iš užsakymo būsenos parinkčių, jei valdiklio teksto ypatybė nustatyta į tą, kurią pasirinkti nurodo formulė. Parinkčių žymos gali būti lokalizuotos programos vartotojams skirtingose vietose.

Kai programos vartotojas pasirenka parinktį ir įrašo pakeitimą, programa duomenis perduoda į duomenų bazę, kuri saugo šiuos duomenis nepriklausomai nuo kalbos. Pasirinkta parinktis perduodama ir saugoma kaip skaičius, o dviejų parinkčių duomenų tipo parinktis perduodama ir saugoma kaip bulio logikos reikšmė.

Žymos skirtos tik rodymo tikslams. Negalima tiesiogiai lyginti naudojant žymas, nes jos priklauso nuo kalbos. Vietoj to kiekvienas pasirinkimas turi išvardijimas, kuris veikia su pagrindiniu skaičiumi arba bulio logikos reikšme. Pavyzdžiui, negalima naudoti šios formulės:

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

Tačiau galite naudoti šią formulę:

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

Visuotinių pasirinkimų (lentelių bendrinimo) parinkčių rinkinio išvardijimo pavadinimas atitinka visuotinio pasirinkimo pavadinimą. Vietinių pasirinkimų (kurie apima lentelę) pavadinime gali būti lentelės pavadinimas. Taip išvengiama konfliktų, jei kelios lentelės turi tokį patį pavadinimą. Pavyzdžiui, klientai Paskyros lentelė gali turėti OrderStatus pasirinkimą, o jo pavadinimas gali būti OrderStatus (Paskyros). Pavadinime yra vienas ar daugiau tarpų ir skliaustų, todėl turite rašyti jį viengubose kabutėse, jei nurodote jį formulėje.

Be to, dviejų parinkčių reikšmės taip pat gali veikti kaip Bulio logikos reikšmės. Pavyzdžiui, dviejų parinkčių reikšmė, pavadinta TaxStatus, gali turėti žymas Apmokestinama ir Neapmokestinama, kurios atitinka teisinga ir klaidinga. Norėdami parodyti galite naudoti šią formulę:

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

Be to, galite naudoti šią lygiavertę formulę:

If( ThisItem.Taxable, ...