Como usar as funções Minimum/Maximum, Ceil up/Ceil down (round) e scripts Ruby
Vamos ver como as funções funcionam, usando a tabela de produtos como exemplo.
Esta tabela contém as seguintes colunas:
Nome da marca e modelo;
Imagem;
Preço para junho, julho e agosto.
A tarefa é mostrar o preço mais baixo para todos os três meses.
A primeira etapa é adicionar o campo Fórmula ao formulário.
Selecione "Função" na primeira lista suspensa:
Selecione "Mínimo" na segunda lista suspensa:
Em seguida, você precisa selecionar os campos para comparação. Neste caso, são três campos de preço.
E clique no botão "Criar".
Agora apareceu o campo "Menor preço" em nossa tabela, que compara os três valores do registro e mostra o mínimo deles:
A função "Máximo" funciona exatamente ao contrário.
Considere as funções "Teto para cima" e "Teto baixo". Aqui está uma tabela com os clientes e seus pedidos.
A tarefa é arredondar o valor na coluna "Valor a pagar".
Crie um novo campo de fórmula e selecione o "Teto para cima" (ou "Teto baixo");
Em seguida, você precisa selecionar o campo obrigatório na lista suspensa e especificar o significado.
Como resultado, obtemos uma coluna com um valor arredondado:
Os scripts permitem que você execute operações lógicas e aritméticas. Usaremos a tabela "Vendas de verão" como exemplo. Esta tabela contém uma coluna com gerentes, sua duração de trabalho e a soma das vendas do verão.
Vamos criar um novo campo Fórmula, selecione a opção Função e o item Script (Ruby) na lista a seguir. Você pode usar nomes de campo HTML como operandos. Clique no link sob o campo de função "Como inserir dados de registro":
Uma lista de campos disponíveis aparecerá. Selecione um campo da lista e copie o nome HTML:
Além disso, você pode alterar o nome do campo HTML aqui. Basta inserir um novo nome e clicar no botão "Atualizar":
Os seguintes operadores aritméticos e condicionais estão disponíveis:
(+) adição
(-) subtração
(*) multiplicação
(/) divisão
(>) verdadeiro, se o operando esquerdo for maior que o direito
(<) verdadeiro, se o operando esquerdo for menor que o direito
(%) divisão de módulo
(==) verdadeiro, se os valores dos dois operandos forem iguais.
Operadores condicionais:
(if) usando para testar se uma condição é verdadeira. Os valores de condição false e nil são false, enquanto todos os outros serão True.
(elsif) usando para condições adicionais.
(||) usando para testar várias condições.
Vamos voltar, por exemplo. A tarefa é calcular o bônus para os gerentes.
Assuma que a taxa de bônus depende de vários fatores. O primeiro é a experiência de trabalho na empresa.
Vamos criar o seguinte script:
if work_months > 12
300
Isso significa que, se um funcionário trabalhar na empresa por mais de 12 meses, receberá um bônus de 300 $.
Vamos criar outra condição. Se o gerente fez mais de 7.000 vendas, receberá 150 $ + 25%.
O script deve ficar assim:
elsif sales > 7000
(150*0.25)+150
Em todos os outros casos, o bônus será de 150 $
else
150
É necessário especificar end, para que o script funcione corretamente.
Agora podemos calcular o bônus para cada gerente:
Métodos e operadores disponíveis: to_f, to_i, to_s, round, floor, ceil, ceiling_up, ceiling_down, include?, if, elsif, else, end.
Para verificar se o campo contém um valor específico, você também pode usar o elemento [].
Exemplo de uso:
if 'suprimentos' ['estoque']
true
else
false
end
Além disso, você pode usar duas variáveis: a e b
Além dos operadores aritméticos, você pode usar raízes e funções trigonométricas, logarítmicas e transcendentais básicas. As funções devem ser escritas da seguinte forma: Math::function(Field_name). Por exemplo, Math::acos(Field_csIfon). Lista detalhada de funções matemáticas:
Funções trigonométricas
(::cos) Retorna o cosseno do argumento fornecido.
(::sin) Retorna o seno do argumento fornecido.
(::tan) Retorna a tangente do argumento fornecido.
Funções trigonométricas inversas
(::acos) Retorna o arco cosseno do argumento fornecido.
(::asin) Retorna o arco seno do argumento fornecido.
(::atan) Retorna o arco tangente do argumento fornecido.
(::atan2) Retorna a tangente arg de dois argumentos fornecidos.
Funções trigonométricas hiperbólicas
(::cosh) Retorna o cosseno hiperbólico do argumento fornecido.
(::sinh) Retorna o seno hiperbólico do argumento fornecido.
(::tanh) Retorna a tangente hiperbólica do argumento fornecido.
Funções trigonométricas hiperbólicas inversas
(::acosh) Retorna o cosseno hiperbólico inverso do argumento fornecido.
(::asinh) Retorna o seno hiperbólico inverso do argumento fornecido.
(::atanh) Retorna a tangente hiperbólica inversa do argumento fornecido.
Exponenciação e funções logarítmicas
(::exp) Retorna o valor de um determinado valor elevado a uma determinada potência.
(::log) Retorna o logaritmo de um determinado valor em uma determinada base.
(::log10) Retorna o logaritmo de base 10 do argumento fornecido.
(::log2) Retorna o logaritmo de base 2 do argumento fornecido.
Funções de fração e expoente
(::frexp) Retorna a fração e o expoente do argumento fornecido.
(::ldexp) Retorna o valor de uma determinada fração e expoente.
Funções Raiz
(::cbrt) Retorna a raiz cúbica do argumento fornecido.
(::sqrt) Retorna a raiz quadrada do argumento fornecido.
Funções de erro
(::erf) Retorna o valor da função de erro de Gauss para o argumento fornecido.
(::erfc) Retorna o valor da função de erro complementar para o argumento fornecido.
Funções Gama
(::gamma) Retorna o valor da função gama para o argumento fornecido.
(::lgamma) Retorna o valor da função gama logarítmica para o argumento fornecido.
Função Hipotenusa
(::hypot) Retorna sqrt(a**2 + b**2) para os dados a e b.
Aqui estão alguns exemplos de como simplificar seu trabalho usando funções.
Temos uma tabela de candidatos a emprego:
A tarefa é dividir os candidatos em três grupos: um candidato adequado, um candidato reserva e um candidato inadequado.
Podemos usar o Formulário de Pesquisa, mas depois teremos que usar todos os critérios:
Um campo de fórmula com uma função vem em socorro. Vamos criar uma nova fórmula de "Seleção".
Temos que dividir os candidatos em três grupos condicionais.
Caso o candidato possua:
- Idade inferior a 45 anos;
- Ensino superior;
- Experiência profissional superior a 5 anos;
- Uma recomendação de um empregador anterior, então tal candidato recebe o status "Adequado".
Para o grupo "Reserva", um candidato precisa ter menos de 50 anos, ensino superior ou superior e mais de 5 anos de experiência profissional.
Todos os outros candidatos recebem o status "Inadequado".
Vamos escrever o seguinte código para a função:
if age<45 && "Educação" == "Higher" && exp>5 && "recomendar" == "Yes"
"Suitable"
elsif age<50 && "Educação" == "Higher" || "Tertiary" && exp>5
"Reserve"
else
"Unsuitable "
end
Observe: valores numéricos (incluindo nomes de campo html) não são citados. As aspas são usadas apenas para valores de string.
Como você pode ver na captura de tela a seguir, cada candidato recebeu um status com base nos critérios:
É muito mais fácil pesquisar em um único campo em vez de vários critérios:
O mesmo com a formatação condicional em uma tabela:
Utilizamos o campo "Seleção" para formatar registros na tabela:
É muito mais conveniente gerar um Relatório após pesquisar ou agrupar por um campo:
Que contém todos os candidatos por critérios selecionados:
Não se esqueça das Ações Condicionais e do campo Ação. Por exemplo, crie um botão com a ação "Enviar e-mail", que está disponível no registro apenas com os candidatos "Adequados".
Um campo de função pode ser usado como um critério nas regras de campo. Por exemplo, habilite o campo "Seleção" no formulário:
Em seguida, vamos criar um novo campo "Adicionar à fila" (botão de rádio) com uma escolha de dois valores:
Crie uma regra.
Se o campo "Seleção" consistir em "Reserva", mostre o campo "Adicionar à fila":
É assim que fica no formulário:
As funções permitirão não apenas um gerenciamento de dados mais eficiente, mas também cálculos mais complexos. Por exemplo, considere uma tabela de definição de lucro:
A tarefa é calcular o lucro total.
A fórmula fica assim: lucro total = receita - custo total
Se realizarmos esse cálculo usando fórmulas padrão, teremos que dividir o cálculo em várias fórmulas (calcular separadamente a receita e o custo total).
Usando funções Ruby, você pode fazer este cálculo em um campo:
(preço_de_venda*quantidade)-(custo_de_compra*quantidade)
Lucro total na tabela:
Observação: para o cálculo correto, você deve usar o tipo de campo "Decimal".
Contando dias entre datas
Por exemplo, usaremos uma tabela com contratos. Tarefa: mostre quantos dias o contrato terminará.
Crie o seguinte script:
exp_date.mjd - DateTime.now
Onde:
exp_date - nome do campo html.
.mjd method - converte a data para o formato do calendário juliano.
DateTime.now - objeto cujo valor é a data e hora locais atuais.
Como resultado, obtemos uma coluna com o número de dias até o final do contrato.
Aqui está outro exemplo.
Tarefa: determinar o ano de nascimento, tendo apenas a idade de uma pessoa.
Crie o seguinte script:
DateTime.year - era
Where:
era - nome do campo html.
DateTime.year - objeto cujo valor é o ano atual.
Como resultado, obtemos uma coluna com o ano de nascimento de cada pessoa.
Link para visualização de registro
Usando o script, você pode criar um link para a visualização do registro. Vá para o menu "Registros" e abra a visualização do registro.
Copie o link na barra de endereço:
Crie um campo de Fórmula. Selecione "Script (Ruby)" na lista. Você precisa usar a variável "a" e um link de registro da etapa anterior (escrito entre aspas). Substitua o ID do registro por "Número de ID de entrada" da lista por |internal_id| valor:
Assim, você obterá um link para o registro na tabela:
Você pode usar um link para o widget de registro da mesma maneira: