Compreenda tabelas de aplicativos de lona e registos em Aplicações de EnergiaUnderstand canvas-app tables and records in Power Apps

Em Aplicações de Energia, pode criar uma aplicação de tela que aceda a informações no Microsoft Excel, SharePoint, SQL Server e várias outras fontes que armazenam dados em registos e tabelas.In Power Apps, you can create a canvas app that accesses information in Microsoft Excel, SharePoint, SQL Server, and several other sources that store data in records and tables. Para trabalhar de forma mais eficaz com estes tipos de dados, reveja os conceitos subjacentes a estas estruturas.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • Os registos contêm uma ou mais categorias de informações relativas a uma pessoa, local ou coisa.A record contains one or more categories of information about a person, a place, or a thing. Por exemplo, podem conter o nome, o endereço de e-mail e o número de telefone de um cliente individual.For example, a record might contain the name, the email address, and the phone number of a single customer. Outras ferramentas referem-se aos registos como “linhas” ou “itens”.Other tools refer to a record as a "row" or an "item."
  • As tabelas incluem um ou mais registos que contêm as mesmas categorias de informações.A table holds one or more records that contain the same categories of information. Por exemplo, podem conter os nomes, os endereços de e-mail e os números de telefone de 50 clientes.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

Na sua aplicação, vai utilizar fórmulas para criar, atualizar e manipular os registos e as tabelas.In your app, you'll use formulas to create, update, and manipulate records and tables. Provavelmente, vai ler e escrever dados numa origem de dados externa, que é uma tabela expandida.You'll probably read and write data to an external data source, which is an extended table. Além disso, pode criar uma ou mais tabelas internas, que são chamadas coleções.In addition, you might create one or more internal tables, which are called collections.

Pode criar várias fórmulas que assumem o nome de uma tabela como argumento, da mesma forma que uma fórmula do Excel assume uma ou mais referências de células como argumentos.You can build a variety of formulas that take the name of a table as an argument, just as a formula in Excel takes one or more cell references as arguments. Algumas fórmulas em Power Apps devolvem uma tabela que reflete os outros argumentos que especifica.Some formulas in Power Apps return a table that reflects the other arguments that you specify. Por exemplo, pode criar uma fórmula:For example, you might create a formula:

  • para atualizar um registo numa tabela ao especificar essa tabela como um de múltiplos argumentos para a função Patch .to update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • para adicionar, remover e mudar o nome das colunas de uma tabela ao especificar essa tabela como argumento para as funções AddColumns , DropColumns ou RenameColumnsto add, remove, and rename columns in a table by specifying that table as an argument for the AddColumns, DropColumns, or RenameColumns function. Nenhuma destas funções modificada a tabela original.None of those functions modifies the original table. Em vez disso, a função devolve outra tabela com base nos outros argumentos que especificar.Instead, the function returns another table based on the other arguments that you specify.

Elementos de uma tabelaElements of a table

RegistosRecords

Cada registo contém, pelo menos, uma categoria de informações para uma pessoa, local ou coisa.Each record contains at least one category of information for a person, a place, or a thing. O exemplo acima mostra um registo para cada produto (Chocolate, Bread [Pão] e Water [Água]) e uma coluna para cada categoria de informações (Price [Preço], Quantity on Hand [Quantidade Disponível] e Quantity on Order [Quantidade Encomendada]).The example above shows a record for each product (Chocolate, Bread, and Water) and a column for each category of information (Price, Quantity on Hand, and Quantity on Order).

Numa fórmula, pode referir-se a um registo por si só, fora do contexto de uma tabela, mediante a utilização de chavetas.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. Por exemplo, o registo { Name: "Strawberries"; Price: 7,99 } não está associado a uma tabela.For example, this record { Name: "Strawberries"; Price: 7,99 } isn't associated with a table. Tenha em atenção que os nomes de campo, tais como Name (Nome) e Price (Preço) nesse exemplo, não estão entre aspas.Note that field names, such as Name and Price in that example, aren't enclosed in double quotation marks.

CamposFields

Os campos são pedaços de informação individuais nos registos.A field is an individual piece of information in a record. Pode ver este tipo de campo como um valor numa coluna relativamente a registos específicos.You can visualize this sort of field as a value in a column for a particular record.

Tal como sucede com os controlos, para fazer referência a um campo de um registo, utiliza o operador .Just as with a control, you refer to a field of a record by using the . operador no registo.operator on the record. Por exemplo,, First(Products).Name devolve o campo Name (Nome) do primeiro registo na tabela Products (Produtos).For example, First(Products).Name returns the Name field for the first record in the Products table.

