Adicionar fórmulas e funções no InfoPath 2010
Aplica-se a
As fórmulas permitem obter mais das regras que você cria do que usando regras básicas e pré-definidas. Por exemplo, as fórmulas são usadas para coisas como calcular a data atual ou futura ou até mesmo concatenar o texto.
Neste artigo
Visão geral
Uma fórmula é uma expressão XPath (XML Path Language) que consiste em valores, campos ou grupos, funções e operadores que são usados para calcular e exibir outros valores. Você pode usar uma fórmula para criar um novo valor para um campo e exibir esse valor em um controle associado a esse campo. As fórmulas podem ser usadas da seguinte maneira:
Calcule um valor matemático com base nos valores especificados ao projetar o modelo ou com base nos valores que um usuário insere ao preencher o modelo de formulário.
Execute uma regra com base em um valor calculado usando uma fórmula.
Exiba o texto somente leitura calculado de outros controles ou exiba o valor de outro controle.
Uma função é uma expressão que retorna um valor com base nos resultados de um cálculo. Os valores usados nas funções são chamados de argumentos. Você pode usar as funções XPath 1.0 padrão incluídas no InfoPath, além de algumas funções específicas do InfoPath. As funções consistem nas três partes a seguir:
- Nome O nome da função geralmente fornece uma dica sobre a ação que a função executará.
- Valor retornado O resultado da função.
- Argumentos Os valores usados pela função para executar o cálculo.
Uma função pode exigir argumentos para retornar um valor. Se a função exigir argumentos, você precisará saber quantos argumentos são necessários e o tipo de dados de cada argumento. A função não funcionará se você fornecer o número errado ou o tipo de argumentos necessários.
A ilustração a seguir mostra a relação entre funções, expressões e fórmulas.
Adicionar um controle de valor calculado
Você pode usar um controle de valor calculado para exibir texto somente leitura, exibir o valor de outro controle no formulário e criar fórmulas baseadas em expressões XPath. Por exemplo, se você estiver desenvolvendo um modelo de formulário de acompanhamento de despesas, poderá adicionar um controle de valor calculado para exibir o total das despesas inseridas.
Observação
Um controle de valor calculado exibe apenas dados e não os armazena, portanto, você deve usar um controle de valor calculado somente se não quiser salvar seu valor ou referenciá-los em outra fórmula.
No modelo de formulário, coloque o cursor onde você deseja inserir o controle.
Na guia Página Inicial , no grupo Controles , clique no controle de valor calculado .
Na caixa de diálogo Inserir Valor Calculado , faça um dos seguintes procedimentos:
Para digitar texto ou uma expressão XPath diretamente no controle de valor calculado, digite na caixa XPath .
Para inserir uma fórmula, clique em Editar Fórmula
e insira a fórmula desejada na caixa de texto Fórmula , fazendo uso do seguinte, conforme necessário:- Para inserir um campo ou grupo na fórmula, clique em Inserir Campo ou Grupo, clique no campo ou grupo na caixa de diálogo Selecionar um Campo ou Grupo e clique em OK.
- Para inserir uma função na fórmula, clique em Inserir Função, selecione a função na caixa de diálogo Inserir Função e clique em OK.
Se a função exigir parâmetros, selecione a função na caixa de diálogo Inserir Função , clique em OK e, no texto Fórmula , clique duas vezes em onde indicado e selecione o parâmetro desejado antes de clicar em OK. - Para inserir um valor ou operador matemático na fórmula, digite o valor ou o símbolo da operação matemática na caixa Fórmula .
Os operadores matemáticos incluem adicionar (+), subtrair (-), multiplicar (*) e dividir (/).
As fórmulas matemáticas geralmente dependem de valores inteiros ou decimais como argumentos. Para evitar valores em branco em sua fórmula, na guia Arquivo , clique em Opções de Formulário e selecione Avançado e verifique se Tratar valores em branco como zero está selecionado.
Adicionar uma fórmula a um controle
Embora você possa usar um controle de valor calculado para exibir os resultados de uma fórmula, você não se limita a usar um controle de valor calculado. Você também pode usar uma fórmula para definir o valor padrão de outros controles, como caixas de texto. Há duas maneiras de definir o valor padrão de um controle. Você pode usar um valor padrão estático, simplesmente inserindo o valor desejado no campo Valor da caixa de diálogo Propriedades de Campo ou Grupo ou pode usar uma fórmula para definir o valor padrão de um campo com base em outros valores no formulário. Faça o seguinte para definir o valor padrão de um campo com base em uma fórmula:
Selecione o controle ao qual deseja adicionar a fórmula, em Ferramentas de Controle, na guia Propriedades , no grupo Propriedades , clique em Valor Padrão.
Clique em Inserir Fórmula
ao lado da caixa Valor .Insira a fórmula desejada na caixa de texto Fórmula , fazendo uso do seguinte, conforme necessário:
Para inserir um campo ou grupo na fórmula, clique em Inserir Campo ou Grupo, clique no campo ou grupo na caixa de diálogo Selecionar um Campo ou Grupo e clique em OK.
Para inserir uma função na fórmula, clique em Inserir Função, selecione a função na caixa de diálogo Inserir Função e clique em OK.
Se a função exigir parâmetros, selecione a função na caixa de diálogo Inserir Função , clique em OK e, no texto Fórmula , clique duas vezes em onde indicado e selecione o parâmetro desejado antes de clicar em OK.Para inserir um valor ou operador matemático na fórmula, digite o valor ou o símbolo da operação matemática na caixa Fórmula .
Os operadores matemáticos incluem adicionar (+), subtrair (-), multiplicar (*) e dividir (/).Dica
As fórmulas matemáticas geralmente dependem de valores inteiros ou decimais como argumentos. Para evitar valores em branco na fórmula, na guia Arquivo , clique em Opções de Formulário e selecione Avançado. Verifique se Tratar valores em branco como zero está selecionado.
Para editar a fórmula como uma fórmula XPath, selecione a caixa Editar XPath (avançado) marcar, que alterará a fórmula para a versão de expressão XPath da fórmula.
Para marcar a fórmula da sintaxe correta, clique no botão Verificar Fórmula. Se sua fórmula contiver erros:
Clique em Mostrar Detalhes na caixa de diálogo Microsoft InfoPath para ver os erros na fórmula. Veja a seguir algumas sugestões para resolver esses erros:
- Se você estiver usando uma função em sua fórmula, verifique se está usando os argumentos corretos para a função. Algumas funções exigem campos ou grupos, enquanto outras funções exigem valores especificados como argumentos.
- Se necessário, exclua e retifique sua fórmula para garantir que ela seja digitada corretamente.
- Clique em OK.
- Se você quiser atualizar o valor padrão do campo quando os valores com base na alteração, selecione o valor Atualizar quando a fórmula for recalculada marcar caixa. Se você fizer isso, clique em OK e, em Ferramentas de Controle, na guia Propriedades , no grupo Propriedades , clique em Propriedades de Controle. Clique na guia Exibir e selecione a caixa somente leitura marcar.
Usar uma fórmula em uma regra
É possível, ao especificar condições em regras de validação, formatação ou ação , usar uma fórmula para controlar a condição. Você pode fazer isso selecionando Usar uma fórmula na terceira lista suspensa na caixa de diálogo Condição ao atribuir uma regra a um controle ou ao modelo de formulário.
Funções de data e hora
Adddays
Adiciona dias a uma data ou data e hora.
Sintaxe
addDays(data, dias)
| Argumento | Descrição |
|---|---|
| data | O número de dias no segundo argumento é adicionado à data neste argumento. Esse argumento pode ser um tipo de dados Date (date) ou Date and Time (dateTime). |
| dias | O número de dias que você deseja adicionar à data no primeiro argumento. Esse parâmetro deve ser um tipo de dados Número Inteiro (inteiro). Se você usar um número negativo nesse argumento, o valor retornado será uma data anterior. |
Exemplo
Pretende que um campo no seu modelo de formulário contenha uma data de 60 dias a partir da data de hoje. O modelo de formulário contém um campo denominado fldToday, com a data de hoje como o valor predefinido. Para calcular a nova data com esta função, utilize a seguinte fórmula no novo campo de data:
addDays(fldToday, 60)
addSeconds
Adiciona segundos a uma hora ou data e hora.
Sintaxe
addSeconds(tempo, segundos)
| Argumento | Descrição |
|---|---|
| fuso | Um valor de data e hora ou um valor de hora que seja uma referência a outro campo no modelo de formulário ou o resultado de uma função de data ou hora, como agora() ou hoje(). O número de segundos no segundo argumento é adicionado à hora neste argumento. Este argumento pode ser um tipo de dados Data (data) ou Data e Hora (dateTime). Se for um tipo de dados Hora, será devolvido um tipo de dados Hora. Se for um tipo de dados Data, será devolvido um tipo de dados Data e Hora. |
| seconds | O número de segundos que pretende adicionar ao valor de data e hora ou ao valor de hora no primeiro argumento. O campo neste parâmetro tem de ser um tipo de dados Número Inteiro (número inteiro). Se utilizar um número negativo neste argumento, o valor devolvido é uma data e hora anteriores ou uma hora anterior. |
Exemplo
O modelo de formulário contém um campo com o nome fldCurrentTime que utiliza a hora atual como o valor predefinido e um segundo campo que utiliza a função addSeconds numa fórmula para apresentar o tempo a 120 segundos da hora atual. Para calcular o novo valor de tempo com esta função, introduza a seguinte fórmula no segundo campo:
addSeconds(fldCurrentTime, 120)
now
Devolve a data e hora atuais do sistema.
Se quiser devolver apenas a data atual, utilize a função today.
Sintaxe
now()
Esta função não utiliza argumentos.
Exemplo
Para obter a data e hora em que um formulário baseado no modelo de formulário foi criado, utilize a seguinte fórmula num campo:
now()
hoje
Devolve a data atual do sistema. Para campos de data de lista do SharePoint, utilize a função now().
Se quiser que a data e a hora sejam devolvidas, utilize a função agora.
Sintaxe
hoje()
Esta função não utiliza argumentos.
Exemplo
Para obter a data em que um formulário baseado no modelo de formulário foi criado, utilize a seguinte fórmula num campo:
hoje()
Funções de campo
contagem
Conta o número de instâncias de um campo ou grupo.
Sintaxe
count(field)
| Argumento | Descrição |
|---|---|
| campo | O nome do campo de repetição ou do grupo de repetição a contar no formulário. |
Exemplo
Está a criar um modelo de formulário cujos formulários serão utilizados pelos fornecedores para comunicar os respetivos produtos e inventário. O modelo de formulário contém um grupo de repetição denominado grpProduct para os produtos submetidos pelo fornecedor. Cada grupo contém informações sobre o produto e o respetivo nível de inventário. Quando um fornecedor adiciona um produto num formulário baseado neste modelo de formulário, o InfoPath cria uma nova instância do grupo de repetição.
O modelo de formulário tem um campo na origem de dados que contém o número de produtos submetidos pelo fornecedor. Para contar automaticamente o número de produtos submetidos pelo fornecedor, que é o número de instâncias do grupo de repetição grpProduct, utilize a seguinte fórmula no campo número de produtos:
count(grpProduct)
sobrenome
Devolve a última ocorrência de um campo ou grupo de repetição.
Observação
Se estiver a estruturar um modelo de formulário compatível com o browser, esta função não aparece na lista Funções na caixa de diálogo Inserir Função..
Sintaxe
field_name[last()]
Embora a função em si não tenha parâmetros necessários, pode utilizar esta função como predicado para um nome de campo especificado.
Exemplo
Está a criar um modelo de formulário que os fornecedores irão preencher para comunicar os respetivos inventários de produtos. O modelo de formulário tem uma ligação de dados a um serviço Web que tem um método que verifica se as informações do produto de todos os produtos de um fornecedor foram concluídas. O método precisa do último produto na lista de produtos que foram submetidos pelo fornecedor.
As informações do produto são armazenadas em diferentes campos de um grupo de repetição denominado grpProduct. Quando um fornecedor adiciona um produto ao formulário, o InfoPath adiciona um novo grupo de repetição denominado grpProduct. Se o fornecedor comunicar vários produtos, a origem de dados do formulário conterá várias instâncias do grupo de repetição grpProduct.
Para se certificar de que submete as informações corretas ao serviço Web, adicione um campo que irá conter informações sobre o último produto no grupo de produtos do fornecedor. Para configurar esse campo para obter automaticamente o último produto, utilize a seguinte fórmula como o valor predefinido do último campo de produto:
grpProduct[last()]
nome local
Devolve o nome local de um campo ou grupo.
Observação
- Se o argumento for um campo de repetição ou um grupo de repetição, a função devolve o valor do primeiro campo de repetição ou grupo de repetição.
- Quando um utilizador preenche um formulário de browser, uma fórmula que utiliza esta função envia dados de formulário para o servidor para obter o valor devolvido para esta função.
Sintaxe
nome local(campo)
| Argumento | Descrição |
|---|---|
| campo | O nome do campo cujo atributo de nome local pretende devolver. |
Exemplo
Está a criar um modelo de formulário que é utilizado para permitir aplicações. O modelo de formulário tem uma ligação de dados a um método num serviço Web. Este método requer o valor do atributo local-name do campo para o número de licença do empreiteiro. O nome do campo do número de licença é fldLicenseNumber.
Tem um campo que irá conter o valor do atributo de nome local. Para obter automaticamente o valor do atributo de nome local do campo de número de licença, utilize a seguinte fórmula como o valor predefinido para o campo que irá conter o valor do atributo de nome local:
local-name(fldLicenseNumber)
nome
Devolve o prefixo de nome e espaço de nomes de um campo ou grupo.
Observação
- Se o argumento for um campo de repetição ou um grupo de repetição, a função devolve o nome e o prefixo do primeiro campo de repetição ou grupo de repetição no formulário.
- Quando um utilizador preenche um formulário com base num modelo de formulário preparado para browser, uma fórmula que utiliza esta função envia dados de formulário para o servidor para obter o valor devolvido para esta função.
Sintaxe
nome(campo)
| Argumento | Descrição |
|---|---|
| campo | O nome do campo cujo nome e prefixo de espaço de nomes pretende devolver. |
Exemplo
Está a criar um modelo de formulário que é utilizado para permitir aplicações. O modelo de formulário tem uma ligação de dados a um método num serviço Web. Este método requer o atributo name do campo para o número de licença do empreiteiro. O nome do campo do número de licença é fldLicenseNumber.
Tem um campo que irá conter o valor do atributo name. Para obter automaticamente o valor do atributo name, utilize a seguinte fórmula como o valor predefinido para o campo:
name(fldLicenseNumber)
namespace-uri
Devolve o espaço de nomes completo de um campo ou grupo.
Observação
- Se o argumento for um conjunto de campos ou grupos, a função devolve o espaço de nomes do primeiro campo ou grupo no formulário.
- Quando um utilizador preenche um formulário de browser, uma fórmula que utiliza esta função envia dados de formulário para o servidor para obter o valor devolvido para esta função.
Sintaxe
namespace-uri(campo)
| Argumento | Descrição |
|---|---|
| campo | O nome do campo cujo URI do espaço de nomes pretende obter. |
Exemplo
Está a criar um modelo de formulário que é utilizado para permitir aplicações. O modelo de formulário submete dados para um serviço Web. Para processar os dados de um formulário com base no modelo de formulário, o serviço Web requer o URI do espaço de nomes de um campo de elemento específico na origem de dados. O campo no modelo de formulário que contém os dados do URI do espaço de nomes tem o nome fldComplete.
Tem um campo que irá conter o URI do espaço de nomes do campo do elemento. Para obter automaticamente o URI do espaço de nomes, utilize a seguinte fórmula como o valor predefinido para o campo que irá conter o URI do espaço de nomes:
namespace-uri(fldComplete)
posição
Devolve o índice (ou posição) de um campo ou grupo relativamente aos outros campos ou grupos no mesmo grupo principal.
Observação
Esta função não está disponível em modelos de formulário de browser.
Sintaxe
position()
Exemplo
Está a criar um modelo de formulário que os fornecedores irão preencher para comunicar os respetivos inventários de produtos. As informações do produto são armazenadas em campos num grupo de repetição. O grupo de repetição está vinculado a uma tabela de repetição, que permite que um fornecedor adicione informações de produtos novas ou revistas.
Na primeira coluna da tabela de repetição, quer apresentar o número da linha numa caixa de texto. Para apresentar automaticamente o número da linha quando o fornecedor adicionar um novo produto à tabela de repetição, utilize a seguinte fórmula como o valor predefinido para a caixa de texto:
position()
Funções matemáticas
Normalmente, as fórmulas que contêm funções matemáticas requerem argumentos que sejam números inteiros ou valores decimais. Para garantir que os argumentos são valores inteiros ou decimais em vez de valores nulos, clique emOpções> de Formulário de Ficheiro>Avançadas e, em seguida, certifique-se de que a caixa Tratar valores em branco como zero marcar está selecionada.
méd.
Calcula a média dos valores numéricos num campo que se encontra num grupo de repetição.
Observação
O campo de repetição tem de ser um tipo de dados numérico e ser incluído num grupo.
Sintaxe
avg(campo)
| Argumento | Descrição |
|---|---|
| campo | Os nomes do campo de repetição no grupo para o qual pretende calcular o valor médio. |
Exemplo
Está a criar um modelo de formulário cujos formulários serão utilizados pelos fornecedores para comunicar os respetivos produtos e inventários. O modelo de formulário contém um campo de repetição denominado fldPrice, que se encontra num grupo de repetição que contém os dados sobre cada produto que é vendido pelo fornecedor. O grupo está vinculado a um controlo de tabela repetido.
Tem um campo no modelo de formulário que irá conter o preço médio de todos os produtos vendidos por esse fornecedor. Para calcular o preço médio, utilize a seguinte fórmula no campo para o preço médio:
avg(fldPrice)
booliano
Devolve true se existir um campo ou grupo. Caso contrário, devolve false.
Isto devolverá verdadeiro mesmo que um controlo associado ao campo tenha sido eliminado, mas o campo ainda exista.
Sintaxe
booleano(campo)
| Argumento | Descrição |
|---|---|
| campo | Um campo de repetição ou um grupo de repetição a ser verificado por esta função. |
Exemplo
Está a criar um modelo de formulário que os fornecedores irão utilizar para comunicar os respetivos inventários de produtos. As informações do produto são armazenadas em campos diferentes num grupo de repetição denominado grpProduct. Cada grupo de repetição contém campos que têm informações sobre cada produto. Se o fornecedor fornecer informações sobre sete produtos, o formulário conterá sete grupos repetidos.
O grupo de repetição está vinculado a um controlo de tabela de repetição, que permite ao fornecedor adicionar informações de produtos novas ou revistas. O fornecedor pode adicionar ou eliminar linhas da tabela de repetição.
Pretende apresentar uma caixa de diálogo se o utilizador remover todas as linhas na tabela de repetição. Adiciona um campo à origem de dados que contém a palavra "verdadeiro" se o controlo de tabela de repetição tiver, pelo menos, uma linha e a palavra "falso" se o controlo de tabela de repetição não tiver linhas.
Pode configurar uma regra no controlo de tabela de repetição para apresentar uma caixa de diálogo se o valor no campo for falso. Para determinar automaticamente se a tabela de repetição contém, pelo menos, uma linha, utilize a seguinte fórmula como o valor predefinido para o campo que contém a palavra "verdadeiro" ou "falso":
booleano(grpProduct)
teto
Arredonda um número por cima para o número inteiro mais próximo.
Sintaxe
teto(número)
| Argumento | Descrição |
|---|---|
| número | O nome do campo, que tem um valor numérico. |
Exemplo
Você está projetando um modelo de formulário de relatório de despesas para sua empresa. As despesas são enviadas a um serviço Web que tem um parâmetro que aceita apenas números inteiros. O valor da despesa que é enviado a esse parâmetro deve ser arredondado para o valor inteiro mais alto. O valor da despesa é armazenado em um campo chamado fldExpenseAmount e o valor inteiro é armazenado em outro campo. Para calcular o valor inteiro mais alto, use a seguinte fórmula como o valor padrão para o outro campo:
ceiling(fldExpenseAmount)
Se um usuário criar um formulário com base no modelo de formulário e inserir 145.87 no campo fldExpenseAmount, o valor no campo que contém a fórmula será 146.
Eval
Retorna os valores de um campo ou grupo. O segundo argumento define a expressão a ser calculada para o campo ou grupo. Normalmente, a função eval é aninhada dentro de uma função que opera em um campo ou grupo, como a soma ou avg.
Sintaxe
eval(field, expression)
| Argumento | Descrição |
|---|---|
| campo | O nome do campo ou grupo cujos valores serão avaliados pela expressão no segundo argumento. |
| expressão | A expressão que será aplicada ao primeiro argumento. A expressão pode ser uma função XPath ou uma expressão que está entre aspas duplas (" "). |
Exemplo
Você está projetando um modelo de formulário de relatório de despesas para sua empresa. O modelo de formulário contém um campo chamado fldTotal que contém um valor de despesa. O campo fldTotal faz parte de um grupo repetido chamado grpExpenses. Outro campo está associado a uma caixa de texto que contém a soma de todas as despesas. Para exibir a soma de todas as despesas à medida que o usuário insere um valor de despesa, use a seguinte fórmula no campo de despesas totais:
eval(grpExpenses,sum(fldTotal))
false
Retorna false.
Sintaxe
false()
Essa função não usa argumentos.
Exemplo
Você está projetando um modelo de formulário cujos formulários serão usados por empreiteiros para solicitar licenças de construção. O modelo de formulário tem duas seções: uma seção para informações de contato e outra seção para obter informações relacionadas à licença de construção. Ao preencher esse formulário, os empreiteiros precisarão preencher completamente a seção de informações de contato antes de poderem preencher a seção de permissão de construção.
Para fazer isso, você criará uma regra para definir o valor de um campo booliano como false se qualquer um dos campos na seção de informações de contato estiver em branco. Um campo de valor booliano pode ter um valor booliano verdadeiro ou um valor falso booliano. Você também configura a formatação condicional para ocultar o controle de seção que contém as informações de permissão de construção se o valor do campo booliano for falso.
Para ocultar o controle de seção que contém os campos para as informações de permissão de construção, configure uma regra para executar essa função no campo booliano se qualquer um dos campos na seção de informações de contato estiver em branco.
chão
Arredonda um número para baixo até o número inteiro mais próximo.
Sintaxe
floor(number)
| Argumento | Descrição |
|---|---|
| número | O nome do campo, que tem um valor numérico. |
Exemplo
Você está projetando um modelo de formulário de relatório de despesas para sua empresa. As despesas são enviadas para um serviço Web que usa um parâmetro que aceita apenas números inteiros. O valor da despesa que é enviado a esse parâmetro deve ser arredondado para o valor inteiro inferior. O valor da despesa é armazenado em um campo chamado fldExpenseAmount e o valor inteiro é armazenado em outro campo. Para calcular o valor inteiro inferior, use a seguinte fórmula como o valor padrão para o outro campo:
floor(fldExpenseAmount)
Max
Retorna o maior número em um campo ou grupo.
Sintaxe
max(field)
| Argumento | Descrição |
|---|---|
| campo | Um campo repetido em um grupo ou em um campo em um grupo repetido para o qual você deseja encontrar o valor mais alto. |
Exemplo
Você está projetando um modelo de formulário cujos formulários serão usados pelos fornecedores para relatar seus inventários de produtos. O modelo de formulário contém um grupo repetido que inclui vários campos que contêm dados sobre os produtos dos fornecedores. Um campo chamado fldPrice no grupo repetido contém o preço de um produto.
Outro campo na fonte de dados do modelo de formulário conterá o preço mais alto de todos os produtos vendidos por esse fornecedor. Para retornar o preço mais alto, use a seguinte fórmula no campo de preço mais alto:
max(fldPrice)
mín.
Retorna o menor número em um campo ou grupo.
Sintaxe
min(field)
| Argumento | Descrição |
|---|---|
| campo | Um campo repetido em um grupo ou em um campo em um grupo repetido para o qual você deseja encontrar o valor mais alto. |
Exemplo
Você está projetando um modelo de formulário cujos formulários serão usados pelos fornecedores para relatar seus inventários de produtos. O modelo de formulário contém um grupo repetido que inclui vários campos que contêm dados sobre os produtos de fornecedores. Um campo chamado fldPrice no grupo repetido contém o preço de um produto.
Outro campo na fonte de dados do modelo de formulário conterá o menor preço de todos os produtos vendidos por esse fornecedor. Para retornar o preço mais baixo, use a seguinte fórmula no campo de preço mais baixo:
min(fldPrice)
não
Retorna true se um valor booliano for falso ou nulo. Retorna false se o valor booliano for verdadeiro ou não nulo.
Sintaxe
not(boolean_value)
| Argumento | Descrição |
|---|---|
| boolean_value | Um campo com um tipo de dados booliano. |
Exemplo
Você está projetando um modelo de formulário cujos formulários serão usados por empreiteiros para solicitar licenças de construção. O modelo de formulário tem uma seção para informações de contato e outra seção para obter informações relacionadas à licença de construção. Ao preencher esse formulário, os empreiteiros precisarão preencher completamente a seção de informações de contato antes de poderem preencher a seção de permissão de construção.
Para fazer isso, você criará uma regra que define o valor de um campo booliano como false se qualquer um dos campos na seção de informações de contato ficar em branco. Um campo valor booleano pode ter o valor booleano verdadeiro ou o valor booleano falso. Em seguida, utilize a mesma fórmula para ocultar o controlo de secção que contém as informações de autorização de construção se o valor do campo Booleano for falso. Para definir esta regra, utilize a seguinte fórmula para definir o campo Booleano como falso:
not(true())
número
Converte um valor num número.
A função devolve NaN se o valor no argumento não puder ser convertido num número.
Sintaxe
number(value)
ArgumentDescription
valueO campo com um valor a converter num número.
Exemplo
Está a criar um modelo de formulário cujos formulários serão utilizados pelos empreiteiros para solicitar licenças de construção. O modelo de formulário contém uma secção onde o empreiteiro pode introduzir o endereço da empresa. Para verificar se o empreiteiro está a introduzir um endereço válido, utilize uma ligação de dados a um serviço Web que possa verificar o endereço. Se o endereço for verificado, o empreiteiro pode submeter o formulário para uma base de dados SQL. A base de dados SQL utiliza um campo de texto para o número de endereço e o nome da rua. O serviço Web requer que o número de endereço seja um tipo de dados numérico e que o nome da rua seja um tipo de dados de texto.
Para submeter dados para o serviço Web e para a base de dados SQL, o endereço tem de ser armazenado como dois tipos de dados diferentes:
- Para submeter o endereço para o serviço Web, o número de endereço tem de ser um tipo de dados numérico e o nome da rua tem de ser um tipo de dados de texto.
- Para submeter o endereço para a base de dados SQL, o número de endereço e o nome da rua têm de ser um tipo de dados de texto.
Também quer que o empreiteiro introduza a morada dele apenas uma vez. Para converter o endereço para os tipos de dados corretos e ajudar a garantir que o empreiteiro introduz o endereço apenas uma vez, o modelo de formulário contém um campo denominado fldAddressNumber para introduzir o número de endereço e outro campo para introduzir o nome da rua. Ambos os campos são configurados como tipos de dados de texto.
Para submeter o número de endereço para o serviço Web, tem de converter os dados no campo fldAddressNumber (armazenado como um tipo de dados de texto) num tipo de dados numérico. O valor do número de endereço convertido num tipo de dados numérico é armazenado noutro campo configurado para armazenar tipos de dados numéricos.
Para converter o número de endereço de um tipo de dados de texto num tipo de dados numérico, utilize a seguinte fórmula como o valor predefinido para o campo fldAddressNumber:
number(fldAddressNumber)
nz
Devolve um campo ou grupo com todos os campos em branco substituídos por zero (0).
Sintaxe
nz(campo)
| Argumento | Descrição |
|---|---|
| campo | O campo que pretende marcar para um valor. |
Exemplo
Está a criar um modelo de formulário que os fornecedores irão preencher para comunicar os respetivos inventários de produtos. O fornecedor irá submeter os respetivos inventários de produtos a um Serviço Web através de um formulário baseado no modelo de formulário. O método do Serviço Web requer que todos os elementos que contêm dados numéricos tenham um valor numérico. O Serviço Web rejeita um formulário que contém um elemento numérico vazio.
O modelo de formulário contém um campo denominado fldAvailability que contém um número correspondente à capacidade do fornecedor de fornecer este produto. O fornecedor pode introduzir um número neste campo. Para ajudar a garantir que o fornecedor pode submeter o formulário com base no modelo de formulário para o serviço Web e definir automaticamente o valor do campo como zero se o fornecedor não introduzir um número, utilize a seguinte fórmula como o valor predefinido para este campo:
nz(fldAvailability)
round
Arredonda um número para o número inteiro mais próximo.
Se o valor não inteiro estiver exatamente a meio caminho entre dois valores inteiros arredondados, o valor devolvido é o valor inteiro maior seguinte.
Sintaxe
round(number)
| Argumento | Descrição |
|---|---|
| número | O campo que contém o número que será arredondado com esta fórmula. |
Exemplo
Está a criar um modelo de formulário cujos formulários serão utilizados pelos fornecedores para comunicar os respetivos inventários de produtos. O modelo de formulário contém um grupo de repetição que inclui vários campos que contêm dados sobre os produtos dos fornecedores. Um dos campos, denominado fldPrice, no grupo de repetição contém o preço de um produto.
O modelo de formulário tem uma ligação de dados de submissão a um serviço Web. O método do serviço Web requer que cada preço seja arredondado para um valor inteiro. Para enviar o valor adequado para o método do serviço Web, adicione um campo de repetição à origem de dados. Este campo utiliza a seguinte fórmula para arredondar o preço no campo fldPrice para um valor inteiro:
round(fldPrice)
soma
Devolve a soma de todos os campos num campo ou grupo. Cada campo é convertido primeiro num valor numérico.
Sintaxe
sum(field)
| Argumento | Descrição |
|---|---|
| campo | O nome de um campo num grupo de repetição ou um campo de repetição num grupo cujos valores serão adicionados. Para adicionar campos de dois grupos diferentes, utilize o operador união (|) para separar os argumentos. Por exemplo: sum( nome do campo 1 | nome do campo 2). |
Exemplo
Está a criar um modelo de formulário de relatório de despesas. O modelo de formulário tem um grupo que contém itens de despesas. A quantidade de cada item é armazenada num campo com o nome fldExpenseAmount. O grupo está vinculado a uma tabela de repetição que apresenta cada item de despesa como uma linha. O modelo de formulário contém um controlo de caixa de texto que apresenta o total de despesas. Para mostrar o total de despesas, o controlo da caixa de texto contém a seguinte fórmula:
sum(fldExpenseAmount)
verdadeiro
Devolve true.
Sintaxe
true()
Esta função não utiliza argumentos.
Exemplo
Está a criar um modelo de formulário cujos formulários serão utilizados pelos empreiteiros para solicitar licenças de construção. O modelo de formulário contém uma secção para informações de contacto e outra secção para obter informações relacionadas com a licença de construção. Ao preencher este formulário, os empreiteiros terão de preencher completamente a secção de informações de contacto antes de poderem preencher a secção de licença de construção.
Para tal, crie uma regra que define o valor de um campo Booleano como verdadeiro se todos os campos na secção de informações de contacto contiverem dados. Um campo valor booleano pode ter o valor Booleano verdadeiro ou falso. Se o valor do campo Booleano for verdadeiro, é apresentado o controlo de secção que contém as informações de autorização de construção.
Para mostrar o controlo de secção que contém as informações de autorização de construção, configure uma regra para executar esta função no campo Booleano se todos os campos na secção de informações de contacto contiverem dados.
Funções de texto
concat
Combina dois ou mais campos de cadeias de texto numa cadeia de texto.
Sintaxe
concat(texto1; texto2; ...)
| Argumento | Descrição |
|---|---|
| texto1 | Um campo que contém texto a ser combinado numa única linha de texto com o texto em argumento2. |
| texto2, ... | Minério ou mais campos adicionais que contêm texto a combinar com o campo anterior. Separe os campos de texto com uma vírgula. |
Exemplo
Está a estruturar um modelo de formulário que contém um campo com o nome fldFirstName e um campo com o nome fldLastName. Adicione a seguinte fórmula a um terceiro campo para que contenha o texto "Este formulário foi preenchido pelo <apelido do nome><> próprio.":
concat("Este formulário foi preenchido por ", fldFirstName, " ", fldLastName, ".")
Observação
Qualquer texto real introduzido como um argumento textual, incluindo espaços ou pontuação, tem de ser inserido entre aspas (").
contém
Devolve true se o primeiro campo ou cadeia de texto contiver o segundo. Caso contrário, devolve false.
Sintaxe
contém(within_text, find_text)
| Argumento | Descrição |
|---|---|
| no_texto | O campo que contém o texto a procurar. |
| texto_procurado | O campo que contém o texto ou texto entre aspas duplas (" ") a procurar no primeiro argumento. |
Exemplo
Está a estruturar um modelo de formulário com três campos de texto. A primeira irá permitir que um utilizador introduza uma longa quantidade de texto no primeiro controlo de texto, com o nome fldText. O segundo permitirá que um utilizador introduza um pequeno segmento de texto e tem o nome fldFindText. A terceira caixa de texto irá comparar a segunda caixa de texto com a primeira e indicar se o valor no segundo campo é encontrado no primeiro campo e apresentar o resultado. Teria a seguinte fórmula como o valor predefinido:
contains(fldText,fldFindText)
normalize-space
Remove o espaço em branco de uma cadeia de texto.
Observação
Isto removerá todos os espaços em branco à esquerda, à direita e repetidos de um campo com um tipo de dados de texto.
Sintaxe
normalize-space(texto)
| Argumento | Descrição |
|---|---|
| text | O texto que contém os espaços em branco à esquerda, à direita ou repetidos que pretende remover. Coloque o texto entre aspas duplas (" "). |
Exemplo
Cria um modelo de formulário que contém um campo com o nome fldText (que está vinculado a um controlo de caixa de texto). Para normalizar qualquer texto introduzido no primeiro campo e apresentar o valor no primeiro campo sem excesso de espaço em branco, adicione um segundo campo com a seguinte fórmula como o valor predefinido:
normalize-space(fldText)
começa com
Devolve true se o primeiro campo ou cadeia de texto começar com o segundo. Caso contrário, devolve false.
Sintaxe
starts-with(texto, start_text)
| Argumento | Descrição |
|---|---|
| text | O nome do campo que contém o texto a procurar. Separe os argumentos por uma vírgula. |
| start_text | O texto a ser pesquisado no início do campo especificado no primeiro argumento. Este argumento pode ser um campo ou texto entre aspas duplas (" "). |
Exemplo
Está a estruturar um modelo de formulário com três campos de texto. A primeira irá permitir que um utilizador introduza uma longa quantidade de texto no primeiro controlo de texto, com o nome fldText. O segundo permitirá que um utilizador introduza um pequeno segmento de texto e tem o nome fldFindText. A terceira caixa de texto irá comparar a segunda caixa de texto com a primeira e indicar se o valor no primeiro campo começa com o valor no segundo campo e apresenta o resultado. Teria a seguinte fórmula como o valor predefinido:
starts-with(fldText, fldFindText)
cadeia de caracteres
Converte um valor numa cadeia de texto.
Sintaxe
cadeia(valor)
| Argumento | Descrição |
|---|---|
| valor | O campo que contém o valor a converter em texto. |
Exemplo
Está a criar um modelo de formulário cujos formulários serão utilizados pelos empreiteiros para solicitar licenças de construção. O modelo de formulário contém uma secção na qual o empreiteiro pode introduzir o endereço da empresa. Para verificar se o empreiteiro está a introduzir um endereço válido, o modelo de formulário tem uma ligação de dados a um serviço Web que pode verificar o endereço. Se o endereço for verificado, o empreiteiro pode submeter o formulário para uma base de dados SQL. A base de dados SQL utiliza um campo de texto para o endereço de rua. O serviço Web requer que o número de endereço seja um tipo de dados numérico e que o nome da rua seja um tipo de dados de texto.
Para submeter dados para o serviço Web e para a base de dados SQL, o endereço tem de ser armazenado em dois tipos de dados diferentes:
- Para submeter o endereço para o serviço Web, o número de endereço tem de ser um tipo de dados numérico.
- Para submeter o endereço para a base de dados SQL, o número de endereço e o nome da rua têm de ser um tipo de dados de texto.
Também quer que o empreiteiro introduza a morada dele apenas uma vez. Para converter o endereço para os tipos de dados corretos e ajudar a garantir que o empreiteiro introduz o endereço apenas uma vez, o formulário contém um campo para introduzir o número de endereço denominado fldAddressNumber e outro campo para introduzir o nome da rua. O campo fldAddressNumber é um tipo de dados numérico e o campo de nome de rua é um tipo de dados de texto.
Para submeter o endereço completo (o número de endereço e o nome da rua) para a base de dados SQL, tem de combinar os valores no campo fldAddressNumber e o campo de nome de rua num valor que seja um tipo de dados de texto. Primeiro, tem de converter os dados numéricos no campo fldAddressNumber, que armazena os dados como um tipo de dados numérico, num tipo de dados de texto. Adicione um campo à origem de dados que irá conter o endereço completo como um tipo de dados de texto.
Para converter os dados de texto no campo fldAddressNumber num tipo de dados de texto para que possa utilizar o Serviço Web, configure outro campo que contenha o número de endereço como um tipo de dados de texto. Para converter o número de endereço de um tipo de dados numérico num tipo de dados de texto, utilize a seguinte fórmula como o valor predefinido para este campo:
string(fldAddressNumber)
comprimento da cadeia
Devolve o número de carateres numa cadeia de texto.
Sintaxe
string-length(texto)
| Argumento | Descrição |
|---|---|
| text | O campo cujo valor é o texto que pretende contar. |
Exemplo
Está a estruturar um modelo de formulário que contém um campo com o nome fldText, que está vinculado a um controlo de caixa de texto. O modelo de formulário inclui um segundo campo que é utilizado para contar o número de carateres introduzidos no primeiro formulário. Para tal, o segundo campo conteria a seguinte fórmula como o valor predefinido:
string-length(fldText)
subcadeia
Devolve uma parte específica de uma cadeia de texto. O segundo argumento especifica a posição inicial e o terceiro argumento especifica quantos carateres incluir.
Sintaxe
subcadeia(texto, start_position, char_count)
| Argumento | Descrição |
|---|---|
| text | Um campo com um tipo de dados de texto ou texto entre aspas duplas (" "). A função procura este texto e devolve todos os carateres da posição especificada no segundo argumento até ao número de carateres especificados no terceiro argumento ou até ao fim do texto, o que ocorrer primeiro. |
| start_position | A posição inicial do texto a obter a partir do primeiro argumento. Este argumento tem de ser um número inteiro ou uma referência a um campo configurado para armazenar tipos de dados de número inteiro (número inteiro). |
| char_count | O número de carateres que pretende obter, começando na posição inicial especificada no segundo argumento. Este argumento tem de ser um número inteiro ou uma referência a um campo configurado para armazenar tipos de dados de número inteiro (número inteiro). |
Exemplo
Está a estruturar um modelo de formulário que contém os seguintes campos e controlos:
- Um campo com o nome fldText vinculado a um controlo de caixa de texto. Este campo contém o texto que a função procura.
- Um campo com o nome fldStartingPosition que está vinculado a um controlo de caixa de texto. Este campo está configurado como um tipo de dados de número inteiro. O campo contém a posição inicial da função.
- Um campo com o nome fldNumberOfCharacters vinculado a um controlo de caixa de texto. Este campo está configurado como um tipo de dados de número inteiro. O campo contém o número de carateres que a função devolve.
- Um controlo de caixa de texto que mostra os resultados da função. O controlo da caixa de texto contém a seguinte fórmula:
subcadeia(fldText, fldStartingPosition, fldNumberOfCharacters)
Se um utilizador introduzir "Este formulário foi criado a partir de um modelo de formulário do InfoPath". na primeira caixa de texto, seguida de 4 no segundo e 16 no terceiro, a quarta caixa de texto conteria "o formulário foi criado".
subcadeia após
Devolve o texto na primeira cadeia de texto que se segue à primeira ocorrência da segunda cadeia de texto.
Sintaxe
subcadeia após(texto, find_text)
| Argumento | Descrição |
|---|---|
| text | Um campo com um tipo de dados de texto ou texto entre aspas duplas (" "). A função procura o texto neste argumento e, em seguida, devolve todos os carateres que se seguem ao texto no segundo argumento. |
| texto_procurado | O texto a procurar no texto do primeiro argumento. O texto pode ser o valor no campo com um tipo de dados de texto ou texto entre aspas duplas (" "). A função procura o texto no primeiro argumento para este texto e, em seguida, devolve todos os carateres que se seguem ao texto neste argumento. |
Exemplo
Está a estruturar um modelo de formulário que contém os seguintes campos e controlos:
- Um campo com o nome fldText vinculado a um controlo de caixa de texto. Este campo contém o texto que a função procura.
- Um campo com o nome fldSubstringText vinculado a um controlo de caixa de texto. Este campo contém o texto que é o segundo argumento da função.
- Um controlo de caixa de texto que mostra os resultados da função. O controlo da caixa de texto contém a seguinte fórmula:
substring-after(fldText, fldSubstringText)
Se um utilizador introduzir "Este formulário foi criado a partir de um modelo de formulário do InfoPath". no campo fldText e "InfoPath" no segundo, o controlo da terceira caixa de texto conteria "modelo de formulário".
subcadeia-antes
Devolve o texto na primeira cadeia de texto que precede a primeira ocorrência da segunda cadeia de texto.
Sintaxe
subcadeia-antes(texto, find_text)
| Argumento | Descrição |
|---|---|
| text | Um campo com um tipo de dados de texto ou texto entre aspas duplas (" "). A função procura o texto neste argumento e, em seguida, devolve todos os carateres antes do texto no segundo argumento, find_text. |
| texto_procurado | O valor a procurar no argumento de texto. Este valor pode ser o valor num campo com um tipo de dados de texto ou texto entre aspas duplas (" "). A função procura o texto no primeiro argumento (texto) para este texto e, em seguida, devolve todos os carateres antes do texto neste argumento. |
Exemplo
Está a estruturar um modelo de formulário com os seguintes campos e controlos:
- Um campo com o nome fldText vinculado a um controlo de caixa de texto. Este campo contém o texto que a função procura.
- Um campo com o nome fldSubstringText vinculado a um controlo de caixa de texto. Este campo contém o texto que é o segundo argumento da função.
- Controlo de caixa de texto Aa que mostra os resultados da função. O controlo da caixa de texto contém a seguinte fórmula:
substring-before(fldText, fldSubstringText)
Se um utilizador introduzir "Este formulário foi criado a partir de um modelo de formulário do InfoPath". no campo fldText e "criado" no segundo, o terceiro controlo de caixa de texto conteria "Este formulário era".
tradução
Devolve a primeira cadeia de texto com cada caráter na segunda cadeia de texto substituída pelo caráter na posição correspondente na terceira cadeia de texto.
Sintaxe
translate(text, find_chars, replace_chars)
| Argumento | Descrição |
|---|---|
| text | O nome do campo que contém o texto cujos carateres serão substituídos. Separe os argumentos com uma vírgula. |
| find_chars | Um caráter ou o valor de um campo com um tipo de dados de texto que será substituído pelos carateres no terceiro argumento. Separe os argumentos com uma vírgula. |
| replace_chars | Um caráter ou o valor de um campo por um tipo de dados de texto que substituirá todas as instâncias do caráter no segundo argumento. |
Exemplo
Está a criar um modelo de formulário cujos formulários serão utilizados pelos empreiteiros para solicitar licenças de construção. O modelo de formulário contém uma secção na qual o empreiteiro pode introduzir o endereço da empresa. A secção contém um campo com o nome fldStreetAddress que está vinculado a um controlo de caixa de texto no qual o empreiteiro pode introduzir a sua morada.
Para verificar se o empreiteiro está a introduzir um endereço válido, tem uma ligação de dados a um serviço Web que pode verificar o endereço. O serviço Web requer carateres em minúsculas no endereço.
Para converter qualquer caráter em maiúsculas no endereço da rua em minúsculas, adicione outro campo à origem de dados para conter o endereço de rua que é convertido em carateres em minúsculas. O valor predefinido deste campo contém a seguinte fórmula:
translate(fldStreetAddress, ABCDEFGHIJKLMNOPQRSTUVWXYZ, abcdefghijklmnopqrstuvwxyz)
Funções de URL
SharePointListUrl
Devolve o endereço da lista ou biblioteca de formulários do SharePoint onde o formulário está alojado (apenas no InfoPath 2010).
Sintaxe
SharePointListUrl()
Esta função não utiliza argumentos.
Exemplo
Está a estruturar um modelo de formulário para uma lista do SharePoint e pretende adicionar uma ligação para a localização onde a lista está alojada, como "http://sharepointserver/site/list/". Para tal, adicione um controlo de hiperligação e defina-o como Só de Leitura e, em seguida, defina o valor predefinido do campo ao qual o controlo está ligado da seguinte forma:
SharePointListUrl()
Observação
Se o modelo de formulário não estiver alojado num servidor do SharePoint, a função SharePointListUrl() só devolverá "http://sharepointserver/site/list/".
SharePointServerRootUrl
Devolve o endereço do servidor do SharePoint onde o formulário está alojado (apenas no InfoPath 2010).
Sintaxe
SharePointServerRootUrl()
Esta função não utiliza argumentos.
Exemplo
Está a estruturar um modelo de formulário para uma lista do SharePoint e pretende adicionar uma ligação à raiz do servidor do SharePoint que a lista está alojada, como "http://sharepointserver/site/list/". Para tal, adicione um controlo de hiperligação e defina-o como Só de Leitura e, em seguida, defina o valor predefinido do campo ao qual o controlo está ligado da seguinte forma:
SharePointServerRootUrl()
Observação
Se o modelo de formulário não estiver alojado num servidor do SharePoint, a função SharePointListUrl() só devolverá "http://sharepointserver/site/list/".
SharePointCollectionUrl
Devolve o endereço da coleção de sites do SharePoint onde o formulário está alojado (apenas no InfoPath 2010).
Sintaxe
SharePointCollectionUrl()
Esta função não utiliza argumentos.
Exemplo
Está a criar um modelo de formulário para uma lista do SharePoint e pretende adicionar uma ligação à coleção de sites do servidor do SharePoint onde a lista está alojada, como "http://sharepointserver/sitecollection/". Para tal, adicione um controlo de hiperligação e defina-o como Só de Leitura e, em seguida, defina o valor predefinido do campo ao qual o controlo está ligado da seguinte forma:
SharePointCollectionUrl()
Observação
Se o modelo de formulário não estiver alojado num servidor do SharePoint, a função SharePointListUrl() só devolverá "http://sharepointserver/sitecollection/".
SharePointSiteUrl
Devolve o endereço do site do SharePoint onde o formulário está alojado (apenas no InfoPath 2010).
Sintaxe
SharePointSiteUrl()
Esta função não utiliza argumentos.
Exemplo
Está a estruturar um modelo de formulário para uma lista do SharePoint e pretende adicionar uma ligação ao site do SharePoint onde a lista está alojada, como "http://sharepointserver/site/". Para tal, adicione um controlo de hiperligação e defina-o como Só de Leitura e, em seguida, defina o valor predefinido do campo ao qual o controlo está ligado da seguinte forma:
SharePointSiteUrl()
Observação
Se o modelo de formulário não estiver alojado num servidor do SharePoint, a função SharePointListUrl() só devolverá "http://sharepointserver/site/".
A função userName
userName
Devolve o nome de utilizador da pessoa que preenche o formulário (Microsoft InfoPath 2007 e posterior).
Observação
Se o utilizador estiver a preencher um formulário num browser, o nome de utilizador é obtido do Microsoft Windows SharePoint Services 3.0 ou posterior.
Sintaxe
userName()
Esta função não utiliza argumentos.
Exemplo
Está a criar um modelo de formulário de relatório de despesas para a sua empresa. O seu crédito card empresa envia registos das despesas dos seus funcionários eletronicamente para uma base de dados que a sua empresa mantém. Para obter os registos de despesas de um funcionário, a base de dados precisa do nome de utilizador do funcionário que está a preencher um formulário baseado no modelo de formulário.
Adicione um campo à origem de dados do modelo de formulário para armazenar o nome de utilizador do funcionário. Também pode criar uma ligação de dados de consulta que utiliza o valor deste campo numa consulta para obter as despesas.
Para se certificar de que o funcionário que preenche o relatório de despesas utiliza o nome de utilizador correto, vinculte o campo a um controlo de caixa de texto. Para apresentar o nome de utilizador do utilizador que cria um formulário com base neste modelo de formulário, utilize a seguinte fórmula como o valor predefinido de um campo vinculado ao controlo de caixa de texto:
userName()