Comparteix a través de


Data Types

Nota

Microsoft Power Fx és el nom nou del llenguatge de formules de les aplicacions de llenç. Aquests articles són un treball en curs a mesura que extraiem el llenguatge de les aplicacions de llenç, l'integrem amb altres productes del Microsoft Power Platform i fem que estigui disponible com a codi obert. Comenceu amb la Informació general del Microsoft Power Fxper veure una introducció al llenguatge.

La informació flueix a través d'una aplicació en valors petits i discrets, com ara 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. L'aplicació sap com formatar aquests valors, restringir l'entrada al que és apropiat per a cadascun d'ells 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 proporciona informació sobre els tipus de dades que admeten les aplicacions del llenç. Quan una aplicació es connecta a una font de dades externa, cada tipus de dades de la font s'assigna a un tipus de dades per a les aplicacions del llenç.

Tipus de dades Descripció Exemples
Boolean Un valor de cert o fals. Es pot utilitzar directament a If, Filter i altres funcions sense comparació. true
Color Especificació de color, incloent-hi un canal alfa. Color.Red
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. 123
4.56
Data Una data sense hora, a la zona horària de l'usuari de l'aplicació. Date( 2019, 5, 16 )
Data/Hora Una data amb hora, a la zona horària de l'usuari de l'aplicació. DateTimeValue( "May 16, 2019 1:23:09 PM" )
Decimal Un nombre amb alta precisió, operacions en base 10 i rang limitat. 123
Decimal( "1,2345" )
GUID Un identificador únic a nivell mundial. GUID()
GUID("123e4567-e89b-12d3-a456-426655440000")
Enllaç Cadena de text que conté un enllaç. "https://powerapps.microsoft.com"
Image 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ú. MyImage afegit com a recurs de l'aplicació
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
Fitxer multimèdia Cadena de text de l'URI en un vídeo o enregistrament d'àudio. MyVideo afegit com a recurs de l'aplicació
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
Número o flotador Un nombre amb precisió estàndard, operacions en base 2 i un ampli rang. 123
8.903e121
1.234E200
Opció 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. ThisItem.OrderStatus
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. { Empresa: "Northwind Traders",
Personal: 35,
Sense ànim de lucre: fals }
Referència de 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. First(Comptes).Owner
Table 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. Tabla( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
Text Cadena de text Unicode. "Hola món"
Hora Una hora sense data, a la zona horària de l'usuari de l'aplicació. Time( 11, 23, 45 )
Dues opcions 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. ThisItem.Taxable
Objecte Untyped Un objecte d'un tipus no declarat. L'objecte subjacent podria ser qualsevol tipus existent i es pot convertir en tipus compatibles amb funcions com ara Boolean(), Value(), Table() etc. Per obtenir més informació, vegeu Objecte Untyped i Treballar amb JSON. ParseJSON("{ ""Field"" : 1234 }").Field

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 proporcionen millors experiències per defecte dels 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. Això sovint és més fàcil de treballar i visualitzar la sortida que utilitzar la funció Concatenate o &operator .

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 inserirà NickName si se subministra, o FirstName si no se subministra, 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ó. Fins i tot si un o dos d'aquests valors són espai_en_blanc, el nombre correcte d'espais estarà 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 blank Doe Welcome John Doe!
blank blank Doe Welcome Doe!
blank blank blank 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"

La fórmula anterior dona com a resultat tres línies que es mostren al control Label:

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, com es mostra a continuació:

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

La fórmula anterior genera la mateixa sortida:

Fórmula d'interpolació de cadenes i control d'etiquetes que mostra 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, el logotip de Northwind Traders, que s'anomena nwindlogo, s'ha afegit a una aplicació:

Recurs de vent del nord.

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

Imatge de vent del nord.

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 vent del nord.

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:

Diamants dobles.

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 es necessitin. 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 a través del control de la càmera a la qual es fa referència com a "appres://..." pot tenir una mida i una resolució tan grans com la capacitat de la càmera del dispositiu. 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 l'aplicació s'executarà dins d'aquests límits, proveu escenaris habituals a tots els dispositius en els quals hauria d'executar-se.

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 suporta Float i és el tipus de tots els números. El suport decimal s'afegirà aviat.

Power Fx admet dos tipus de números: Decimal i Float (amb sinònims Nombre iMoneda).

El decimal és el 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 no serà propens a errors d'arrodoniment durant els càlculs. Té un rang prou ampli per a qualsevol necessitat empresarial, fins a 1028 amb fins a 28 dígits de precisió. Decimal és el tipus de dades numèriques predeterminat per a la majoria Power Fx dels hosts, que s'utilitza si simplement s'escriu 2*2.

El flotador és el millor per a càlculs científics. Pot representar nombres en un rang molt més gran, fins a 10308. La precisió està limitada a 15 decimals i les matemàtiques es basen en base 2, de manera que no pot representar amb precisió alguns valors decimals comuns. El flotador també té un major rendiment i es veu afavorit si aquest és un factor i la precisió no és crítica.

Nombres decimals

El tipus de dades decimals utilitza més sovint el tipus de dades decimals .NET. Alguns hosts, com ara Dataverse columnes de fórmules que s'executen a l'SQL Serer, utilitzen el tipus de dades decimals de l'SQL Server.

El decimal fa les matemàtiques de la manera que heu après a l'escola, utilitzant 10 dígits en base. Això és molt important per evitar errors d'arrodoniment de diferències molt petites que es poden acumular quan s'utilitzen matemàtiques en base 2 (com utilitza Float).

El rang va des del 79,228,162,514,264,337,593,543,950,335 positiu fins al 79,228,162,514,264,337,593,543,950,335 negatiu. El separador decimal es pot col·locar en qualsevol lloc dins 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 en 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 53 – 1), ambdós inclosos. 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). Pot ser que us interessi 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 un tipus de dades Text a l'aplicació del llenç. D'aquesta manera, podeu mantenir, visualitzar i introduir aquests valors, així com comparar-los per determinar si són iguals; tanmateix, no podeu fer 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. Si aquest tipus de discrepància provoca problemes, pot ser que us interessi treballar amb aquests valors com a Text, com podríeu fer amb enters grans descrits abans en aquesta secció.