Os campos podem conter outro registo ou tabela, como mostra o exemplo da função GroupBy .A field can contain another record or table, as the example for the GroupBy function shows. Pode aninhar tantos níveis de registos e tabelas quanto pretenda.You can nest as many levels of records and tables as you want.

ColunasColumns

As colunas referem-se ao mesmo campo de um ou mais registos numa tabela.A column refers to the same field for one or more records in a table. No exemplo anterior, cada produto tem um campo de preço e esse preço está na mesma coluna para todos os produtos.In the above example, each product has a price field, and that price is in the same column for all products. A tabela acima tem quatro colunas, apresentadas horizontalmente na parte superior:The above table has four columns, shown horizontally across the top:

  • Name (Nome)Name
  • Price (Preço)Price
  • Quantity on Hand (Quantidade Disponível)Quantity on Hand
  • Quantity on Order (Quantidade Encomendada)Quantity on Order

O nome da coluna reflete os campos na mesma.The column's name reflects the fields in that column.

Todos os valores numa coluna são do mesmo tipo de dados.All values within a column are of the same data type. No exemplo acima, a coluna "Quantity on Hand" contém sempre um número e não pode conter uma cadeia, como “12 unidades”, relativamente a um registo.In the above example, the "Quantity on Hand" column always contains a number and can't contain a string, such as "12 units," for one record. O valor de qualquer campo também pode ser vazio.The value of any field may also be blank.

É possível que se tenha referido às colunas como “campos” noutras ferramentas.You may have referred to columns as "fields" in other tools.

Nota

Para fontes de dados sharePoint e Excel que contenham nomes de colunas por espaços, as Power Apps vão substituir os espaços por "_x0020_" .For SharePoint and Excel data sources that contain column names with spaces, Power Apps will replace the spaces with "_x0020_". Por exemplo, "Nome da Coluna" no SharePoint ou no Excel aparecerá como "Nome_x0020_da_x0020_Coluna" no Power Apps, quando for apresentado no esquema de dados ou utilizado numa fórmula.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in Power Apps when displayed in the data layout or used in a formula.

TabelaTable

As tabelas incluem um ou mais registos, cada qual com vários campos que têm nomes consistentes em todos os registos.A table comprises one or more records, each with multiple fields that have consistent names across the records.

Qualquer tabela que seja armazenada numa origem de dados ou numa coleção tem um nome, que é utilizado para fazer referência a essa tabela e para a transmitir às funções que assumem tabelas como argumentos.Any table that's stored in a data source or a collection has a name, which you use to refer to the table and pass it to functions that take tables as arguments. As tabelas também podem ser resultado de uma função ou de uma fórmula.Tables can also be the result of a function or a formula.

Tal como no exemplo seguinte, pode exprimir uma tabela numa fórmula através da função Table com um conjunto de registos, que são expressos em chavetas:As in the following example, you can express a table in a formula by using the Table function with a set of records, which you express in curly braces:

Table( { Value: "Strawberry" }; { Value: "Vanilla" } )

Também pode definir uma tabela de coluna única com parênteses retos.You can also define a single-column table with square brackets. Uma forma equivalente de escrever o anterior:An equivalent way to write the above:

[ "Strawberry"; "Vanilla" ]

Fórmulas de tabelaTable formulas

Em Excel e Power Apps, você usa fórmulas para manipular números e cadeias de texto de formas semelhantes:In Excel and Power Apps, you use formulas to manipulate numbers and strings of text in similar ways:

  • No Excel, escreva um valor, como 42, na célula A1, e, depois, escreva uma fórmula, como A1+2, noutra célula, para mostrar o valor de 44.In Excel, type a value, such as 42, in cell A1, and then type a formula, such as A1+2, in another cell to show the value of 44.
  • Em Power Apps, delineie a propriedade Padrão de Slider1 a 42, e delineie a propriedade de Texto de uma etiqueta para Slider1.Value + 2 para mostrar o valor de 44.In Power Apps, set the Default property of Slider1 to 42, and set the Text property of a label to Slider1.Value + 2 to show the value of 44.

Em ambos os casos, o valor calculado é alterado automaticamente se modificar os valores dos argumentos (por exemplo, o número na célula A1 ou o valor de Slider1).In both cases, the calculated value changes automatically if you change the values of the arguments (for example, the number in cell A1 or the value of Slider1).

