Comparteix a través de


Data Types

La informació flueix Power Fx en valors petits i discrets, molt semblants a les cel·les d'un full de càlcul. Per exemple, les dades d'un camp Natalici i d'un camp Aniversari fluirien com un valor Data que inclou l'any, el mes i el dia. Power Fx sap com formatar aquests valors, restringir l'entrada al que és adequat per a cadascun i compartir els valors amb una base de dades. Els natalicis es diferencien dels aniversaris a la gent, però el sistema els gestiona de la mateixa manera. En aquest cas, Data és un exemple de tipus de dades.

En aquest article es proporcionen detalls sobre els tipus de dades que Power Fx admeten. Quan es Power Fx connecta a una font de dades externa, cada tipus de dades d'aquesta font s'assigna a un tipus de dades en Power Fx.

Tipus de dades Descripció Exemples
Booleà Un valor de cert o fals. Es pot utilitzar directament a If, Filter i altres funcions sense comparació. veritable
Elecció Una opció d'un conjunt d'opcions, amb el suport d'un nombre. Aquest tipus de dades combina una etiqueta de text localitzable amb un valor numèric. L'etiqueta es mostra a l'aplicació i el valor numèric s'emmagatzema i s'utilitza per a les comparacions. Aquest tipus de dades és compatible amb la funció Type si s'utilitza una instància d'un camp Elecció per nom. ThisItem.OrderStatus
Color Especificació de color, incloent-hi un canal alfa. Color.Vermell
ColorValue( "#102030")
RGBA( 255, 128, 0, 0.5 )
Moneda Valor de moneda que s'emmagatzema en un número de coma flotant. Els valors de moneda són el mateix que els valors de número amb opcions de format de moneda. El tipus de dades Moneda no és compatible amb la funció Tipus . 123
4.56
Datar Una data sense hora, a la zona horària de l'usuari de l'aplicació. Data( 2019, 5, 16 )
DataHora Una data amb hora, a la zona horària de l'usuari de l'aplicació. DateTimeValue( "16 de maig, 2019 1:23:09 PM" )
Decimal Un número d'alta precisió, operacions de base 10 i abast limitat. 123
Decimal( "1.2345" )
Flotar Un número amb precisió estàndard, operacions de base 2 i una àmplia gamma. 123
8.903e121
1.234e-200
GUID Un identificador únic global. GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
Enllaç Cadena de text que conté un enllaç. "https://powerapps.microsoft.com"
Imatge Una cadena de text d'un Identificador universal de recurs (URI) a una imatge en format .jpeg, .png, .svg, .gif o qualsevol altre format d'imatge web comú. El tipus de dades Imatge no és compatible amb la funció Type . MyImage afegit com a recurs de l'aplicació
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Mitjans Cadena de text de l'URI en un vídeo o enregistrament d'àudio. El tipus de dades Multimèdia no és compatible amb la funció Type . MyVideo afegit com a recurs de l'aplicació
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Número Un àlies per a Decimal (la majoria dels Power Fx amfitrions) o Float (aplicacions Canvas). Si es pot utilitzar qualsevol de les varietats de nombre per a una situació determinada, utilitzeu Número per a la màxima compatibilitat. 123
0,0123
1e4
Registre Registre de valors de dades. Aquest tipus de dades compostes conté instàncies d'altres tipus de dades que s'enumeren en aquest tema. Més informació: Treballar amb taules. Aquest tipus de dades és compatible amb la funció Tipus si s'utilitza una instància d' Registre . { Empresa: "Northwind Traders",
Personal: 35,
Sense ànim de lucre: fals }
Referència del registre Una referència a un registre d'una taula. Aquestes referències s'utilitzen sovint amb les cerques polimòrfiques. Més informació: Treballar amb referències. Aquest tipus de dades no és compatible amb la funció Tipus . Primer(Comptes).Propietari
Taula Taula de registres. Tots els registres han de tenir els mateixos noms per als seus camps amb els mateixos tipus de dades i els camps omesos es tracten en blanc. Aquest tipus de dades compostes conté instàncies d'altres tipus de dades que s'enumeren en aquest tema. Més informació: Treballar amb taules. Aquest tipus de dades és compatible amb la funció Tipus si s'utilitza una instància d'una Taula . Taula( { Noms: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Text Cadena de text Unicode. "Hola, món"
Temps Una hora sense data, a la zona horària de l'usuari de l'aplicació. Temps (11, 23, 45)
Sense escriure Un objecte d'un tipus no declarat. L'objecte subjacent podria ser qualsevol tipus existent i es pot convertir en tipus compatibles mitjançant funcions com ara Boolean(), Value(), Taula(), etc. Per a més informació, vegeu objecte sense tipus i Treballar amb JSON. ParseJSON("{ ""Camp"": 1234 }"). Camp
Buit Utilitzat només per les funcions definides per l'usuari de comportament, indica que una funció no té un tipus de retorn. Aquest tipus de dades no és compatible amb la funció Tipus . Tot i que una funció no té un tipus o valor de retorn, sempre pot retornar un error. Hola(): Void = { Notificar( "Hola!" ) }
Sí/No Una opció d'un conjunt de dues opcions, amb el suport d'un valor booleà. Aquest tipus de dades combina una etiqueta de text localitzable amb un valor booleà. L'etiqueta es mostra a l'aplicació i el valor booleà s'emmagatzema i s'utilitza per a les comparacions. Aquest tipus de dades és compatible amb la funció Tipus si s'utilitza una instància d'un camp Sí/No per nom. Aquest article.Impost

Molts d'aquests tipus de dades són semblants i tenen la mateixa representació subjacent, com ara un camp Enllaç que es tracta com a Text. Els tipus de dades addicionals ofereixen millors experiències predeterminades en formularis i altres controls.

En blanc

Tots els tipus de dades poden tenir un valor buit (és a dir, cap valor). El terme "nul" s'utilitza sovint a les bases de dades d'aquest concepte.

Utilitzeu la funció Blank amb la funció Set o Patch per definir una variable o un camp en blanc. Per exemple, Set( x, Blank() ) suprimeix qualsevol valor de la variable x global.

Proveu un valor en blanc mitjançant la funció IsBlank. Substituïu els valors en blanc possibles amb valors que no siguin en blanc mitjançant la funció Coalesce.

Com que tots els tipus de dades admeten en blanc, els tipus de dades Booleà i Dues opcions tenen en efecte en tres valors possibles.

Els quatre d'aquests tipus de dades es basen en una cadena de text Unicode.

Text incrustat

Les cadenes de text incrustades d'una fórmula s'escriuen entre cometes dobles. Utilitzeu dues cometes dobles per representar una sola cometa doble a la cadena de text. Per exemple, utilitzar la fórmula següent a la propietat OnSelect del control Botó:

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

resulta en un bàner quan es prem el botó, on s'ometen les primeres i les darreres cometes dobles (ja que delimiten la cadena de text) i les cometes dobles repetides al voltant de Hola món! se substitueixen per una cometa doble simple:

notificació emergent amb el missatge de la Jane

Les cometes simples s'utilitzen per als noms d'identificador que contenen caràcters especials i no tenen cap significat especial dins d'una cadena de text.

Interpolació de cadenes

Utilitzeu la interpolació de cadenes per incrustar fórmules dins d'una cadena de text. Sovint és més fàcil treballar amb aquest enfocament i visualitzar la sortida que utilitzar la funció Concatenar o l'operador & .

Prefixeu la cadena de text amb un signe de dòlar $ i tanqueu la fórmula que s'incrustarà amb claus { }. Per incloure una clau a la cadena de text, utilitzeu claus repetides: {{ o }}. La interpolació de cadenes es pot utilitzar a qualsevol lloc on es pugui utilitzar una cadena de text estàndard.

Per exemple, considereu aquesta fórmula amb variables globals Pomes establert en 3 i Plàtans establert en 4:

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

Aquesta fórmula torna la cadena de text Tenim 3 pomes, 4 plàtans, amb un total de 7 fruites. Les variables Pomes i Plàtans s'insereixen en el text substituint les claus, juntament amb el resultat de la fórmula matemàtica Pomes+Plàtans. Els espais i altres caràcters que envolten les claus es conserven tal com són.

Les fórmules incrustades poden incloure qualsevol funció o operador. Tot el que cal és que el resultat de la fórmula es pugui convertir en una cadena de text. Per exemple, aquesta fórmula insereix NickName si es proporciona, o el FirstName si no, en una salutació:

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

Si NickName s'estableix en "Joe", aquesta fórmula produirà la cadena de text Benvingut Joe, encantat de conèixer-te! Però si NickName és un espai_en_blanc i FirstName es "Joseph", aleshores aquesta fórmula genera Estimat Joseph, és un plaer conèixer-te!.

La interpolació de cadenes pot incloure cadenes de text estàndard a la fórmula incrustada. Per exemple, si no se subministra NickName ni FirstName, encara podríem proporcionar "Amic" com a substitut:

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

Les interpolacions de cadena es poden fins i tot imbricar. Considereu aquest exemple, on els noms First, Middle i Last es combinen en una salutació. Encara que un o dos d'aquests valors estiguin en blanc, es manté el nombre correcte d'espais entre les parts del nom. Si no es proporciona cap de les peces, la interpolació de la cadena interna es reduirà a una cadena buida i se substituirà per la funció Coalesce per "Amic".

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Nom Mig Última Resultat
John Qunicy Doe Welcome John Quincy Doe!
John en blanc Doe Welcome John Doe!
en blanc en blanc Doe Welcome Doe!
en blanc en blanc en blanc Welcome Friend!

Noves línies

Les cadenes de text incrustades poden contenir salts de línia. Per exemple, considereu establir la propietat Text d'un control Label al següent:

"Line 1
Line 2
Line 3"

Aquesta fórmula dóna com a resultat tres línies que es mostren al control de l'etiqueta:

Control de cadena de text i etiqueta incrustat que mostra tres línies amb la línia 1, la línia 2 i la línia 3.

Les noves línies també són compatibles amb la interpolació de cadenes:

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

El que dóna lloc a la mateixa sortida:

Fórmula d'interpolació de cadenes i control d'etiquetes que mostren tres línies amb la línia 1, la línia 2 i la línia 3.

Recursos d'imatge i multimèdia

A través del menú Fitxer, podeu afegir fitxers d'imatge, vídeo i àudio com a recursos d'aplicació. El nom del fitxer importat es converteix en el nom del recurs a l'aplicació. En aquest gràfic, s'ha afegit a l'aplicació el logotip de Northwind Traders, que s'anomena nwindlogo:

Recurs de tramuntana.

Per utilitzar aquest recurs en una aplicació, especifiqueu-lo a la propietat Imatge d'un control Imatge:

Imatge de tramuntana.

URI per a imatges i altres continguts multimèdia

Podeu aprofundir una mica més en aquest últim exemple configurant la propietat Text d'un control Etiqueta a nwindlogo. L'etiqueta mostra una cadena de text:

Text de tramuntana.

Les aplicacions del llenç fan referència a cada imatge o a un altre fitxer multimèdia, tant si es troba al núvol com si s'afegeix com a recurs de l'aplicació, mitjançant una cadena de text de l'URI.

Per exemple, la propietat Image d'un control d'imatge no només accepta recursos de l'aplicació, sinó també enllaços a imatges del web, com ara "https://northwindtraders.com/logo.jpg". La propietat també accepta imatges en línia que utilitzen l'esquema URI de dades, com en aquest exemple:

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

L'URI mostra una versió en escala de dos diamants de color porpra:

Dobles diamants.

Podeu mostrar la imatge més recent capturada en un control Càmera si definiu la propietat Imatge d'un control d'imatge a la propietat Photo del control de càmera. L'aplicació té la imatge en memòria i la propietat Photo del control de la càmera torna una referència de l'URI a la imatge. Per exemple, podeu capturar una imatge i la propietat Photo de la càmera podria retornar "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".

Utilitzeu un URI per fer referència a una imatge o a un altre fitxer multimèdia que s'emmagatzema en una base de dades. D'aquesta manera, l'aplicació no recupera les dades reals fins que no calgui. Per exemple, un fitxer adjunt d'una taula del Microsoft Dataverse podria tornar "appres://datasources/Contacts/table/..." Com a l'exemple de la càmera, podeu visualitzar aquesta imatge ajustant la propietat Imatge d'un control d'imatge a aquesta referència, que recupera les dades binàries.

Quan deseu un tipus de dades multimèdia, com ara una imatge, a una base de dades, l'aplicació envia les dades d'imatge o de contingut multimèdia, no la referència de l'URI.

Límits de mida

Com les cadenes de text i els URI, aquests tipus de dades no tenen límit de longitud.

Les dades binàries a les quals fan referència aquests tipus de dades tampoc no tenen un límit de mida predeterminat. Per exemple, una imatge capturada mitjançant el control de la càmera que es fa referència com a "apres://..." pot ser tan gran i d'alta resolució com la càmera del dispositiu pot reunir. La resolució, la taxa de fotogrames i altres atributs dels fitxers multimèdia no estan limitades pel tipus de dades, però els controls específics per a la reproducció i la captura de contingut poden tenir les seves pròpies limitacions.

No obstant, totes les mides de dades estan subjectes a la quantitat de memòria disponible a l'aplicació. Els navegadors que s'executen en un ordinador d'escriptori solen admetre més de 100 megabytes de dades. No obstant, la quantitat de memòria disponible en un dispositiu com ara un telèfon pot ser una mica més baixa, normalment en l'interval de 30-70 megabytes. Per determinar si la vostra aplicació s'executa dins d'aquests límits, proveu els escenaris habituals a tots els dispositius en què s'hauria d'executar.

Com a millor pràctica, cal mantenir les dades en memòria només sempre que calgui. Carregueu imatges a una base de dades tan bon punt pugueu; baixeu les imatges només quan l'usuari de l'aplicació les sol·liciti.

Números

Nota

Power Apps Avui només admet Float i és el tipus de tots els números. El suport decimal s'afegirà aviat.

Power Fx admet dos tipus de nombres: Decimal i Float (amb sinònims Nombre i Moneda).

El decimal és millor per a la majoria de càlculs empresarials. Pot representar amb precisió nombres en base 10, el que significa que 0.1 es pot representar exactament i evitarà errors d'arrodoniment durant els càlculs. Té un abast prou gran per a qualsevol necessitat empresarial, fins a 1028 amb fins a 28 dígits de precisió. El decimal és el tipus de dades numèrics predeterminat per a la majoria dels Power Fx amfitrions, que s'utilitza si només s'escriu 2*2.

Float és millor per als càlculs científics. Pot representar nombres en un rang més gran, fins a 10308. La precisió es limita a 15 decimals i les matemàtiques es basen en la base 2, de manera que no poden representar amb precisió alguns valors decimals habituals. Float també té un rendiment més alt i es veu afavorit si aquest és un factor i la precisió no és crítica.

Nombres decimals

El tipus de dades Decimal fa servir més sovint el tipus de dades decimal .NET. Alguns amfitrions, com ara Dataverse columnes de fórmules que s'executen a SQL Serer, utilitzen el tipus de dades decimal d'SQL Server.

Decimal fa les matemàtiques com s'ha après a l'escola, utilitzant els dígits de base 10, important per evitar errors d'arrodoniment de diferències molt petites que es poden acumular quan s'utilitzen les matemàtiques de base 2 (tal com fa servir Flota).

El rang va des de 79,228,162,514,264,337,593,543,950,335 positiu fins a 79,228,162,514,264,337,593,543,950,335 negatiu. El separador decimal es pot col·locar a qualsevol lloc d'aquests números, proporcionant fins a 28 dígits de precisió, i encara es pot representar amb precisió. Per exemple, 79,228,162,514,264.337593543950335 es ​​pot representar exactament, igual que 7.9228162514264337593543950335.

Nombres de coma flotant

El tipus de dades Float , també conegut com a Número o Moneda, utilitza l' estàndard de coma flotant de doble precisió IEEE 754. Aquesta norma proporciona un interval molt ampli de números en què treballar, des de –1,79769 x 10308 fins a 1,79769 x 10308. El valor més petit que es pot representar és 5 x 10–324.

Float pot representar exactament nombres enters (o enters) entre –9,007,199,254,740,991 (–(253 – 1)) i 9,007,199,254,740,991 (2 a63>53 – 1), inclòs. Aquest interval és major que els tipus de dades d'enters de 32 bits (o 4 bytes) que s'utilitzen habitualment en bases de dades. No obstant, les aplicacions del llenç no poden representar els tipus de dades d'enters de 64 bits (o de 8 bytes). És possible que vulgueu emmagatzemar el número en un camp de text o utilitzar una columna calculada per fer una còpia del número en un camp de text, de manera que s'assigni a dades Text escriviu l'aplicació canvas. D'aquesta manera, podeu retenir, visualitzar i introduir aquests valors i comparar-los per determinar si són iguals; Tanmateix, no podeu fer-hi càlculs numèrics en aquest formulari.

L'aritmètica de punt flotant és aproximada, de manera que de vegades pot donar resultats inesperats amb molts exemples documentats. Potser espereu que la fórmula 55 / 100 * 100 retorni exactament 55 i que (55 / 100 * 100) - 55 retorni exactament zero. No obstant això, l'última formula retorna 7,1054 x 10–15, que és molt petit però no zero. Aquesta diferència minúscula normalment no causa cap problema i l'aplicació l'arrodoneix en mostrar el resultat. No obstant, les petites diferències poden acumular-se en càlculs posteriors i semblar donar una resposta incorrecta.

Els sistemes de base de dades sovint emmagatzemen monedes i realitzen càlculs mitjançant matemàtica decimal, que ofereix un interval més petit però un major control sobre la precisió. Per defecte, les aplicacions del llenç assignen les monedes dins i fora de valors de coma flotant; per tant, pot ser que el resultat sigui diferent dels càlculs que es facin en un tipus de dades decimal natiu. En funció de les necessitats de precisió de la vostra aplicació, és possible que vulgueu treballar amb aquests valors com a Text, tal com s'ha descrit anteriorment per a nombres enters grans.

Valors per defecte i conversions

Nota

Power Apps Avui només admet Float i és el tipus de tots els números. El suport decimal s'afegirà aviat.

La majoria dels Power Fx amfitrions utilitzen Decimal per defecte. Tenir aquest valor predeterminat significa:

  • Nombres literals en fórmules. El nombre 1.234 s'interpreta com un valor decimal . Per exemple, la fórmula 1.234 * 2 interpreta el i 1.234 com 2 a decimal i retorna un resultat decimal .
  • Funció de valor. Value( "1.234" ) retorna un valor decimal . Per exemple, a la fórmula Value( "1.234" ) * 2, la funció Valor interpreta el contingut de la cadena "1.234" de text com un decimal.

Per treballar amb valors Float , s'utilitza la funció Float . Ampliant el nostre exemple, Float( 1.234 ) es converteix el decimal1.234 en flotant. Float també es pot utilitzar com a reemplaçament de Value per convertir una cadena que conté un número de coma flotant com Float( "1.234" ) ara un valor Float , que és necessari si el nombre no es pot representar com a decimal.

En resum:

Ús Decimal Flotar
Nombres literals en fórmules 1.234 Float( 1.234 )
Float( "1.234" )
Conversió de cadena de text Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
Conversió entre tipus numèrics Decimal( float ) Float( decimal )
Conversió a cadena de text Text( decimal ) Text( float )

Barreja de tipus numèrics

Els valors flotants i decimals es poden barrejar lliurement. Quan es barregen, els valors decimals es converteixen en valors flotants a causa de l'interval més gran. Com que aquesta conversió pot provocar una pèrdua de precisió, és important no barrejar els dos innecessàriament. Com que Decimal és el tipus de dades literal predeterminat i la majoria de les funcions numèriques conserven el tipus, és relativament fàcil evitar moure's a Float sense desitjar-ho.

Per exemple, considereu el càlcul següent després d'instal pac power-fx repl ·lar la Power Platform CLI. Com que els dos números són decimals, el càlcul es fa en decimal i el resultat conserva una precisió completa:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Si en canvi, el segon operand es canviés a Float , tot el càlcul es faria a Float i es perdria la petita part fraccionària:

>> 1.0000000000000000000000000001 * Float(2)
2

Data, Hora i DateTime

Fusos horaris

Els valors de data/hora es classifiquen en aquestes categories:

  • Local de l'usuari: aquests valors s'emmagatzemen a UTC (temps universal coordinat), però la zona horària de l'usuari de l'aplicació afecta com l'aplicació mostra aquests valors i com l'usuari de l'aplicació els especifica. Per exemple, el mateix moment apareix de manera diferent a un usuari del Canadà que a un usuari del Japó.
  • Independent de la zona horària: l'aplicació mostra aquests valors de la mateixa manera i l'usuari de l'aplicació els especifica de la mateixa manera, independentment de la zona horària. El mateix moment apareix igual a un usuari del Canadà i a un usuari del Japó. Els creadors de l'aplicació que no esperen que les seves aplicacions s'executin en zones horàries diferents utilitzen aquests valors perquè són més simples en general.

En aquesta taula es mostren alguns exemples:

Tipus data/hora Valor emmagatzemat a la base de dades Valor mostrat i introduït a 7 hores a l'oest de l'UTC Valor mostrat i introduït a 4 hores a l'est de l'UTC
Local d'usuari Diumenge, 19demaig,2019
4:00 AM
Dissabte, 18demaig,2019
9:00 PM
Diumenge, 19demaig,2019
8:00 AM
Independent de la zona horària Diumenge, 19demaig,2019
4:00 AM
Diumenge, 19demaig,2019
4:00 AM
Diumenge, 19demaig,2019
4:00 AM

Per a les dades i hores Hora local de l'usuari, les aplicacions del llenç utilitzen la zona horària del navegador o dispositiu, però les aplicacions basades en models utilitzen la configuració de l'usuari al Dataverse. Normalment, aquestes opcions coincideixen, però els resultats són diferents si aquesta configuració és diferent.

Utilitzeu les funcions DateAdd i TimeZoneInformation per convertir l'hora local en UTC i viceversa. Vegeu els exemples al final de la documentació d'aquestes funcions.

Equivalents numèrics

Les aplicacions del llenç emmagatzemen i calculen tots els valors de data/hora, tant Hora local de l'usuari o Independent del fus horari, en UTC. L'aplicació tradueix els valors basats en la zona horària de l'usuari de l'aplicació per mostrar-los i quan l'usuari de l'aplicació els especifica.

Quan una aplicació del llenç llegeix un valor Independent del fus horari d'una font de dades o escriu un valor a una font de dades, l'aplicació ajusta automàticament el valor per compensar la zona horària de l'usuari de l'aplicació. A continuació, l'aplicació tracta el valor com un valor UTC, coherent amb tots els altres valors de data/hora a l'aplicació. A causa d'aquesta compensació, el valor Independent del fus horari original es mostra quan l'aplicació ajusta el valor UTC per al fus horari de l'usuari de l'aplicació.

Podeu observar aquest comportament amb més deteniment utilitzant la funció Value per accedir al valor numèric subjacent per a un valor de data/hora. Aquesta funció retorna el valor de data/hora com a nombre de mil·lisegons des de l'1 de gener de 1970 00:00:00.000 UTC.

Com que cada valor de data i hora s'emmagatzema en UTC, la fórmula Value( Date( 1970, 1, 1 ) ) no retornarà zero a la major part del món perquè la funció Date torna una data en UTC. Per exemple, la fórmula retornarà 28.800.000 en una zona horària que difereix de l'UTC en vuit hores. Aquest nombre reflecteix el nombre de mil·lisegons en vuit hores.

Tornant al nostre exemple:

Tipus data/hora Valor emmagatzemat a la base de dades Valor mostrat i introduït a 7 hores a l'oest de l'UTC Retorn de la funció de valor
Local d'usuari Diumenge, 19demaig,2019
4:00 AM
Dissabte, 18demaig,2019
9:00 PM
1,558,238,400,000
(Diumenge, 19demaig,2019
4:00 AM UTC)
Independent de la zona horària Diumenge, 19demaig,2019
4:00 AM
Diumenge, 19demaig,2019
4:00 AM
1,558,263,600,000
(Diumenge, 19demaig,2019
11:00 AM UTC)

Convertir hores de l'Unix

Les hores de l'Unix reflecteixen el nombre de segons des de l'1 de gener de 1970 00:00:00 UTC. Com que les aplicacions del llenç utilitzen mil·lisegons en comptes de segons, podeu convertir entre els dos multiplicant o dividint per 1.000.

Per exemple, l'hora de l'Unix mostra el 9 de setembre de 2001, a la 01:46:40 UTC com a 1.000.000.000. Per mostrar aquest valor de data/hora en una aplicació del llenç, multipliqueu-lo per 1.000 per convertir-lo en mil·lisegons i, a continuació, utilitzeu-lo en una funció Text. La fórmula Text( 1000000000 * 1000, DateTimeFormat.UTC ) retorna la cadena 2001-09-09T01:46:40.000Z.

No obstant això, aquesta funció retorna Dissabte, 8 de setembre de 2001 18:46:40 si utilitzeu el format DateTimeFormat.LongDateTime24 en una zona horària amb -7 hores de diferència des de l'UTC (7 hores a l'oest de l'UTC). Aquest resultat mostra correctament el valor DateTime que es basa en la zona horària local.

Per convertir-la en una hora de l'Unix, dividiu el resultat de Value entre 1.000:
RoundDown( Valor( UnixTime ) / 1000, 0 )

Si necessiteu l'hora de l'Unix en un valor Data per continuar els càlculs o per mostrar-la al Power Apps, utilitzeu aquesta fórmula:
DateAdd( Data( 1970,1,1 ), UnixTime, Segons )

SQL Server

L'SQL Server té Datetime, Datetime2 i altres tipus de dades de data/hora que no inclouen un desplaçament de zona horària i no indiquen en quina zona horària es troben. Les aplicacions del llenç assumeixen que aquests valors que s'emmagatzemen en UTC i els tracten com a Hora local de l'usuari. Si els valors estan destinats a ser independents del fus horari, corregiu les traduccions a l'UTC mitjançant la funció TimeZoneOffset.

Les aplicacions del llenç utilitzen la informació sobre la zona horària dels camps Datetimeoffset per convertir un valor en la representació interna en UTC de l'aplicació. Les aplicacions sempre utilitzen l'UTC com a fus horari (diferència de fus horari zero) quan escriuen dades.

Les aplicacions del llenç llegeixen i escriuen els valors del tipus de dades Hora a l'SQL Server com a cadenes de text en el format de duració ISO 8601. Per exemple, heu d'analitzar aquest format de cadena i utilitzar la funció Time per convertir la cadena de text "PT2H1M39S" a un valor Hora:

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)

Mesclar informació de data i hora

Date, Time i DateTime tenen noms diferents, però tots contenen la mateixa informació sobre dates i hores.

Un valor Data pot incloure informació d'hora, la qual cosa sol ser la mitjanit. Un valor Hora pot incloure informació de data, que sol ser l'1 de gener de 1970. El Dataverse també emmagatzema informació d'hora amb un camp Només data però només mostra la informació de la data per defecte. De manera semblant, les aplicacions del llenç distingeixen de vegades entre aquests tipus de dades per determinar els formats i els controls per defecte.

Sumar i restar directament valors de data i hora no és recomanable perquè la zona horària i altres conversions podrien generar resultats que poden confondre. Utilitzeu la funció Value per convertir els valors de data/hora en mil·lisegons i tingueu en compte el fus horari de l'usuari de l'aplicació, o bé utilitzeu les funcions DateAdd i DateDiff per sumar o restar d'un d'aquests valors.

Eleccions i Sí/No

Les eleccions i els tipus de dades de dues opcions proporcionen dues o més eleccions perquè un usuari de l'aplicació les seleccioni. Per exemple, una opció Estat de la comanda pot oferir les opcions Nova, Enviada, Facturada i Tancada. El tipus de dades de dues opcions només ofereix dues opcions.

Tots dos tipus de dades mostren les seves etiquetes en un context de cadena de text. Per exemple, un control d'etiqueta mostra una de les opcions d'estat de comanda si la propietat Text del control es defineix com una fórmula que fa referència a aquesta opció. Pot ser que les etiquetes d'opcions es localitzin per a usuaris d'aplicacions en diferents ubicacions.

Quan un usuari de l'aplicació selecciona una opció i desa aquest canvi, l'aplicació transmet les dades a la base de dades, que emmagatzema dades en una representació que és independent de la llengua. Una opció en una elecció es transmet i s'emmagatzema com a nombre, i una opció en un tipus de dades de dues opcions es transmet i s'emmagatzema com a valor booleà.

Les etiquetes són només per a finalitats de visualització. No podeu dur a terme comparacions directes amb les etiquetes perquè són específiques d'un idioma. En comptes d'això, cada elecció té una enumeració que funciona amb el nombre subjacent o el valor booleà. Per exemple, no podeu utilitzar aquesta fórmula:

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

Però podeu utilitzar aquesta fórmula:

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

Per a les opcions globals (que comparteixen les taules), el nom de l'enumeració del conjunt d'opcions coincideix amb el nom de l'elecció global. Per a les eleccions locals (que centren l'àmbit en una taula), el nom podria contenir el nom de la taula. Aquest comportament evita els conflictes si diverses taules tenen eleccions que tenen el mateix nom. Per exemple, la taula Comptes pot tenir una elecció OrderStatus i el seu nom podria ser OrderStatus (Comptes). Aquest nom conté un o diversos espais i parèntesis, de manera que heu d'envoltar-lo amb cometes simples si hi feu referència en una fórmula.

A més, els valors de dues opcions també poden comportar-se com a valors booleans. Per exemple, un valor de dues opcions que s'anomeni TaxStatus podria tenir les etiquetes Taxable i No taxable, que es corresponen amb cert i fals respectivament. Per demostrar-ho, podeu utilitzar aquesta fórmula:

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

També podeu utilitzar aquesta fórmula equivalent:

If( ThisItem.Taxable, ...