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!