Da mesma forma, pode utilizar fórmulas para aceder e manipular dados em tabelas e registos.Similarly, you can use formulas to access and manipulate data in tables and records. Pode utilizar os nomes das tabelas como argumentos em algumas fórmulas, tais como Min(Catalog; Price) , para mostrar o valor mais baixo na coluna Prices da tabela Catalog (Catálogo).You can use names of tables as arguments in some formulas, such as Min(Catalog; Price) to show the lowest value in the Price column of the Catalog table. Outras fórmulas disponibilizam tabelas completas como valores de retorno, como RenameColumns(Catalog; "Price"; "Cost") , que devolve todos os registos da tabela Catalog, mas altera o nome da coluna Price para Cost (Custo).Other formulas provide whole tables as return values, such as RenameColumns(Catalog; "Price"; "Cost"), which returns all the records from the Catalog table but changes the name of the Price column to Cost.

Tal como com os números, as fórmulas que envolvem tabelas e registos são recalculadas automaticamente à medida que a tabela ou o registo subjacente é alterado.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Se o custo de um produto na tabela Catalog baixar para além do mínimo anterior, o valor de retorno da fórmula Min altera-se automaticamente para corresponder ao mesmo.If the cost of a product in the Catalog table is lowered below the previous minimum, the return value of the Min formula will automatically change to match it.

Vamos orientá-lo através de alguns exemplos.Let's walk through some simple examples.

  1. Crie uma aplicação em branco para um telemóvel e adicione um controlo Galeria vertical que contém outros controlos.Create a blank app for a phone, and add a vertical Gallery control that contains other controls.

    Por predefinição, o ecrã mostra texto de marcador de posição de uma tabela com o nome CustomGallerySample.By default, the screen shows placeholder text from a table named CustomGallerySample. A propriedade Items do controlo Galeria do ecrã é definida automaticamente para essa tabela.The Items property of the screen's Gallery control is automatically set to that table.

    Nota

    Alguns controlos foram reorganizados e aumentados, para fins ilustrativos.Some controls have been rearranged and enlarged for illustration purposes.

  2. Em vez de definir a propriedade Items como o nome de uma tabela, defina-o como uma fórmula que inclui o nome da tabela como argumento, tal como neste exemplo:Instead of setting the Items property to the name of a table, set it to a formula that includes the name of the table as an argument, as in this example:

    Sort(CustomGallerySample; SampleHeading; Descending)

    Esta fórmula incorpora a função Sort , que assume o nome de uma tabela como o primeiro argumento e o nome de uma coluna dessa tabela como o segundo argumento.This formula incorporates the Sort function, which takes the name of a table as its first argument and the name of a column in that table as its second argument. A função também suporta um terceiro argumento opcional, que estipula que pretende ordenar os dados por ordem descendente.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Defina a propriedade Items como uma fórmula que assume a fórmula do passo anterior como argumento e devolve uma tabela, tal como neste exemplo:Set the Items property to a formula that takes the formula from the previous step as an argument and returns a table, as in this example:

    FirstN(Sort(CustomGallerySample; SampleHeading; Descending); 2)

    Nesta fórmula, vai utilizar a função FirstN para mostrar um determinado número de registos numa tabela.In this formula, you use the FirstN function to show a particular number of records in a table. Pode utilizar a função Sort como o primeiro argumento para FirstN e um número (neste caso, 2) como o segundo argumento, que especifica a quantidade de registos que vão ser mostrados.You use the Sort function as the first argument to FirstN and a number (in this case, 2) as the second argument, which specifies how many records to show.

    A fórmula completa devolve uma tabela que contém os dois primeiros registos da tabela CustomGallerySample, ordenada pela coluna SampleHeading por ordem descendente.The entire formula returns a table that contains the first two records of the CustomGallerySample table, sorted by the SampleHeading column in descending order.

Funções de tabelas e propriedades de controlosTable functions and control properties

Considere a função Inferior.Consider the Lower function. Se a receção variável contiver a cadeia de texto "Olá, Mundo", a fórmula Lower devolve "Olá, mundo".If the variable welcome contains the text string "Hello, World", the formula Lower( welcome ) returns "hello, world". Esta função não altera, de forma alguma, o valor dessa variável.This function doesn't, in any way, change the value in that variable. Mais baixo é uma função pura na prática em que apenas processa a entrada e produz a saída.Lower is a pure function in that it only processes input and produces output. É tudo o que tenho. não tem efeitos colaterais.That's all; it has no side effects. Todas as funções no Excel e a maioria das funções em Power Apps são funções puras, que permitem que o livro ou a aplicação sejam recalculados automaticamente.All functions in Excel and most functions in Power Apps are pure functions, which allow the workbook or the app to be recalculated automatically.

