Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
La informació flueix a través del Power Fx en valors petits i discrets, com les cel·les d'un full de càlcul. Per exemple, les dades d'un camp d'aniversari i d'un camp d'aniversari flueixen com un valor de data que inclou l'any, el mes i el dia. El Power Fx formata aquests valors, restringeix l'entrada al que és adequat per a cadascun i comparteix els valors amb una base de dades. Els aniversaris i aniversaris poden diferir segons les persones, però el sistema els gestiona de la mateixa manera. En aquest cas, Data és un exemple de tipus de dades.
En aquest article s'explica cada tipus de dades del Power Fx, com funcionen i com s'assignen a fonts de dades externes.
| Tipus de dades | Descripció | Exemples |
|---|---|---|
| Booleà | Un valor de cert o fals. Podeu utilitzar-lo directament a Si,Filtre 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. La funció Type admet aquest tipus de dades si utilitzeu una instància d'un camp Choice per nom. | ThisItem.OrderStatus |
| Color | Especificació de color que inclou un canal alfa. |
Color.Vermell ColorValue( "#102030") RGBA( 255, 128, 0, 0.5 ) |
| Moneda | Valor de moneda emmagatzemat en un nombre de coma flotant. Els valors de moneda són el mateix que els valors de número amb opcions de format de moneda. La funció Type no admet el tipus de dades Currency . |
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 una hora, a la zona horària de l'usuari de l'aplicació. | DateTimeValue( "16 de maig, 2019 1:23:09 PM" ) |
| Decimal | Un nombre amb alta precisió, operacions de base 10 i un abast limitat. |
123 Decimal( "1.2345") |
| Dinàmica (abans UntypedObject) | El tipus del valor és dinàmic i pot variar en temps d'execució. Un valor dinàmic pot ser qualsevol tipus existent i es pot convertir en tipus compatibles utilitzant funcions com Boolean(),Value(),Table(), etc. Per obtenir més informació, vegeu Valors dinàmics i Treballar amb JSON. | ParseJSON ("{ ""Field"" : 1234 }"). Camp |
| 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'identificador de recurs universal (URI) a una imatge en .jpeg, .png, .svg, .gifo un altre format d'imatge web comú. La funció Type no admet el tipus de dades Image . |
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. La funció Type no admet el tipus de dades Media . |
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 Power Fx d'amfitrions) o Float (aplicacions de llenç). Si podeu utilitzar qualsevol varietat de número per a una situació, utilitzeu Number per a la màxima compatibilitat. |
123 0.0123 1e4 |
| Rècord | Registre de valors de dades. Aquest tipus de dades compost conté instàncies d'altres tipus de dades enumerats en aquest article. Per obtenir més informació, vegeu Treballar amb taules. La funció Type admet aquest tipus de dades si utilitzeu una instància d'un Record. |
{ Companyia: "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 cerques polimòrfiques. Per obtenir més informació, vegeu Treballar amb referències. La funció Type no admet aquest tipus de dades. | Primer(Comptes). Propietari |
| Taula | Taula de registres. Tots els registres han de tenir els mateixos noms de camp i tipus de dades, i els camps omesos es tracten com a en blanc. Aquest tipus de dades compost conté instàncies d'altres tipus de dades enumerats en aquest article. Per obtenir més informació, vegeu Treballar amb taules. La funció Type admet aquest tipus de dades si utilitzeu una instància d'una Table. |
Taula( { Nom: "Sidney", Cognoms: "Higa" }, { Nom: "Nancy", Cognoms: "Anderson" } ) |
| SMS | Cadena de text Unicode. | "Hola, món" |
| Hora | Una hora sense data, a la zona horària de l'usuari de l'aplicació. | Temps( 11, 23, 45 ) |
| Buit | Utilitzat només per funcions definides per l'usuari de comportament, indica que una funció no té un tipus de retorn. La funció Type no admet aquest tipus de dades. Tot i que una funció no té un tipus o valor de retorn, sempre pot retornar un error. | Hi(): Void = { Notifica( "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. La funció Type admet aquest tipus de dades si utilitzeu una instància d'un camp Sí/No per nom. | ThisItem.Subjecte a impostos |
Molts d'aquests tipus de dades són similars i tenen la mateixa representació subjacent, com ara un camp d'hiperenllaç que es tracta com a text. Els tipus de dades addicionals ofereixen millors experiències per defecte en formularis i altres controls.
En blanc
Tots els tipus de dades poden tenir un valor en blanc (sense 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() ) elimina el valor de la variable global x.
Proveu si hi ha un valor en blanc amb 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 espais en blanc, els tipus de dades de l'opcióBoolean i Two tenen tres valors possibles.
Text, enllaç, imatge i multimèdia
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!""" )
Dóna com a resultat un bàner quan es prem el botó, on s'ometen la primera i l'última cometes dobles (ja que delimiten la cadena de text) i les cometes dobles repetides al voltant de Hello, World! es substitueixen per una cometa doble simple:
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. Aquest enfocament sovint és més fàcil de treballar i visualitzar la sortida que utilitzar la funció Concatenate 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 es requereix és que el resultat de la fórmula es pugui forçar a 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ó. Fins i tot si un o dos d'aquests valors estan 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 | Buit | Doe | Welcome John Doe! |
| Buit | Buit | Doe | Welcome Doe! |
| Buit | Buit | Buit | 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 d'etiqueta:
Les noves línies també s'admeten amb la interpolació de cadenes:
$"Line {1}
Line {1+1}
Line {1+1+1}"
El que dóna com a resultat la mateixa sortida:
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:
Per utilitzar aquest recurs en una aplicació, especifiqueu-lo a la propietat Imatge d'un control Imatge:
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:
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:
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 a través del control de la càmera a la qual es fa referència com a "appres://..." pot ser tan gran i d'alta resolució com 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'executa dins d'aquests límits, prova escenaris comuns en tots els dispositius en què s'ha 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
El Power Apps només admet Float avui en dia i és el tipus de tots els números. Aviat s'afegirà suport decimal .
Power Fx admet dos tipus de números: decimal i flotant (amb sinònims nombre i moneda).
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 evitarà errors d'arrodoniment durant els càlculs. Té un rang prou gran 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 d'equips, utilitzat si simplement s'escriu 2*2.
El flotador és el millor per a càlculs científics. Pot representar nombres en un rang més gran, fins a 10308. La precisió està limitada a 15 decimals i les matemàtiques es basen en la base 2, de manera que no poden representar amb precisió alguns valors decimals comuns. El flotador també té un rendiment més alt i s'afavoreix si això és un factor i la precisió no és crítica.
Nombres decimals
El tipus de dades Decimal utilitza amb més freqüència el tipus de dades decimal .NET. Alguns equips, com ara les columnes de fórmules del Dataverse que s'executen a l'SQL Server, utilitzen el tipus de dades decimal de l'SQL Server.
Decimal fa matemàtiques de la manera que vau aprendre a l'escola, utilitzant dígits de base 10, important per evitar errors d'arrodoniment de diferències molt petites que es poden acumular quan s'utilitzen matemàtiques de base 2 (com les utilitzades per Float).
El rang és de 79,228,162,514,264,337,593,543,950,335 positiu a 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 de coma flotant
El tipus de dades Float , també conegut com a Number o Currency, 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.
El flotant pot representar exactament nombres enters (o enters) entre –9,007,199,254,740,991 (–(253 – 1)) i 9,007,199,254,740,991 (253 – 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). É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 un tipus de dades de text de l'aplicació de llenç. 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. Depenent de les necessitats de precisió de l'aplicació, és possible que vulgueu treballar amb aquests valors com a text, tal com s'ha descrit anteriorment per a enters grans.
Valors predeterminats i conversions
Nota
El Power Apps només admet Float avui en dia i és el tipus de tots els números. Aviat s'afegirà suport decimal .
La majoria d'equips Power Fx utilitzen Decimal per defecte. Tenir aquest valor predeterminat significa:
- Nombres literals en fórmules. El nombre
1.234s'interpreta com un valor decimal . Per exemple, la fórmula1.234 * 2interpreta el i1.234com2a decimal i retorna un resultat decimal . - Funció de valor.
Value( "1.234" )retorna un valor decimal . Per exemple, a la fórmulaValue( "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 04:00 |
Dissabte, 18demaig,2019 21:00 |
Diumenge, 19demaig,2019 08:00 |
| Independent de la zona horària | Diumenge, 19demaig,2019 04:00 |
Diumenge, 19demaig,2019 04:00 |
Diumenge, 19demaig,2019 04:00 |
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. Aquesta configuració normalment coincideix, però els resultats difereixen si són diferents.
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 04:00 |
Dissabte, 18demaig,2019 21:00 |
1,558,238,400,000 (Diumenge, 19demaig,2019 4:00 AM UTC) |
| Independent de la zona horària | Diumenge, 19demaig,2019 04:00 |
Diumenge, 19demaig,2019 04:00 |
1,558,263,600,000 (Diumenge, 19demaig,2019 11:00 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 opcions i els tipus de dades de dues opcions ofereixen dues o més opcions 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 com a 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ó. Les etiquetes d'opció es poden localitzar per als usuaris de l'aplicació en diferents ubicacions.
Quan un usuari de l'aplicació selecciona una opció i desa el canvi, l'aplicació envia les dades a la base de dades, que les emmagatzema d'una manera independent de l'idioma. Una opció d'una opció s'envia i s'emmagatzema com a número, i una opció d'un tipus de dades de dues opcions s'envia i s'emmagatzema com a valor booleà.
Les etiquetes són només per a visualització. No podeu comparar les etiquetes directament 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 opcions locals (que tenen l'àmbit d'una taula), el nom pot incloure el nom de la taula. Aquest comportament evita conflictes si diverses taules tenen opcions amb el mateix nom. Per exemple, la taula Comptes pot tenir una elecció OrderStatus i el seu nom podria ser OrderStatus (Comptes). Aquest nom té espais i parèntesis, de manera que cal envoltar-lo amb cometes simples si hi feu referència en una fórmula.
Els valors de dues opcions també es comporten com a valors booleans. Per exemple, un valor de dues opcions anomenat TaxStatus pot tenir les etiquetes Imposable i No imposable, que corresponen a true i false. Per mostrar-ho, utilitzeu aquesta fórmula:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
També podeu utilitzar aquesta fórmula:
If( ThisItem.Taxable, ...