ORDA – Genealogia – 3º Episódio

Tradução automática de Deepl

No primeiro e segundo episódios desta trilogia, demonstrámos o básico da ORDA utilizando caixas de listagem, entidades, e selecções de entidades. Também mostrámos a forma de utilizar caixas de listagem semelhantes com fontes de dados distintas e como utilizar a expressão Meta info para melhorar os gráficos das caixas de listagem.

Hoje vamos ter ainda mais diversão, com menos código!

Download Genealogia – 3º Episódio

Menos código, mais diversão!

Com base na estrutura recursiva que discutimos anteriormente, o nosso objectivo hoje é exibir uma árvore genealógica (como se mostra abaixo).

Para cada casal, queremos mostrar os seus pais, avós e filhos (se os tiverem).

A lista da esquerda mostrará todos os casais para os quais encontraremos quatro pais e oito avós. Este vai ser o principal desafio.

Para exibir casais à esquerda, podemos limitar a procura a homens com parceiros:

Género=falso // boolean field
e parceiro # nulo

Mas também precisamos de ter a certeza de que ambos têm pais:

e Pai # nulo
e Mãe # nula

E depois teremos de verificar se há avós, etc., etc.

Magia e lógica

Se 4D (e ORDA) pode ser consultado para encontrar quatro avós para o parceiro de X, isso também significa que X tem um parceiro e que o seu parceiro também tem um pai e uma mãe. Portanto, no final, é bastante simples! Só temos de verificar que cada membro do casal como quatro avós!

Género=falso // search for men only (his partner's name will be displayed next to his)
e Pai.Pai # nulo // check for the man's grandparents
e Pai.Mãe # nulo
e Mãe.Pai # nulo
e Mãe.Mãe # nulo
e Parceiro.Pai.Pai # nulo // check for his partner's grandparents
e Parceiro.Pai.Mãe # nulo
e Parceiro.Mãe.Pai # nulo
e Parceiro.Mãe.Mãe # nulo

Feito! Esta é a selecção da entidade que será utilizada no lado esquerdo do formulário.

Acabou-se o código?

Quase. Excepto para os filhos que iremos gerir mais tarde, não é necessário mais código!

Basta lembrar que na caixa de listagem de propriedades existe uma propriedade chamada item actual. Basta dar-lhe um nome … e depois utilizá-lo! Neste caso, o item actual é “homem”. Assim, assim que clicar em qualquer linha da caixa de listagem, a entidade man é actualizada e pode utilizar e exibir os seus atributos sem qualquer codificação.

blank

Não só os seus atributos, mas também todos os atributos de entidades relacionadas, e os atributos de entidades relacionadas de entidades relacionadas … por isso na sua forma pode exibir expressões como:

man.Lastname
man.Father.Lastname
man.Father.Father.Lastame
man.Partner.Lastname
man.Partner.Father.Lastname
man.Partner.Father.Father.Lastname

Ou expressões mais complexas como:

man.Father.Father.Lastname+" "+man.Father.Father.Firstname

Como dissemos: Sem código! Apenas expressões! Basta prestar atenção ao utilizar copy-paste … pode por vezes revelar-se o seu maior inimigo 🙂

E as crianças?

Elas também são bastante simples. Durante o evento On selection change, basta criar uma selecção de entidades de crianças (ver episódio 2), e depois percorrer esta selecção de entidades para construir os nomes e as imagens!

(Form event=On Selection Change)
childrenPortraits :=childrenPortraits*0 // erase picture
childrenNames :="" // erase names
$_children :=GetChildren (men) // get the entity selection of children
For each ($child;$_children)
COMBINE PICTURES (childrenPortraits;childrenPortraits;Horizontal concatenation;$child.Portrait_0)
childrenNames :=childrenNames+$child.Firstname+" ("+String($child.Birthday)+") "
End for each

Conclusão (ou início!)

Com estes três episódios, demos-lhe uma pequena amostra do poder da ORDA. Alguns dos resultados que mostrámos foram quase impossíveis de obter usando 4D de uma forma regular e simples. Enormes números de linhas de código, matrizes, memória, e cálculos teriam sido necessários para alcançar os mesmos resultados. Não estamos a dizer que cada base de dados 4D deveria ser reescrita com ORDA (“Se não estiver avariada, não a conserte” é uma das minhas citações favoritas), mas é bastante óbvio que para as suas bases de dados futuras ou actuais (se precisarem de ser melhoradas), ORDA será uma grande ajuda e uma grande poupança de tempo!

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.