As Power Apps oferecem um conjunto de funções que funcionam nas tabelas da mesma forma.Power Apps offers a set of functions that operate on tables in the same manner. Estas funções tomam as tabelas como entrada e filtro, classificam, transformam, reduzem e resumem tabelas inteiras de dados.These functions take tables as input and filter, sort, transform, reduce, and summarize entire tables of data. Na verdade, as funções mais baixas e muitas outras que normalmente levam um único valor também podem tomar uma tabela de coluna única como entrada.In fact, Lower and many other functions that typically take a single value can also take a single-column table as input.

  • Sort , Filter - ordena e filtra registos.Sort, Filter - Sorts and filters records.
  • FirstN , LastN - devolve os N primeiros ou N últimos registos da tabela.FirstN, LastN - Returns the first N or last N records of the table.
  • Abs , Sqrt , Round , RoundUp , RoundDown - operações aritméticas em cada registo de uma tabela de coluna única, resultando numa tabela de coluna única de resultados.Abs, Sqrt, Round, RoundUp, RoundDown - Arithmetic operations on each record of a single-column table, resulting in a single-column table of results.
  • Left , Mid , Right , Replace , Substitute , Trim , Lower , Upper , Proper - manipulações de cadeias em cada registo de uma tabela de coluna única, resultando numa tabela de coluna única de cadeias.Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - String manipulations on each record of a single-column table, resulting in a single-column table of strings.
  • Len - numa coluna de cadeias, devolve uma tabela de coluna única que contém o comprimento de cada cadeia.Len - For a column of strings, returns a single-column table that contains the length of each string.
  • Concatenate - concatena múltiplas colunas de cadeias, resultando numa tabela de coluna única de cadeias.Concatenate - Concatenates multiple columns of strings, resulting in a single-column table of strings.
  • AddColumns , DropColumns , RenameColumns , ShowColumns - manipulações de colunas da tabela, resultando numa tabela nova com colunas diferentes.AddColumns, DropColumns, RenameColumns, ShowColumns - Column manipulation of the table, resulting in a new table with different columns.
  • Distinct - remove registos duplicados.Distinct - Removes duplicates records.
  • Shuffle - mistura os registos numa ordem aleatória.Shuffle - Shuffles records into a random order.
  • HashTags - procura hashtags numa cadeia.HashTags - Searches for hashtags in a string.
  • Errors - disponibiliza informações de erro quando trabalha com origens de dados.Errors - Provides error information when you work with a data source.

Muitas destas funções tomam uma tabela de coluna única como sua entrada.Many of these functions take a single-column table as their input. Se uma mesa inteira tiver apenas uma coluna, pode especificá-la pelo nome.If an entire table has only one column, you can specify it by name. Se uma tabela tiver várias colunas, pode especificar uma dessas colunas utilizando a sintaxe da Tabela.Coluna.If a table has multiple columns, you can specify one of those columns by using Table.Column syntax. Por exemplo, Products.Name devolve a tabela de coluna única dos valores de nome apenas da tabela Produtos.For example, Products.Name returns the single-column table of only Name values from the Products table.

Pode remodelar completamente uma tabela como quiser utilizando a função AddColumns, RenameColumns, ShowColumns ou DropColumns.You can completely reshape a table however you want by using the AddColumns, RenameColumns, ShowColumns, or DropColumns function. Mais uma vez, estas funções mudam apenas a sua saída, não a sua fonte.Again, these functions change only their output, not their source.

As propriedades dos controlos também podem ser tabelas:Properties of controls can also be tables:

  • Itens - Aplica-se a galerias, caixas de listas e caixas de combinação.Items - Applies to galleries, list boxes, and combo boxes. Esta propriedade define a tabela que a galeria ou a lista mostra.This property defines the table that the gallery or the list shows.
  • SelectedItems - Aplica-se a caixas de listas e caixas de combinação.SelectedItems - Applies to list boxes and combo boxes. Esta propriedade define a tabela de itens que o utilizador selecionou se o SelectMultiple estiver ativado.This property defines the table of items that the user has selected if SelectMultiple is enabled.

Fórmulas comportamentaisBehavioral formulas

