Fórmulas Utilizadas: mudanças entre as edições
Sem resumo de edição |
|||
| (28 revisões intermediárias por 8 usuários não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
== Ordenação de Relatório == | == Ordenação de Relatório (Data) == | ||
Por padrão a ordem dos números no [[Gerador de Relatórios]] ocorre como string, assim quando impresso obedece a sequencia como o exemplo abaixo. | |||
1<br> | |||
10<br> | |||
1<br> | |||
12<br> | |||
21<br> | |||
Dessa forma se faz necessário definir o número de dígitos através de fórmula. Então numa situação onde se quer ordenar, por exemplo, os meses de um relatório por vencimentos para que considere os dois dígitos deve-se seguir a estrutura da fórmula destacada abaixo. | |||
'''right("00" + totext(month({Documento.Vencto})),2)''' | |||
* A informação ''month'' faz referência ao agrupamento por mês. | |||
* Dentro das chaves deve-se inserir o item que deseja ordenar. | |||
* O número 2 corresponde a quantidade de dígitos que deseja considerar. | |||
== Ordenação de data em relatório == | |||
Ao informar uma data no agrupamento do relatório, a ordenação também acontece como string, sendo trazido assim:<br> | |||
01/02/2024<br> | |||
02/12/2023<br> | |||
02/11/2024<br> | |||
15/10/2022<br> | |||
21/12/2025<br> | |||
Para definir a ordenação, considerando as datas crescentes no formato DD/MM/AAAA, basta utilizar a formula a seguir: | |||
'''ToText({Documento.Vencto}, "yyyy/MM/dd")''' | |||
Caso seja necessário agrupar por mês, para que o ano também seja considerado, basta remover o dia da fórmula, ficando: | |||
'''ToText({Documento.Vencto}, "yyyy/MM")''' | |||
Caso seja necessário agrupar somente pelo ano manter apenas o ano na fórmula, ficando: | |||
'''ToText({Documento.Vencto}, "yyyy")''' | |||
== Ordenação de Relatório (Sequência de números cardinais) == | |||
Se você precisa criar uma numeração sequencial, começando em 1 e seguindo até o último registro do relatório, utilize a fórmula: | |||
WhilePrintingRecords; | |||
NumberVar Seq; | |||
If OnFirstRecord Then Seq := 0; | |||
Seq := Seq + 1; | |||
Isso fará com que a sequência seja exibida assim: | |||
1,00 | |||
2,00 | |||
3,00 | |||
4,00 | |||
Para exibir a sequência sem casas decimais, utilize a função ToText com precisão zero: | |||
Totext ((WhilePrintingRecords; | |||
NumberVar Seq; | |||
If OnFirstRecord Then Seq := 0; | |||
Seq := Seq + 1;), 0) | |||
O resultado ficará assim: | |||
1 | 1 | ||
2 | |||
3 | |||
4 | |||
== Aumentar Casas Decimais na Visualização == | |||
Para aumentar a quantidade de casas decimais mostradas na visualização deve utilizar a seguinte formula: | |||
''' | '''totext({RelOrdemProducao.Qtde}, 4)''' | ||
* Dentro das chaves deve-se inserir o item que deseja ordenar. | * Dentro das chaves deve-se inserir o item que deseja ordenar. | ||
* O número | * O número 4 corresponde a quantidade de casas decimais que deseja ser mostrado. | ||
Caso seja uma fórmula por grupo deve utilizar a: | |||
'''totext(Sum ({RelEstoqueAnterior.Saldo}, {@FormulaGrupo01}),4)''' | |||
== Fórmula IsNull == | |||
A fórmula IsNull é utilizada em relatórios para substituir um valor "Null" do banco de dados por um valor padrão, afim de permitir sua utilização em relatórios. | |||
A sintaxe padrão é: | |||
'''IsNull({Campo},valor_padrao) = valor_padrao''' | |||
== Inserir CEP com máscara em Relatório / Formulário == | |||
Para utilizar o atributo de CEP no '''Gerador de Relatórios''', basta utilizar a seguinte fórmula: | |||
'''Left ({Pessoa_Cliente.Cep},5) + "-"+ Right ({Pessoa_Cliente.Cep},3)''' | |||
Para utilizar no '''Gerador de Impressões em Formulários''' basta utilizar a seguinte fórmula: | |||
'''ConcatenarValores([[ParteTexto({Pessoa_Cliente.Cep},0,5)]],-,[[ParteTexto({Pessoa_Cliente.Cep},5,3)]],,,,)''' | |||
== Fórmula para contar a quantidade de dias em um intervalo de datas == | |||
Para realizar a contagem de dias entre um intervalo de datas basta utilizar a seguinte fórmula: | |||
'''round({Duplicata.Vencto}-{Duplicata.Emissao})''' | |||
Como parâmetro é possível utilizar qualquer atributo de data dentro do ERP. | |||
Para que o resultado impresso não mostre casas decimais, basta inserir o comando ToText. | |||
Ex: '''ToText(round({Duplicata.Vencto}-{Duplicata.Emissao}),0)''' | |||
Também é possível utilizar o comando "CurrentDate" para que o relatório sempre considere a data do dia. | |||
Ex: '''round({Duplicata.Vencto}-CurrentDate)''' | |||
== Fórmula para coletar somente as Horas em uma coluna que tenha data, hora, minuto e segundo == | |||
Para mostrar as Horas em uma coluna que tenha data, basta utilizar a seguinte fórmula: | |||
'''ToText ({Viagem.HoraInicial}, "HH:mm:ss")''' | |||
Caso queira saber o intervalo de horas use essa formula: | |||
'''DateDiff("h", {Viagem.HoraInicial}, {Viagem.HoraFinal})''' | |||
Como parâmetro é possível utilizar qualquer atributo de data que tenha horas dentro do ERP. | |||
Caso queira também poderá usar somente as hora, ou somente os minutos: HH = Horas; MM = minutos e ss = Segundos | |||
Outra opção para saber o intervalo de horas em um serviço por exemplo, é a seguinte fórmula: | |||
'''timevalue({OrdemServicoServ.HoraFim} - {OrdemServicoServ.HoraInicio})''' | |||
Essa opção é para lançamentos com intervalos mais curtos, como por exemplo um serviço que se inicia às 06:45 e terminar às 07:10, utilizando essa fórmula teremos o resultado de 00:25:00. Caso seja utilizado o "DateDiff", teríamos o resultado de 01:25:00, isso porque o "DateDiff" considera as horas sendo diferentes também, então como houve alteração de 6 pra 7, isso é considerado. O que não ocorre utilizando o TimeValue. | |||
== Imprimir os parâmetros de um filtro pré estabelecido no relatório == | |||
É possível carregar na impressão de um relatório os parâmetros indicados nos filtros, antes da impressão. Para isso, após indicar os filtros no gerador de relatório, basta adicionar uma fórmula (geralmente no cabeçalho) com a seguinte estrutura: | |||
'''"Data de Emissão: " + {?Pedido-DataEmissao}''' | |||
== Fórmula para contar a quantidade de dias, meses ou anos em um intervalo de datas == | |||
Para utilizar a formula: | |||
'''DiferencaDatas({DataInicial}, {DataFinal}, {intervalo})''' <br> | |||
{intervalo}: A diferença que deseja informar. O parâmetro intervalo deve ser uma das seguintes opções:<br> | |||
"dias": Para calcular a diferença em dias.<br> | |||
"meses": Para calcular a diferença em meses.<br> | |||
"anos": Para calcular a diferença em anos.<br> | |||
== Fórmula para mostrar a quantidade total de uma tabela == | |||
Exemplo para utilizar a fórmula: | |||
Texto: "Quantidade de operações no período:" | |||
Fórmula: Count ({NotaFiscal.Numero}) | |||
[[Arquivo:Screenshot 163.png|commoldura|centro]] | |||
== Fórmula condicional no Formulário == | |||
Será utilizada a seguinte fórmula: ValorCondicional(expressao, valorVerdadeiro, valorFalso) | |||
'''"expressao":''' Indicar o atributo que será validado a condicional.<br> | |||
'''"valorVerdadeiro"''': Qual texto ou atribuo retornar caso a expressão indicada anteriormente seja verdadeira. <br> | |||
'''"valorFalso":''' Qual texto ou atribuo retornar caso a expressão indicada anteriormente seja falsa. Caso seja necessário ficar em branco, basta não indicar nada após a última virgula e fechar o parênteses. <br> | |||
== Fórmula para inverter data no Formulário == | |||
Essa fórmula extrai partes específicas da data original e as reorganiza para formar o novo formato yyMMdd. | |||
Resultado final da concatenação: "250801" | |||
Ou seja, a data 01/08/2025 é convertida para o formato yyMMdd como 250801. | |||
Para trazer a data de forma invertida no formato yyMMdd, será utilizada a seguinte fórmula: | |||
'''ConcatenarValores([[ParteTexto({AdiantamentoParceiros.DataRef}, 8, 2)]],"",[[ParteTexto({AdiantamentoParceiros.DataRef}, 3, 2)]],"",[[ParteTexto({AdiantamentoParceiros.DataRef}, 0, 2)]],"","")''' <br> | |||
'''Importante:''' Substitua o campo {AdiantamentoParceiros.DataRef} pelo campo de data desejado, conforme a necessidade do seu formulário. <br> | |||
== Fórmula para exibir valores com sinal negativo == | |||
Esta fórmula é utilizada para apresentar valores numéricos com sinal negativo de forma padronizada, facilitando a leitura em relatórios e telas de sistema. | |||
O objetivo é: | |||
Padronizar a exibição de valores negativos; | |||
Destacar visualmente atributos que representam perdas, ajustes ou reversões; | |||
Evitar confusão com valores positivos em contextos operacionais ou financeiros. | |||
'''Fórmula:''' | |||
if {PedidoItens.QtdeCancelada} > 0 then ToText(({PedidoItens.QtdeCancelada}*-1),2) else | |||
"("+ToText({PedidoItens.QtdeCancelada},2)+")" | |||
Obs: Trocar a campo "PedidoItens.QtdeCancelada" pelo campo que precisa visualizar o sinal negativo. | |||
Edição atual tal como às 14h46min de 28 de janeiro de 2026
Ordenação de Relatório (Data)
Por padrão a ordem dos números no Gerador de Relatórios ocorre como string, assim quando impresso obedece a sequencia como o exemplo abaixo.
1
10
1
12
21
Dessa forma se faz necessário definir o número de dígitos através de fórmula. Então numa situação onde se quer ordenar, por exemplo, os meses de um relatório por vencimentos para que considere os dois dígitos deve-se seguir a estrutura da fórmula destacada abaixo.
right("00" + totext(month({Documento.Vencto})),2)
- A informação month faz referência ao agrupamento por mês.
- Dentro das chaves deve-se inserir o item que deseja ordenar.
- O número 2 corresponde a quantidade de dígitos que deseja considerar.
Ordenação de data em relatório
Ao informar uma data no agrupamento do relatório, a ordenação também acontece como string, sendo trazido assim:
01/02/2024
02/12/2023
02/11/2024
15/10/2022
21/12/2025
Para definir a ordenação, considerando as datas crescentes no formato DD/MM/AAAA, basta utilizar a formula a seguir:
ToText({Documento.Vencto}, "yyyy/MM/dd")
Caso seja necessário agrupar por mês, para que o ano também seja considerado, basta remover o dia da fórmula, ficando:
ToText({Documento.Vencto}, "yyyy/MM")
Caso seja necessário agrupar somente pelo ano manter apenas o ano na fórmula, ficando:
ToText({Documento.Vencto}, "yyyy")
Ordenação de Relatório (Sequência de números cardinais)
Se você precisa criar uma numeração sequencial, começando em 1 e seguindo até o último registro do relatório, utilize a fórmula:
WhilePrintingRecords;
NumberVar Seq;
If OnFirstRecord Then Seq := 0;
Seq := Seq + 1;
Isso fará com que a sequência seja exibida assim:
1,00
2,00
3,00
4,00
Para exibir a sequência sem casas decimais, utilize a função ToText com precisão zero:
Totext ((WhilePrintingRecords;
NumberVar Seq;
If OnFirstRecord Then Seq := 0;
Seq := Seq + 1;), 0)
O resultado ficará assim:
1
2
3
4
Aumentar Casas Decimais na Visualização
Para aumentar a quantidade de casas decimais mostradas na visualização deve utilizar a seguinte formula:
totext({RelOrdemProducao.Qtde}, 4)
- Dentro das chaves deve-se inserir o item que deseja ordenar.
- O número 4 corresponde a quantidade de casas decimais que deseja ser mostrado.
Caso seja uma fórmula por grupo deve utilizar a:
totext(Sum ({RelEstoqueAnterior.Saldo}, {@FormulaGrupo01}),4)
Fórmula IsNull
A fórmula IsNull é utilizada em relatórios para substituir um valor "Null" do banco de dados por um valor padrão, afim de permitir sua utilização em relatórios.
A sintaxe padrão é:
IsNull({Campo},valor_padrao) = valor_padrao
Inserir CEP com máscara em Relatório / Formulário
Para utilizar o atributo de CEP no Gerador de Relatórios, basta utilizar a seguinte fórmula:
Left ({Pessoa_Cliente.Cep},5) + "-"+ Right ({Pessoa_Cliente.Cep},3)
Para utilizar no Gerador de Impressões em Formulários basta utilizar a seguinte fórmula:
ConcatenarValores([[ParteTexto({Pessoa_Cliente.Cep},0,5)]],-,[[ParteTexto({Pessoa_Cliente.Cep},5,3)]],,,,)
Fórmula para contar a quantidade de dias em um intervalo de datas
Para realizar a contagem de dias entre um intervalo de datas basta utilizar a seguinte fórmula:
round({Duplicata.Vencto}-{Duplicata.Emissao})
Como parâmetro é possível utilizar qualquer atributo de data dentro do ERP.
Para que o resultado impresso não mostre casas decimais, basta inserir o comando ToText.
Ex: ToText(round({Duplicata.Vencto}-{Duplicata.Emissao}),0)
Também é possível utilizar o comando "CurrentDate" para que o relatório sempre considere a data do dia.
Ex: round({Duplicata.Vencto}-CurrentDate)
Fórmula para coletar somente as Horas em uma coluna que tenha data, hora, minuto e segundo
Para mostrar as Horas em uma coluna que tenha data, basta utilizar a seguinte fórmula:
ToText ({Viagem.HoraInicial}, "HH:mm:ss")
Caso queira saber o intervalo de horas use essa formula: DateDiff("h", {Viagem.HoraInicial}, {Viagem.HoraFinal})
Como parâmetro é possível utilizar qualquer atributo de data que tenha horas dentro do ERP. Caso queira também poderá usar somente as hora, ou somente os minutos: HH = Horas; MM = minutos e ss = Segundos
Outra opção para saber o intervalo de horas em um serviço por exemplo, é a seguinte fórmula: timevalue({OrdemServicoServ.HoraFim} - {OrdemServicoServ.HoraInicio})
Essa opção é para lançamentos com intervalos mais curtos, como por exemplo um serviço que se inicia às 06:45 e terminar às 07:10, utilizando essa fórmula teremos o resultado de 00:25:00. Caso seja utilizado o "DateDiff", teríamos o resultado de 01:25:00, isso porque o "DateDiff" considera as horas sendo diferentes também, então como houve alteração de 6 pra 7, isso é considerado. O que não ocorre utilizando o TimeValue.
Imprimir os parâmetros de um filtro pré estabelecido no relatório
É possível carregar na impressão de um relatório os parâmetros indicados nos filtros, antes da impressão. Para isso, após indicar os filtros no gerador de relatório, basta adicionar uma fórmula (geralmente no cabeçalho) com a seguinte estrutura:
"Data de Emissão: " + {?Pedido-DataEmissao}
Fórmula para contar a quantidade de dias, meses ou anos em um intervalo de datas
Para utilizar a formula:
DiferencaDatas({DataInicial}, {DataFinal}, {intervalo})
{intervalo}: A diferença que deseja informar. O parâmetro intervalo deve ser uma das seguintes opções:
"dias": Para calcular a diferença em dias.
"meses": Para calcular a diferença em meses.
"anos": Para calcular a diferença em anos.
Fórmula para mostrar a quantidade total de uma tabela
Exemplo para utilizar a fórmula: Texto: "Quantidade de operações no período:" Fórmula: Count ({NotaFiscal.Numero})

Fórmula condicional no Formulário
Será utilizada a seguinte fórmula: ValorCondicional(expressao, valorVerdadeiro, valorFalso)
"expressao": Indicar o atributo que será validado a condicional.
"valorVerdadeiro": Qual texto ou atribuo retornar caso a expressão indicada anteriormente seja verdadeira.
"valorFalso": Qual texto ou atribuo retornar caso a expressão indicada anteriormente seja falsa. Caso seja necessário ficar em branco, basta não indicar nada após a última virgula e fechar o parênteses.
Fórmula para inverter data no Formulário
Essa fórmula extrai partes específicas da data original e as reorganiza para formar o novo formato yyMMdd.
Resultado final da concatenação: "250801"
Ou seja, a data 01/08/2025 é convertida para o formato yyMMdd como 250801.
Para trazer a data de forma invertida no formato yyMMdd, será utilizada a seguinte fórmula:
ConcatenarValores([[ParteTexto({AdiantamentoParceiros.DataRef}, 8, 2)]],"",[[ParteTexto({AdiantamentoParceiros.DataRef}, 3, 2)]],"",[[ParteTexto({AdiantamentoParceiros.DataRef}, 0, 2)]],"","")
Importante: Substitua o campo {AdiantamentoParceiros.DataRef} pelo campo de data desejado, conforme a necessidade do seu formulário.
Fórmula para exibir valores com sinal negativo
Esta fórmula é utilizada para apresentar valores numéricos com sinal negativo de forma padronizada, facilitando a leitura em relatórios e telas de sistema.
O objetivo é:
Padronizar a exibição de valores negativos;
Destacar visualmente atributos que representam perdas, ajustes ou reversões;
Evitar confusão com valores positivos em contextos operacionais ou financeiros.
Fórmula:
if {PedidoItens.QtdeCancelada} > 0 then ToText(({PedidoItens.QtdeCancelada}*-1),2) else
"("+ToText({PedidoItens.QtdeCancelada},2)+")"
Obs: Trocar a campo "PedidoItens.QtdeCancelada" pelo campo que precisa visualizar o sinal negativo.