Predeterminats i conversions

Nota

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

La majoria Power Fx dels amfitrions utilitzen el decimal de manera predeterminada. Això impacta:

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

Per treballar amb valors Float, s'utilitza la funció Float . Estenent l'exemple anterior, Float( 1.234 ) convertirem el decimal1.234 en flotador. Float també es pot utilitzar com a reemplaçament de Value per convertir una cadena que conté un nombre de coma flotant, com ara un valor de flotació Float( "1.234" ) , que és necessari si el nombre no es pot representar com undecimal.

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 )

Mescla de tipus numèrics

Els valors flotant i decimal es poden barrejar lliurement. Quan es barregen, els valors decimals es converteixen en valors de flotació a causa del rang més gran. Com que això pot provocar una pèrdua de precisió, és important no barrejar els dos innecessàriament. Atès que Decimal és el tipus de dades literals per defecte i la majoria de funcions numèriques conservaran el tipus, és relativament fàcil evitar passar a Float sense desitjar-ho.

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

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

Si en canvi, el segon operand es canviés a Float llavors tot el càlcul es faria en 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:

  • Hora local de l'usuari: aquests valors s'emmagatzemen en UTC (temps universal coordinat), però el fus horari de l'usuari de l'aplicació afecta la manera com l'aplicació mostra aquests valors i com els usuaris de l'aplicació els especifiquen. 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
Hora local de l'usuari Diumenge, 19demaig,2019
4:00 AM
Dissabte, 18demaig,2019
9:00 PM
Diumenge, 19demaig,2019
8:00 AM
Independent del fus horari 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 anterior:

Tipus data/hora Valor emmagatzemat a la base de dades Valor mostrat i introduït a 7 hores a l'oest de l'UTC La funció Value retorna
Hora local de l'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 del fus horari 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( Value( 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( Date( 1970,1,1 ), UnixTime, Seconds )

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

Data, Hora i DateTime tenen noms diferents, però tots tenen la mateixa informació sobre les dates i els 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, ...