Outras funções foram especificamente concebidas para modificar dados e têm efeitos colaterais.Other functions are specifically designed to modify data and have side effects. Como estas funções não são puras, deve construí-las cuidadosamente, e não podem participar em valores de recálculo automaticamente na app.Because these functions aren't pure, you must build them carefully, and they can't participate in automatically recalculating values in the app. Só pode utilizar estas funções dentro de fórmulas comportamentais.You can use these functions only within behavioral formulas.

  • Recolher , Clear , ClearCollect - Cria coleções, limpa-as e adiciona-lhes dados.Collect, Clear, ClearCollect - Creates collections, clears them, and adds data to them.
  • Patch - Modifica um ou mais campos num registo.Patch - Modifies one or more fields in a record.
  • Update , UpdateIf - atualiza registos que correspondem a um ou mais critérios que especificar.Update, UpdateIf - Updates records that match one or more criteria that you specify.
  • Remove , RemoveIf - elimina registos que correspondem a um ou mais critérios que especificar.Remove, RemoveIf - Deletes records that match one or more criteria that you specify.

Fórmulas de registosRecord formulas

Também pode criar uma fórmula que calcule dados para um registo individual, assume um registo individual como argumento e fornece um registo individual como valor de retornoYou can also build a formula that calculates data for an individual record, takes an individual record as an argument, and provides an individual record as a return value. Regressando ao exemplo da galeria acima, vamos utilizar a propriedade Gallery1.Selected para apresentar informações do registo que o utilizador selecionar nessa galeria.Returning to our gallery example above, let's use the Gallery1.Selected property to display information from whatever record the user selects in that gallery.

  1. Adicione um botãoe coloque a sua propriedade OnSelect nesta fórmula:Add a Button, and set its OnSelect property to this formula:
    Collect( SelectedRecord; Gallery1.Selected )Collect( SelectedRecord; Gallery1.Selected )

  2. Mantenha a tecla Alt premida e selecione o botão.While holding down the Alt key, select the button.

  3. No menu File (Ficheiro), selecione Collections (Coleções).In the File menu, select Collections.

Esta fórmula devolve um registo que inclui não apenas os dados do registo atualmente selecionado na galeria, mas também cada controlo na mesma.This formula returns a record that includes not only the data from the record that's currently selected in the gallery but also each control in that gallery. Por exemplo, o registo contém uma coluna SampleText, que corresponde à coluna SampleText na tabela original, e uma coluna Subtitle1, que representa a etiqueta que mostra os dados dessa coluna.For example, the record contains both a SampleText column, which matches the SampleText column in the original table, and a Subtitle1 column, which represents the label that shows the data from that column. Selecione o ícone de tabela na coluna Subtitle1 para explorar esses dados.Select the table icon in the Subtitle1 column to drill into that data.

Nota

A coluna Subtitle1 poderá ser denominada Subtitle2 ou algo semelhante se tiver adicionado elementos diferentes dos especificados neste tópico.The Subtitle1 column might be named Subtitle2 or similar if you've added elements other than those that this topic specifies.

Agora que selecionou o registo, pode extrair campos individuais a partir do mesmo com o operador .Now that you have the selected record, you can extract individual fields from it with the . .operator.

  1. Adicione o controlo Etiqueta e, em seguida, mova-o para baixo da galeria e do botão.Add a Label control, and then move it under the gallery and the button.

  2. Defina a propriedade Text da etiqueta para esta expressão:Set the label's Text property to this expression:
    "Selected: " & Gallery1.Selected.SampleHeading"Selected: " & Gallery1.Selected.SampleHeading

Utilizou a propriedade Selected, que é um registo, e extraiu a propriedade SampleHeading da mesma.You've taken the Selected property, which is a record, and extracted the SampleHeading property from it.

Também pode utilizar registos como contentores para fins gerais para valores nomeados relacionados.You can also use a record as a general-purpose container for related named values.

  • Se criar uma fórmula à volta das funções UpdateContext e Navigate , utilize um registo para recolher as variáveis de contexto que pretende atualizar.If you build a formula around the UpdateContext and Navigate functions, use a record to gather the context variables that you want to update.
  • Utilize a propriedade Updates (Atualizações) num controlo de Editar formulário para recolher as alterações que o utilizador fez a um formulário.Use the Updates property on an Edit form control to gather the changes that have been made by the user in a form.
  • Utilize a função Patch para atualizar uma origem de dados, mas também para intercalar registos.Use the Patch function to update a data source but also to merge records.

Nestes casos, o registo nunca fez parte de uma tabela.In these cases, the record was never a part of a table.

Funções de registos e propriedades de controlosRecord functions and control properties

