Consultas ORDA mais sofisticadas com fórmulas

Tradução automática de Deepl

Em 4D v17 R6, as consultas ORDA estão a tornar-se cada vez mais poderosas e concisas. Este post no blog é para aqueles que precisam de critérios de pesquisa mais sofisticados do que apenas uma simples sintaxe como“nome = Smith“. Com este lançamento R, pode usar qualquer método de projecto ou expressão 4D no query() método de membro, utilizando fórmulas.

Que melhor forma de explicar esta característica do que com um exemplo? Vamos investigar os detalhes.

HDI: Exemplo de consultas ORDA utilizando fórmulas

ESCREVA UMA PERGUNTA UTILIZANDO UMA FORMULA

O query() método de membro foi actualizado para suportar um único Formula objecto como parâmetro.

Exemplo

Na DataClass Students , procuramos estudantes com uma pontuação em inglês superior à sua pontuação média global.

Note-se que cada entidade é acedida pela fórmula com a This comando.

C_OBJECT// The studentAverage project method computes the student's overall average in all subjects($formula;$students)
// In the Students dataClass, grades is an object field containing students' grades for each subject
// Example of JSON representation of the grades object field:
// {math:50,english:90,history:85}

$formula :=Formula(This.grades.english>studentAverage (This))
$students :=ds.Students.query($formula)

utilizar uma Fórmula com outros critérios de pesquisa

As fórmulas podem ser facilmente combinadas com outros critérios de pesquisa. Abaixo está um exemplo para lhe mostrar como.

Exemplo

Na DataClass Students , continuamos a procurar estudantes com uma pontuação em inglês superior à sua média geral E cujo país é a Inglaterra.

O objecto $formula é utilizado como um valor de lugar reservado, como qualquer outro.

C_OBJECT($formula;$students)
C_TEXT ($country) // $country = "France"

$formula :=Formula(This.grades.english>studentAverage (This))
$students :=ds.Students.query(":1 e país=:2";$formula;$country)

utilizar uma fórmula na cadeia de consulta

Uma fórmula também pode ser inserida na cadeia de consulta com uma declaração eval().

Embora isto possa ser conveniente para codificar rapidamente uma consulta, faltar-lhe-ão as vantagens de usar um objecto de fórmula (tal como auto-completamento, cores no editor de código, e quem faz a pesquisa).

C_OBJECT($students)
C_TEXT ($country) // $country = "France"

$students :=ds.Students.query("eval(This.grades.english > studentAverage (This))) e country=:1";$country)

NOTA: O comando query() método de membro sobre o objecto de selecção da entidade também foi actualizado para apoiar fórmulas. Verifique a documentação para saber mais.

Avatar
• Proprietário do produto - Marie-Sophie Landrieu -Yvert entrou ao time 4D Product como Proprietária do Produto em 2017. Como tal, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Marie-sophie se formou na Escola de Engenharia de ESIGELEC e começou sua carreira como engenheira da IBM em 1995. Participou em vários projetos (de manutenção e criação) e trabalhou como desenvolvedora de Cobol. Depois trabalhou como designer de UML e desenvolvedora de Java. Suas principais funções foram analisar e redigir requisitos funcionais, coordenar os times de negócio e de desenvolvimento.