Nova opção para fórmulas a partir de uma cadeia de caracteres!

Tradução automática de Deepl

Como um desenvolvedor 4D, provavelmente já criou e usou fórmulas. Elas podem ser criadas através de dois comandos, Formula e Formula from string. O último acaba de ser melhorado em 4D V20 R3 para que possa ser usado sem limites de componentes!

Fórmulas e contexto de execução

As fórmulas, qualquer que seja seu conteúdo, estão intimamente ligadas à base de dados a partir da qual são criadas. Quando são chamadas, são sempre executadas no contexto em que foram criadas.

Isto é verdade para comandos 4D e funções como Structure file, mas também para fórmulas baseadas em chamadas de métodos.

Um exemplo simples

Vamos imaginar um método FormatedCurrentDate que retorna uma string formatada.

#DECLARE($format : Integer)->$formatedDate : Text
$formatedDate:=String(Current date; $format)

Este método pode ser usado dentro de uma fórmula, que pode ser criada desta forma:

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)")

Neste caso, a fórmula devolverá a data formatada como esperado.

$date:=$formula.call()

Quando o método e a fórmula estão no mesmo ambiente, está tudo bem… mas se este método não partilhado estiver na base de dados do anfitrião e a fórmula que tenta utilizar este método for criada dentro de um componente, não poderá ser executada.

Um novo parâmetro está agora disponível

Foi adicionado um novo parâmetro à função Formula from string para lhe dar a possibilidade de escolha e permitir-lhe decidir em que contexto a fórmula será executada.

#1) sk executar na base de dados do anfitrião

Se voltarmos ao exemplo anterior, em que o método FormatedCurrentDate não partilhado pertence à base de dados do anfitrião, será possível executá-lo de qualquer forma a partir de um componente, criando a fórmula da seguinte forma:

$formula:=Formula from string("FormatedCurrentDate(System date abbreviated)";sk execute in host database)

#2) sk executar na base de dados atual

Se o valor sk execute in current database for passado (ou simplesmente omitido), então a fórmula será executada na base de dados que criou a fórmula”.

Conclusão

Esta nova opção permitir-lhe-á criar facilmente os seus próprios componentes de interface (para 4D Write Pro, por exemplo) utilizando métodos ou variáveis da base de dados do anfitrião.

Mais liberdade e mais poder significam também mais responsabilidade, mas esta abertura é ainda muito prática e permite que os componentes acedam a funções das suas bases de dados anfitriãs de uma forma extremamente simples.

Não hesite em partilhar as suas impressões no fórum!

Roland Lannuzel
- Proprietário do produto & Especialista 4D - Depois de estudar electrónica, a Roland entrou nas TI industriais como desenvolvedor e consultor, construindo soluções para clientes com uma variedade de bases de dados e tecnologias. No final dos anos 80, apaixonou-se pela 4D e utilizou-a para escrever aplicações comerciais que incluem sistemas de contabilidade, facturação e correio electrónico. Juntando-se à empresa em 1997, as valiosas contribuições de Roland incluem a concepção de especificações, ferramentas de teste, demonstrações, bem como formação e palestras para a comunidade 4D em muitas conferências. Ele continua a moldar activamente o futuro da 4D, definindo novas características e ferramentas de desenvolvimento de bases de dados.