Funções que devolvem registos:Functions that return records:

  • FirstN , LastN - devolve o primeiro ou último registo ou registos da tabela.FirstN, LastN - Returns the first or last record or records of the table.
  • Lookup - devolve o primeiro registo de uma tabela que corresponde a um ou mais critérios.Lookup - Returns the first record from a table that matches one or more criteria.
  • Patch - atualiza uma origem de dados ou intercala registos.Patch - Updates a data source or merges records.
  • Defaults - devolve os valores predefinidos de uma origem de dados.Defaults - Returns the default values for a data source.

Propriedades que devolvem registos:Properties that return records:

  • Selected - aplica-se a caixas de galerias e de listagens.Selected - Applies to galleries and list boxes. Devolve o registo atualmente selecionado.Returns the currently selected record.
  • Updates - aplica-se a galerias.Updates - Applies to galleries. Reúne todas as alterações que um utilizador faça num formulário de entrada de dados.Pulls together all the changes that a user makes in a data-entry form.
  • Update -aplica-se a controlos de entrada, como controlos de introdução de texto e controlos de deslize.Update - Applies to input controls such as text-input controls and sliders. Configura as propriedade individuais da galeria, para serem reunidas em conjunto.Sets up individual properties for the gallery to pull together.

Âmbito do registoRecord scope

Algumas funções funcionam através da avaliação de uma fórmula em todos os registos de uma tabela individualmente.Some functions operate by evaluating a formula across all the records of a table individually. O resultado da fórmula é utilizado de várias formas:The formula's result is used in various ways:

  • AddColumns - a fórmula fornece o valor do campo adicionado.AddColumns - Formula provides the value of the added field.
  • Average, Max, Min, Sum, StdevP, VarP - a fórmula fornece o valor a ser agregado.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.
  • Filter, Lookup - a fórmula determina se o registo deve ser incluído na saída.Filter, Lookup - Formula determines if the record should be included in the output.
  • Concat - a fórmula determina as cadeias que vão ser concatenadas.Concat - Formula determines the strings to concatenate together.
  • Distinct - a fórmula devolve um valor, que é utilizado para identificar registos duplicados.Distinct - Formula returns a value, used to identify duplicate records.
  • ForAll - A Fórmula pode devolver qualquer valor, potencialmente com efeitos colaterais.ForAll - Formula can return any value, potentially with side effects.
  • Sort - a fórmula fornece o valor pelo qual ordenar os registos.Sort - Formula provides the value to sort the records on.
  • Com - A Fórmula pode devolver qualquer valor, potencialmente com efeitos colaterais.With - Formula can return any value, potentially with side effects.

Dentro destas fórmulas, pode referenciar os campos do registo que está a ser processado.Inside these formulas, you can reference the fields of the record being processed. Cada uma destas funções cria um “âmbito de registo” no qual a fórmula é avaliada e onde os campos do registo estão disponíveis como identificadores de nível superior.Each of these functions creates a "record scope" in which the formula is evaluated, where the fields of the record are available as top-level identifiers. Também pode referenciar propriedades do controlo e outros valores a partir de qualquer parte da sua aplicação.You can also reference control properties and other values from throughout your app.

Por exemplo, vejamos a tabela Products (Produtos):For example, take a table of Products:

Para criar esta tabela de exemplos na sua aplicação, insira um botão, coloque a sua propriedade OnSelect nesta fórmula e, em seguida, selecione o botão (clique nele enquanto segura a tecla Alt no Power Apps Studio):To create this example table in your app, insert a button, set its OnSelect property to this formula, and then select the button (click it while you hold down the Alt key in Power Apps Studio):

Set( Products;
    Table(
        { Product: "Widget";    'Quantity Requested': 6;  'Quantity Available': 3 };
        { Product: "Gadget";    'Quantity Requested': 10; 'Quantity Available': 20 };
        { Product: "Gizmo";     'Quantity Requested': 4;  'Quantity Available': 11 };
        { Product: "Apparatus"; 'Quantity Requested': 7;  'Quantity Available': 6 }
    )
)

Para determinar se algum destes produtos tinha sido solicitado mais do que o disponível:To determine whether any of any of these products had more requested than is available:

Filter( Products; 'Quantity Requested' > 'Quantity Available' )

O primeiro argumento para Filter é a tabela de registos na qual operar e o segundo é uma fórmula.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Filter cria um âmbito de registo para avaliar esta fórmula na qual os campos de cada registo estão disponíveis, este caso Product, Quantity Requested e Quantity Available.Filter creates a record scope for evaluating this formula in which the fields of each record are available, in this case Product, Quantity Requested, and Quantity Available. O resultado da comparação determina se cada registo deve ser incluído no resultado da função:The result of the comparison determines if each record should be included in the result of the function:

