Tipos de datos
Nota
Microsoft Power Fx é o novo nome da linguaxe de fórmulas para aplicacións de lenzo. Estes artigos son un traballo en curso a medida que extraemos o idioma das aplicacións de lenzo, o integramos con outros produtos de Microsoft Power Platform e o poñemos a disposición como código aberto. Comece coa Visión xeral de Microsoft Power Fx para ver unha introdución á lingaxe.
A información flúe a través dunha aplicación en valores pequenos e discretos, dun xeito moi parecido ás celas dunha folla de cálculo. Por exemplo, os datos dun campo de Aniversario e un campo de Aniversario fluirían como valor de Data que inclúe o ano, o mes e o día. A aplicación sabe como dar formato a estes valores, restrinxir a entrada ao que é adecuado para cada un e compartir os valores cunha base de datos. Os aniversarios varían respecto dos aniversarios das persoas, pero o sistema os xestiona exactamente do mesmo xeito. Neste caso, Data é un exemplo de tipo de datos.
Este artigo ofrece detalles sobre os tipos de datos que soportan as aplicacións de lenzo. Cando unha aplicación se conecta a un orixe de datos externa, cada tipo de datos desa fonte é atribuído a un tipo de datos para aplicacións de lenzo.
Tipo de datos | Descripción | Exemplos |
---|---|---|
Booleano | Un valor verdadeiro ou falso. Pódese usar directamente en Se, Filtro e outras funcións sen comparación. | verdade |
Cor | Unha especificación de cor, incluída unha canle alfa. | Cor.Vermello ColorValue("#102030") RGBA(255; 128; 0; 0,5) |
Moeda | Un valor de moeda almacenado nun número de punto flotante. Os valores de moeda son os mesmos que os valores de número con opcións de formato de moeda. | 123 4.56 |
Data | Unha data sen hora, no fuso horario do usuario da aplicación. | Data (5, 16 de 2019) |
DataHora | Unha data con hora, no fuso horario do usuario da aplicación. | DateTimeValue( "16 de maio, 2019 1:23:09 PM") |
Decimal | Un número con alta precisión, operacións base 10 e alcance limitado. | 123 Decimal("1.2345") |
GUID | A Identificador único global. | GUID() GUID( "123e4567-e89b-12d3-a456-426655440000 " ) |
Hiperligazón | Cadea de texto que contén unha hiperligazón. | "https://powerapps.microsoft.com" ; |
Imaxe | Unha cadea de texto de Identificador de recursos universais (URI) a unha imaxe en .jpeg, .png, .svg, .gif ou outro formato común de imaxe web. | A miña imaxe engadido como recurso da aplicación "https://northwindtraders.com/logo.jpg" ; "appres://blobmanager/7b12ffa2..." |
Medios | Unha cadea de texto URI para unha gravación de vídeo ou audio. | O meu vídeo engadido como recurso da aplicación "https://northwindtraders.com/intro.mp4" ; "appres://blobmanager/3ba411c..." |
Número ou Flotar | Un número con precisión estándar, operacións base 2 e unha ampla gama. | 123 8.903e121 1.234e200 |
Elección | Unha elección entre un conxunto de opcións, apoiado por un número. Este tipo de datos combina unha etiqueta de texto localizable cun valor numérico. A etiqueta aparece na aplicación e o valor numérico gárdase e úsase para as comparacións. | ThisItem.OrderStatus |
Gravar | Un rexistro de valores de datos. Este tipo de datos composto contén instancias doutros tipos de datos que se enumeran neste tema. Máis información: Traballar con táboas. | { Empresa: "Northwind Traders", Persoal: 35, NonProfit: false } |
Referencia de rexistro | Unha referencia a un rexistro nunha táboa. Estas referencias úsanse con frecuencia con buscas polimórficas. Máis información: Traballar con referencias. | Primeiro(Contas).Propietario |
Táboa | Táboa de rexistros. Todos os rexistros deben ter os mesmos nomes para os seus campos cos mesmos tipos de datos, e os campos omitidos son tratados como baleiros. Este tipo de datos composto contén instancias doutros tipos de datos que se enumeran neste tema. Máis información: Traballar con táboas. | táboa ( { Nome: "Sidney", LastName: "Higa" }, { FirstName: "Nancy", LastName: "Anderson" } ) |
Texto | Unha cadea de texto Unicode. | "Ola, mundo" |
Tempo | Unha hora sen data, no fuso horario do usuario da aplicación. | Tempo (11, 23, 45) |
Dúas opcións | Unha elección entre un conxunto de dúas opcións, apoiado por un valor booleano. Este tipo de datos combina unha etiqueta de texto localizable cun valor booleano. A etiqueta aparece na aplicación e o valor booleano gárdase e úsase para as comparacións. | Este Elemento.Imponible |
obxecto sen tipo | Un obxecto de tipo non declarado. O obxecto subxacente pode ser calquera tipo existente e pódese converter en tipos compatibles usando funcións como Boolean(), Value(), Table() etc. Para obter máis información, consulte Obxecto non escrito e Traballar con JSON. | ParseJSON("{ ""Campo"" : 1234 }").Campo |
Moitos destes tipos de datos son similares e teñen a mesma representación subxacente, como un campo de Hiperligazón que se está tratando como Texto. Os tipos de datos adicionais proporcionan mellores experiencias predeterminadas en formularios e outros controis.
En branco
Todos os tipos de datos poden ter un valor de baleiro (noutras palabras, ningún valor). O termo "nulo" úsase con frecuencia en bases de datos para este concepto.
Use a función Baleiro coa función Conxunto ou Parche para definir unha variable ou campo en baleiro. Por exemplo, Set( x, Blank() ) elimina calquera valor da variable global x.
Proba para un valor en branco usando a función IsBlank. Substitúa posibles valores en branco por valores que non estean en branco usando a función Coalesce.
Porque todos os tipos de datos son compatibles con en branco, os tipos de datos Booleano e Dúas opcións teñen efectivamente tres valores posibles.
Texto, hiperligazón, imaxe e multimedia
Os catro tipos de datos están baseados nunha cadea de texto Unicode.
Texto incrustado
As cadeas de texto incrustadas nunha fórmula están incluídas entre comiñas dobres. Use dúas comiñas dobres xuntas para representar unha única comiña dobre na cadea de texto. Por exemplo, usando a seguinte fórmula na propiedade OnSelect dun control Botón:
Notify( "Jane said ""Hello, World!""" )
permite ver unha faixa cando se preme o botón, onde se omiten a primeira e a última comiñas dobres (xa que delimitan a cadea de texto) e as comiñas dobres repetidas arredor de Ola, mundo! son substituídas por unhas dobres comiñas sinxelas:
Non se usan comiñas individuais para nomes de identificador que conteñen caracteres especiais e non teñen importancia especial dentro dunha cadea de texto.
Interpolación de cadeas
Use a interpolación de cadeas para inserir fórmulas nunha cadea de texto. Moitas veces é máis fácil traballar e visualizar a saída que usar a función Concatenar ou o operador & .
Coloque como prefixo na cadea de texto un signo de dólar $ e engada a fórmula que se vai incrustar con chaves { }. Para incluír unha chave na cadea de texto, utilice chaves repetidas: {{ ou }}. A interpolación de cadeas pódese usar en calquera lugar onde se poida usar unha cadea de texto estándar.
Por exemplo, considere esta fórmula con variables globais Mazás establecido en 3 e Plátanos axustado en 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Esta fórmula devolve a cadea de texto Temos 3 mazás, 4 plátanos, un total de 7 froitas. As variables Mazás e Plátanos insírense no texto substituíndo as chaves, xunto co resultado da fórmula matemática Mazás+Plátanos. Os espazos e outros caracteres arredor das chaves consérvanse tal e como están.
As fórmulas incorporadas poden incluír calquera función ou operador. Todo o que se require é que o resultado da fórmula poida ser forzado a unha cadea de texto. Por exemplo, esta fórmula inserirá NickName se se fornece, ou o FirstName do contrario, nun saúdo:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )
Se NickName está axustado en "Joe", esta fórmula producirá a cadea de texto Dámoslle a benvida, Joe, encantado de coñecelo. Pero se NickName está baleiro e FirstName é "Joseph", esta fórmula produce Estimado Joseph, encantado de coñecelo no seu lugar.
A interpolación de cadeas pode incluír cadeas de texto estándar na fórmula incrustada. Por exemplo, se non se forneceu nin NickName ou FirstName, aínda podemos fornecer "Friend" como substituto:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Incluso se poden aniñar as interpolacións de cadeas. Considere este exemplo no que se combinan o Nome, Segundo nome e Apelido nun saúdo. Aínda que un ou dous destes valores estean en branco, o número correcto de espazos estará entre as partes do nome. Se non se proporciona ningunha das partes, a interpolación da cadea interna contraerase nunha cadea baleira e substituirase pola función Fusionar por "Amigo".
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
Primeira | Centro | Última | Resultado |
---|---|---|---|
Xoán | Qunicy | Doe | Welcome John Quincy Doe! |
Xoán | en branco | Doe | Welcome John Doe! |
en branco | en branco | Doe | Welcome Doe! |
en branco | en branco | en branco | Welcome Friend! |
Newlines
As cadeas de texto incrustadas poden conter novas liñas. Por exemplo, considere axustar a propiedade Text dun control de Etiqueta para o seguinte:
"Line 1
Line 2
Line 3"
A fórmula anterior dá lugar a tres liñas que aparecen no control de etiquetas:
As novas liñas tamén son compatibles coa interpolación de cadeas, como se mostra a continuación:
$"Line {1}
Line {1+1}
Line {1+1+1}"
A fórmula anterior dá o mesmo resultado:
Recursos de imaxe e multimedia
A través do menú Ficheiro, pode engadir ficheiros de imaxe, vídeo e audio como recursos de aplicación. O nome do ficheiro importado convértese no nome do recurso na aplicación. Neste gráfico, o logotipo de Northwind Traders, que leva o nome nwindlogo, engadiuse a unha aplicación:
Para empregar este recurso nunha aplicación, especifíqueo na propiedade Imaxe dun control de Imaxe:
URI de imaxes e outros soportes
Pode investigar un pouco máis neste último exemplo, definindo a propiedade Text dun control de Etiqueta en nwindlogo. A etiqueta mostra unha cadea de texto:
As aplicacións de lenzo fan referencia a cada imaxe ou outro ficheiro multimedia, xa sexa na nube ou se engada como recurso de aplicación por parte dunha cadea de texto de URI.
Por exemplo, a propiedade Image dun control de imaxe non só acepta recursos da aplicacións, senón que tamén liga con imaxes da web, como "https://northwindtraders.com/logo.jpg". A propiedade tamén acepta imaxes en liña que usan o esquema da URI de datos como neste exemplo:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
Esta URI mostra unha versión reducida de dous diamantes púrpura:
Pode amosar a imaxe máis recente capturada nun control de Cámara se establece a propiedade Imaxe dun control de imaxe á propiedade Foto do control da cámara. A aplicación garda a imaxe na memoria e a propiedade Foto do control da cámara devolve unha referencia URI á imaxe. Por exemplo, pode facer unha foto e a propiedade Foto da cámara podería devolver "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
Empregue un URI para facer referencia a unha imaxe ou outro ficheiro multimedia almacenado nunha base de datos. Deste xeito, a aplicación non recupera os datos reais ata que realmente sexa necesaria. Por exemplo, un anexo nunha táboa de Microsoft Dataverse pode devolver "appres://datasources/Contacts/table/...". Como no exemplo da cámara, pode amosar esta imaxe establecendo a propiedade Image dun control de imaxe nesta referencia, que recupera os datos binarios.
Cando garda un tipo de datos multimedia, como unha imaxe, nunha base de datos, a aplicación envía a imaxe real ou os datos multimedia, e non a referencia URI.
Límites de tamaño
Igual que cadeas de texto e URI, estes tipos de datos non teñen límite preestablecido na súa lonxitude.
Os datos binarios aos que se refiren estes tipos de datos tampouco teñen límite preestablecido de tamaño. Por exemplo, unha imaxe capturada a través do control da cámara á que agora se fai referencia como "appres://..." pode ser de tan grande e de alta resolución como admita a cámara do dispositivo. A resolución, a velocidade de fotogramas e outros atributos dos ficheiros multimedia non están limitados polo tipo de datos, pero os controis específicos para reproducir e capturar ficheiros multimedia poden ter as súas propias limitacións.
Non obstante, todos os tamaños de datos están suxeitos á cantidade de memoria dispoñible na aplicación. Os navegadores que se executan nun computador de escritorio normalmente admiten máis de 100 megabytes de datos. Non obstante, a cantidade de memoria dispoñible dun dispositivo como un teléfono pode ser moi inferior, normalmente nun rango de 30-70 megabytes. Para determinar se a súa aplicación se executará dentro destes límites, probe escenarios comúns en todos os dispositivos nos que se debe executar.
Como práctica recomendada, conserve os datos na memoria só o tempo que sexa necesario. Cargue imaxes nunha base de datos o máis rápido posible; descargue imaxes só cando o usuario da aplicación as solicite.
Números
Nota
Power Apps Hoxe só admite Float e é o tipo de todos os números. Pronto engadirase compatibilidade con Decimal .
Power Fx admite dous tipos de números: Decimal e Float (con sinónimos Número e Moeda).
O decimal é o mellor para a maioría dos cálculos empresariais. Pode representar con precisión números en base 10, o que significa que 0.1
pódese representar con exactitude e non será propenso a erros de redondeo durante os cálculos. Ten un rango suficientemente grande para calquera necesidade empresarial, ata 1028 con ata 28 díxitos de precisión. Decimal é o tipo de datos numéricos predeterminado para a maioría dos Power Fx hosts, que se usa se simplemente se escribe 2*2
.
Float é mellor para cálculos científicos. Pode representar números nun rango moito maior, ata 10308. A precisión está limitada a 15 cifras decimais e as matemáticas baséanse na base 2 polo que non poden representar con precisión algúns valores decimais comúns. Float tamén ten un maior rendemento e é favorecido se iso é un factor e a precisión non é fundamental.
Números decimais
O tipo de datos Decimal utiliza a maioría das veces o tipo de datos decimal .NET. Algúns hosts, como Dataverse columnas de fórmulas que se executan en SQL Serer, usan o tipo de datos decimal de SQL Server.
Decimal face as matemáticas como aprendeches na escola, utilizando os díxitos de base 10. Isto é moi importante para evitar erros de redondeo por diferenzas moi pequenas que se poden acumular cando se usan as matemáticas de base 2 (como usa Float).
O rango é de 79,228,162,514,264,337,593,543,950,335 positivo a 79,228,162,514,264,337,593,543,950,335 negativo. O separador decimal pódese colocar en calquera lugar destes números, proporcionando ata 28 díxitos de precisión, e aínda así estar representado con precisión. Por exemplo, 79,228,162,514,264.337593543950335 pódese representar exactamente, igual que 7.9228162514264337593543950335.
Números de coma flotante
O tipo de datos Float , tamén coñecido como Número ou Moeda, utiliza o estándar de punto flotante de dobre precisión IEEE 754. Este estándar proporciona unha gama moi grande de números nos que traballar, desde –1.79769 x 10308 ata 1.79769 x 10308. O menor valor que se pode representar é 5 x 10–324.
Float pode representar exactamente números enteiros (ou enteiros) entre –9,007,199,254,740,991 (–(253 – 1)) e 9,007,199,254,740,991 (2 a71>53 – 1), inclusive. Este rango é superior aos tipos de datos enteiros de 32 bits (ou 4 bytes) que as bases de datos usan habitualmente. Non obstante, as aplicacións de lenzo non poden representar tipos de datos enteiros de 64 bits (ou 8 bytes). Pode almacenar o número nun campo de texto ou usar unha columna calculada para facer unha copia do número nun campo de texto, para que estea asignado a un tipo de datos de Texto na aplicación de lenzo. Deste xeito, pode manter, amosar e introducir estes valores, ademais de comparalos para determinar se son iguais; non obstante, non pode realizar cálculos numéricos sobre eles neste formulario.
A aritmética de punto flotante é aproximada, polo que ás veces pode dar resultados inesperados con moitos exemplos documentados. Pode esperar que a fórmula 55 / 100 * 100 devolva exactamente 55 e que (55 / 100 * 100) - 55 devolva exactamente cero. Non obstante, esta última fórmula devolve 7.1054 x 10–15, que é moi pequeno, pero non cero. Esta pequena diferenza normalmente non causa ningún problema e a aplicación arredóndaa cando amosa o resultado. Non obstante, pequenas diferenzas poden realizarse nos cálculos posteriores e parecer que ofrecen unha resposta incorrecta.
Os sistemas de bases de datos adoitan almacenar moedas e realizar cálculos mediante matemáticas decimais, o cal ofrece un rango máis pequeno pero un maior control sobre a precisión. De xeito predeterminado, as aplicacións de lenzo atribúen moedas dentro e fóra dos valores de punto flotante; polo tanto, o resultado pode variar dos cálculos que se fan nun tipo de datos decimal nativo. Se este tipo de discrepancia causa problemas, poderá traballar con estes valores como Texto, do mesmo xeito que pode facelo con números enteiros descritos anteriormente nesta sección.
Valores predeterminados e conversións
Nota
Power Apps Hoxe só admite Float e é o tipo de todos os números. Pronto engadirase compatibilidade con Decimal .
A maioría dos Power Fx hosts usan Decimal de forma predeterminada. Isto afecta:
- Números literais en fórmulas. O número
1.234
interpretarase como un valor decimal . Por exemplo, a fórmula1.234 * 2
interpretará o1.234
e2
como Decimal e devolverá a Resultado decimal. - Función de valor.
Value( "1.234" )
devolverá un valor decimal . Por exemplo, a fórmulaValue( "1.234" ) * 2
a función Valor interpretará o contido da cadea de texto"1.234"
como a Decimal.
Para traballar con valores Float , utilízase a función Float . Ampliando o exemplo anterior, Float( 1.234 )
converterá Decimal1.234
a Float. Float tamén se pode usar como substituto de Valor para converter unha cadea que contén un número de coma flotante como Float( "1.234" )
a a Valor flotante , que é necesario se o número non se pode representar como a Decimal.
En resumo:
Uso | Decimal | Flotar |
---|---|---|
Números literais en fórmulas | 1.234 |
Float( 1.234 ) Float( "1.234" ) |
Conversión a partir dunha cadea de texto | Value( "1.234" ) Decimal( "1.234" ) |
Float( "1.234" ) |
Conversión entre tipos numéricos | Decimal( float ) |
Float( decimal ) |
Conversión a cadea de texto | Text( decimal ) |
Text( float ) |
Mestura de tipos numéricos
Os valores flotantes e decimais pódense mesturar libremente. Cando se mesturan, os valores decimais convértense en valores flotantes debido ao intervalo máis amplo. Dado que isto pode provocar unha perda de precisión, é importante non mesturar os dous innecesariamente. Dado que Decimal é o tipo de datos literal predeterminado e a maioría das funcións numéricas conservarán o tipo, é relativamente fácil evitar pasar a Float sen desexalo.
Por exemplo, considere o seguinte cálculo mediante pac power-fx repl
despois de instalar a Power Platform CLI. Dado que ambos os números son Decimal, o cálculo realízase en Decimal e o resultado mantén a precisión total:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Se, pola contra, se cambiase o segundo operando a Float , o cálculo completo faríase en Float e o pequeno perderíase a fracción:
>> 1.0000000000000000000000000001 * Float(2)
2
Data, hora e DataeHora
Fusos horarios
Os valores de data e hora inclúense nestas categorías:
- Local do usuario: estes valores almacénanse en UTC (Tempo Universal Coordinado), pero a zona horaria do usuario da aplicación afecta a forma en que a aplicación mostra estes valores e como os especifica o usuario da aplicación. Como exemplo, o mesmo momento aparece de forma diferente a un usuario de Canadá que a un usuario de Xapón.
- Independente da zona horaria: a aplicación mostra estes valores da mesma forma e o usuario da aplicación especifícaos da mesma forma, independentemente da zona horaria. O mesmo momento aparece da mesma maneira para un usuario de Canadá que para un usuario de Xapón. Os autores das aplicacións que non esperan que as súas aplicacións funcionen en zonas horarias diferentes usan estes valores porque son máis sinxelos.
Esta táboa mostra algúns exemplos:
Tipo de data/hora | Valor almacenado na base de datos | Valor mostrado e inserido 7 horas ao oeste do UTC | Valor mostrado e inserido 4 horas ao leste do UTC |
---|---|---|---|
Usuario local | Domingo,Maio19,2019 4:00 a.m. |
Sábado 18 demaio,2019 9:00 p.m. |
Domingo,Maio19,2019 8:00 a.m. |
Independente da zona horaria | Domingo,Maio19,2019 4:00 a.m. |
Domingo,Maio19,2019 4:00 a.m. |
Domingo,Maio19,2019 4:00 a.m. |
Para a data/horas da Hora local do usuario, as aplicacións de lenzo usan a zona horaria do navegador ou o dispositivo, pero as aplicacións baseadas en modelos utilizan a configuración do usuario en Dataverse. Esta configuración coincide normalmente, pero os resultados difiren se esta configuración non coincide.
Use as funcións DateAdd e TimeZoneInformation para converter a hora local en UTC e viceversa. Consulte os exemplos ao final da documentación para estas funcións.
Equivalentes numéricos
As aplicacións de lenzo manteñen e calculan todos os valores de data e hora, Hora local do usuario ou Fuso horario independente en UTC. A aplicación traduce os valores en función da zona horaria do usuario da aplicación cando os amosa e cando o usuario da aplicación os especifica.
Cando unha aplicación de lenzo le un valor de Fuso horario independente dunha orixe de datos ou escribe ese valor nunha orixe de datos, a aplicación axusta automaticamente o valor para compensar o fuso horario do usuario da aplicación. A aplicación trata entón o valor como un valor UTC, de acordo con todos os demais valores de data/hora da aplicación. Por mor desta compensación, o valor do Fuso horario independente orixinal aparece cando a aplicación axusta o valor UTC para a zona horaria do usuario da aplicación.
Pode observar este comportamento máis de preto empregando a función Value para acceder ao valor numérico subxacente para un valor de data/hora. Esta función devolve o valor da data/hora como número de milisegundos desde o 1 de xaneiro, 1970 00:00:00.000 UTC.
Debido a que cada valor da data/hora mantense en UTC, a fórmula Value( Date( 1970, 1, 1 ) ) non volverá cero na maioría das partes do mundo porque a función Data devolve unha data en UTC. Por exemplo, a fórmula devolvería 28,800,000 nunha zona horaria compensada desde UTC en oito horas. Ese número reflicte o número de milisegundos en oito horas.
Volvendo ao noso exemplo anterior:
Tipo de data/hora | Valor almacenado na base de datos | Valor mostrado e inserido 7 horas ao oeste do UTC | Valor devolve a función |
---|---|---|---|
Usuario local | Domingo,Maio19,2019 4:00 a.m. |
Sábado 18 demaio,2019 9:00 p.m. |
1,558,238,400,000 (Domingo,Maio19,2019 4:00 AM UTC) |
Independente da zona horaria | Domingo,Maio19,2019 4:00 a.m. |
Domingo,Maio19,2019 4:00 a.m. |
1,558,263,600,000 (Domingo,Maio19,2019 11:00 AM UTC) |
Converter tempos Unix
Os tempos Unix reflicten o número de segundos desde o 1 de xaneiro, 1970 00:00:00 UTC. Debido a que as aplicacións de lenzo usan milisegundos en vez de segundos, pode facer a conversión entre ambas multiplicando ou dividindo por 1.000.
Por exemplo, o tempo Unix mostra o 9 de setembro do 2001 ás 01:46:40 UTC como 1,000,000,000. Para amosar ese valor de data/hora nunha aplicación de lenzo, multiplique ese número por 1.000 para convertelo en milisegundos e logo utilíceo nunha función de Text. A fórmula Text( 1000000000 * 1000, DateTimeFormat.UTC ) devolve a cadea 2001-09-09T01:46:40.000Z.
Non obstante, esa función devolve Sábado, 8 de setembro, 2001 18:46:40 se usa o formato DateTimeFormat.LongDateTime24 nunha zona horaria cunha compensación de -7 horas respecto ao horario UTC (7 horas ao oeste de UTC). Este resultado mostra o valor DataTime correctamente en función da zona horaria local.
Para converter a unha hora Unix, divida o resultado do Valor entre 1.000:
RoundDown(Valor(UnixTime)/1000, 0)
Se precisa a hora Unix nun valor Data para facer máis cálculos ou mostrar dentro de Power Apps, use esta fórmula:
DataAdd(Data (1970,1,1), UnixTime, Segundos)
SQL Server
SQL Server ten DataHora, Datahora2e outros tipos de datos de data/hora que non inclúen unha compensación de zona horaria e non indican en que zona horaria están. As aplicacións de lenzo asumen que estes valores están almacenados en UTC e trátaos como Hora local do usuario. Se os valores son independentes do fuso horario, corrixa para as traducións UTC usando TimeZoneOffset.
As aplicacións de lenzo utilizan a información do fuso horario incluída nos campos Datetimeoffset ao converter un valor na representación de UTC interna da aplicación. As aplicacións sempre usan UTC como fuso horario (compensación cero de zona horaria) cando escriben datos.
As aplicacións de lenzo len e escriben valores do tipo de datos Hora en SQL Server como cadeas de texto no Formato de duración ISO 8601. Por exemplo, ten que analizar este formato de cadea e usar a función Time para converter a cadea de texto "PT2H1M39S" nun valor de 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)
Información de data e hora mesturada
Data, Hora e DateTime teñen nomes diferentes, pero todos teñen o mesma información sobre datas e horas.
O valor de Data pode incluír información de hora con el, que normalmente corresponde á medianoite. O valor Hora pode levar información da data, que normalmente corresponde ao 1 de xaneiro de 1970. Dataverse tamén almacena información da hora cun campo Só data pero só mostra por defecto a información de data. De xeito parecido, as aplicacións de lenzo ás veces distinguen entre estes tipos de datos para determinar formatos e controis predeterminados.
Non se recomenda engadir e restar valores de data e hora directamente porque o fuso horario e outras conversións poden provocar resultados confusos. Use a función Valor para converter os valores de data/hora en milisegundos primeiro e teña en conta a zona horaria do usuario da aplicación ou empregue as funcións DateAdd e DateDiff para sumar ou restar a un destes valores.
Eleccións e Si/Non
As eleccións e os tipos de datos de dúas opcións proporcionan dúas ou máis eleccións para que un usuario da aplicación seleccione. Por exemplo, unha elección Estado do pedido pode ofrecer as eleccións Novo, Enviado, Facturado e Pechado. O tipo de datos de dúas opcións só ofrece dúas opcións.
Estes dous tipos de datos mostran as súas etiquetas nun contexto de cadea de texto. Por exemplo, un control de etiqueta mostra unha das opcións de estado do pedido se a propiedade Text do control se establece nunha fórmula que fai referencia a esa elección. As etiquetas de opcións poden localizarse para usuarios de aplicacións en diferentes situacións.
Cando o usuario dunha aplicación selecciona unha opción e garda ese cambio, a aplicación transmite os datos á base de datos, que almacena eses datos nunha representación independente do idioma. Unha opción nunha elección transmítese e almacénase como un número e unha opción nun tipo de datos de dúas opcións transmítese e almacénase como un valor booleano.
As etiquetas son exclusivamente para visualizarse. Non pode realizar comparacións directas coas etiquetas porque son específicas dun idioma. Pola contra, cada elección ten unha enumeración que funciona co valor booleano ou número subxacente. Por exemplo, non pode usar esta fórmula:
If( ThisItem.OrderStatus = "Active", ...
Pero pode usar esta fórmula:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Para as eleccións globais (que comparten as táboas), o nome da enumeración do conxunto de opcións coincide co nome da elección global. Para as eleccións locais (que se centran nunha táboa), o nome pode conter o nome da táboa. Este comportamento evita conflitos se varias táboas teñen eleccións que teñen o mesmo nome. Por exemplo, a táboa Contas pode ter unha elección Estado do pedido e o seu nome podería ser Estado do pedido (contas). Este nome contén un ou máis espazos e parénteses, polo que debe rodealo con comiñas simples se fai referencia a el nunha fórmula.
Ademais, os valores de dúas opcións tamén poden comportarse como valores booleanos. Por exemplo, un valor de dúas opcións chamado EstadoFiscal pode ter as etiquetas Impoñible e Non impoñible, que corresponden a verdadeiro e falso respectivamente. Para demostralo, pode usar esta fórmula:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Tamén pode usar esta fórmula equivalente:
If( ThisItem.Taxable, ...