Acrescentando a este exemplo, podemos calcular a quantidade que deve ser encomendada de cada produto:Adding to this example, we can calculate how much of each product to order:

AddColumns( 
    Filter( Products; 'Quantity Requested' > 'Quantity Available' ); 
    "Quantity To Order"; 'Quantity Requested' - 'Quantity Available'
)

Aqui, adicionámos uma coluna calculado ao resultado.Here we are adding a calculated column to the result. AddColumns tem o seu próprio âmbito de registo que utiliza para calcular a diferença entre o que foi encomendado e o que está disponível.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

Finalmente, podemos reduzir a tabela de resultados apenas para as colunas que queremos:Finally, we can reduce the result table to just the columns that we want:

ShowColumns(
    AddColumns(
        Filter( Products; 'Quantity Requested' > 'Quantity Available' );
        "Quantity To Order"; 'Quantity Requested' - 'Quantity Available'
    );
    "Product";
    "Quantity To Order"
)

Tenha em atenção que no exemplo acima utilizámos aspas duplas (") em algumas partes e plicas (') noutras.Note that in the above, we used double quotes (") in some places and single quotes (') in other places. As plicas são necessárias para fazer referência ao valor de um objeto, como um campo ou uma tabela, no qual o nome do objeto contém um espaço.Single quotes are required when referencing the value of an object, such as a field or table, in which the name of the object contains a space. As aspas duplas são utilizadas quando não estamos a fazer referência ao valor de um objeto, mas sim a falar sobre o mesmo, especialmente em situações nas quais esse objeto ainda não existe, como é o caso de AddColumns.Double quotes are used when we are not referencing the value of an object but instead talking about it, especially in situations in which the object does not yet exist, as in the case of AddColumns.

DesambiguaçãoDisambiguation

Os nomes de campos adicionados com o âmbito de registo substituem os mesmos nomes em qualquer outro local na aplicação.Field names added with the record scope override the same names from elsewhere in the app. Quando isto acontece, pode continuar a aceder a valores fora do âmbito de registo com o operador de @ desambiguação :When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • Para aceder a valores de âmbitos de registo aninhados, utilize o operador @ com o nome da tabela que está a ser utilizada através da utilização deste padrão:To access values from nested record scopes, use the @ operator with the name of the table being operated upon using this pattern:
    Table [@ FieldName ]Table[@FieldName]
  • Para aceder a valores globais, tais como origens de dados, coleções e variáveis de contexto, utilize o padrão [@ ObjectName ] (sem uma designação de tabela).To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

Se a mesa que está a ser operada for uma expressão, como o Filtro, ... ), então o operador de desambiguação não pode ser utilizado.If the table being operated upon is an expression, such as Filter( Table, ... ), then the disambiguation operator cannot be used. Só o âmbito de registo mais interno pode aceder a campos destas expressão de tabela ao não utilizar o operador de desambiguação.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

Por exemplo, imagine a coleção X:For example, imagine having a collection X:

Pode criar esta coleção com ClearCollect( X; [1; 2] ) .You can create this collection with ClearCollect( X; [1; 2] ).

E outra coleção Y:And another collection Y:

Pode criar esta coleção com ClearCollect( Y; ["A"; "B"] ) .You can create this collection with ClearCollect( Y; ["A"; "B"] ).

Além disso, defina uma variável de contexto com o nome Value (Valor) com esta fórmula: UpdateContext( {Value: "!"} )In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

Vamos juntar tudo.Let's put it all together. Neste contexto, a fórmula seguinte:In this context, the following formula:

Ungroup(
    ForAll( X;
        ForAll( Y;
            Y[@Value] & Text( X[@Value] ) & [@Value]
        )
    );
    "Value"
)

produz esta tabela:produces this table:

O que está a acontecer aqui?What is going on here? A função ForAll mais externa define um âmbito de registo para X, permitindo o acesso ao campo Value de cada registo à medida que é processado.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. Para aceder ao valor, basta utilizar a palavra Value ou X[@Value] .It can be accessed by simply using the word Value or by using X[@Value].

A função mais interna ForAll define outra margem de gravação para Y. Uma vez que esta tabela também tem um campo De valor definido, usando o Valor aqui refere-se ao campo no registo de Ye já não o de X. Aqui, para aceder ao campo X's Value, temos de utilizar a versão mais longa com o operador de desambiguação.The innermost ForAll function defines another record scope for Y. Since this table also has a Value field defined, using Value here refers to the field in Y's record and no longer the one from X. Here, to access X's Value field, we must use the longer version with the disambiguation operator.

Uma vez que Y é o âmbito de registo mais interno, aceder aos campos desta tabela não requer desambiguação, permitindo-nos utilizar esta fórmula com o mesmo resultado:Since Y is the innermost record scope, accessing fields of this table do not require disambiguation, allowing us to use this formula with the same result:

Ungroup(
    ForAll( X;
        ForAll( Y;
            Value & Text( X[@Value] ) & [@Value]
        )
    );
    "Value"
)

Todos os âmbitos de registo ForAll substituem o âmbito global.All the ForAll record scopes override the global scope. A variável de contexto valor que definimos não está disponível pelo nome sem o operador de desambiguação.The Value context variable we defined isn't available by name without the disambiguation operator. Para aceder a este valor, use [@Value] .To access this value, use [@Value].

Desagrupar o resultado porque as funções Aninhadas ForAll resultam numa tabela de resultados aninhada.Ungroup flattens the result because nested ForAll functions result in a nested result table.

Tabelas de colunaúnicaSingle-column tables

Para operar numa única coluna a partir de uma tabela, utilize a função ShowColumns como neste exemplo:To operate on a single column from a table, use the ShowColumns function as in this example:

ShowColumns( Products; "Product" )

Esta fórmula produz esta tabela de colunaúnica:This formula produces this single-column table:

Para uma alternativa mais curta, especifique a tabela.Coluna, que extrai a tabela de coluna única da tabela justa da tabela.For a shorter alternative, specify Table.Column, which extracts the single-column table of just Column from Table. Por exemplo, esta fórmula produz exatamente o mesmo resultado que a utilização de ShowColumns.For example, this formula produces exactly the same result as using ShowColumns.

Products.Product

Registos inlineInline records

Para expressar registos, são utilizadas chavetas que contêm valores de campo nomeados.You express records by using curly braces that contain named field values. Por exemplo, pode expressar o primeiro registo da tabela no início deste tópico com esta fórmula:For example, you can express the first record in the table at the start of this topic by using this formula:

{ Name: "Chocolate"; Price: 3,95; 'Quantity on Hand': 12; 'Quantity on Order': 10 }

Também pode incorporar fórmulas dentro de outras fórmulas, como este exemplo mostra:You can also embed formulas within other formulas, as this example shows:

{ Name: First(Products).Name; Price: First(Products).Price * 1,095 }

Pode aninhar registos ao aninhar as chavetas, como este exemplo mostra:You can nest records by nesting curly braces, as this example shows:

{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand; 'OnOrder': ThisItem.QuantOnOrder } }

Coloque entre plicas o nome de cada coluna que contém um caráter especial, como espaço ou dois pontos.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. Para utilizar uma plica dentro de um nome de coluna, duplique-a.To use a single quote within a column name, double it.

Repare que o valor da coluna Price não inclui símbolo de moeda, como um cifrão.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. Esta formatação vai ser aplicada quando o valor for apresentado.That formatting will be applied when the value is displayed.

Tabelas inlineInline tables

Pode criar uma tabela com a função Table e um conjunto de registos.You can create a table by using the Table function and a set of records. Pode expressar a tabela no início deste tópico com esta fórmula:You can express the table at the start of this topic by using this formula:

Table( 
    { Name: "Chocolate"; Price: 3,95; 'Quantity on Hand': 12; 'Quantity on Order': 10 };
    { Name: "Bread"; Price: 4,95; 'Quantity on Hand': 34; 'Quantity on Order': 0 };
    { Name: "Water"; Price: 4,95; 'Quantity on Hand': 10; 'Quantity on Order': 0 } 
)

Também pode aninhar tabelas:You can also nest tables:

Table( 
    { Name: "Chocolate"; 
      'Quantity History': Table( { Quarter: "Q1"; OnHand: 10; OnOrder: 10 };
                                 { Quarter: "Q2"; OnHand: 18; OnOrder: 0 } ) 
    }
)

Tabelas de valor inlineInline value tables

Pode especificar valores em parênteses retos para criar tabelas de coluna única.You can create single-column tables by specifying values in square brackets. A tabela resultante tem uma única coluna, com o nome Value.The resulting table has a single column, named Value.

Por exemplo, [ 1; 2; 3; 4 ] equivale a Table( { Value: 1 }; { Value: 2 }; { Value: 3 }; { Value: 4 } ) e devolve esta tabela:For example, [ 1; 2; 3; 4 ] is equivalent to Table( { Value: 1 }; { Value: 2 }; { Value: 3 }; { Value: 4 } ) and returns this table: