Linhas de Quebra de Linha. Um Novo Aditamento às Tabelas de Escrever Pro 4D!

As tabelas de documentos 4D Write Pro melhoraram muito em relação às últimas versões. De fato, nós, a equipe 4D, estamos tão investidos em fazer do 4D Write Pro um potente gerador de documentos baseado em modelos – que já criamos avanços como cabeçalhos, fontes de dados, linhas de transporte…algumas das várias características poderosas já lançadas.

Agora, com 4D v20, é a vez das quebras de linha terem sua estreia!

Senhoras e senhores, rufem os tambores, por favor!

A Característica em Ação

 

O objetivo a alcançar

Qualquer que seja a sua atividade, certamente que precisa de criar listas.

Estas listas são ordenadas de acordo com os seus próprios critérios, e é geralmente necessário criar grupos para cada um destes grupos para obter totais ou estatísticas. É isto que esta nova funcionalidade de 4D Write Pro lhe oferece!

Quando e como? Aqui está um exemplo concreto

Quando uma tabela é alimentada por uma fonte de dados ordenada, o objetivo é inserir uma linha de quebra quando o valor correspondente ao critério de ordenação muda.

Imagine que conhece pessoas de vários continentes, países, e cidades.

E quer criar uma lista destas pessoas agrupadas por continente, país e cidade.

blank

Ou pretende criar um relatório baseado na relação “empresa”/company e criar uma lista de empregados agrupados pela empresa em cada continente.

blank

 

Em ambos os casos, deve primeiro assegurar-se de que esta seleção é ordenada de acordo com estes três critérios.

Caso 1:

ds.people.all().orderBy("continent asc, country asc, city asc")

Caso 2:

ds.People.all().orderBy("worksFor.name asc, continent asc)

Para cada critério de triagem, uma fila de descanso

Quando a fonte de dados estiver associada à tabela, as pessoas serão exibidas na “fila repetida” e na ordem desejada. Vamos ver como agrupá-las por critérios de ordenação.

Utilizando a interface

Novos itens estão agora disponíveis no menu de linha. São contextuais e só aparecerão se o cursor estiver dentro de uma tabela (e abaixo do cabeçalho, se existir).

blank

 

 

 

 

Por exemplo, a fórmula pode ser baseada num nome de atributo (This.item.country) ou num caminho de atributo relacionado (ex: This.item.worksFor.name) ou qualquer outra fórmula (Substring(This.item.name;1;1))).

Uma vez definido o atributo de quebra… é possível ver a sua fórmula ao pairar sobre o símbolo de quebra “S” (como em Sort).

 

blank

Acima ou abaixo do BreakS?

As linhas de quebra podem estar acima ou abaixo da linha repetida (preenchidas pela fonte de dados da tabela).

As pausas serão feitas cada vez que o valor devolvido pela fórmula de pausas mudar, por isso certifique-se que a posição das pausas corresponde aos critérios de ordenação da fonte de dados.

blank

 

Um novo atributo de linha

O atributo wk break formula contém a fórmula cujo resultado determinará a fixação da quebra de linha. A simples presença deste atributo fará com que uma linha seja considerada uma quebra de linha. É possível definir tantas linhas de pausa quantas forem necessárias, por exemplo, Formula(This.item.city) para o nível de pausa mais baixo e Formula(This .item.continent) para o nível mais alto.

 

WP SET ATTRIBUTES($row; wk break formula; Formula(This.item.country))
WP RESET ATTRIBUTES($row; wk break formula)

lembre que:

  • Uma quebra de linha deve ser localizada imediatamente acima ou abaixo de uma fila repetida ou outra quebra de linha se houver vários níveis. Caso contrário, não serão levados em consideração.
  • O número de níveis é limitado a cinco. Se acrescentar um sexto nível, não será desencadeado qualquer erro, mas não será apresentado.
  • A inserção de linhas de interrupção na tabela não ordena a fonte de dados. A fonte de dados deve ser ordenada de forma independente.

É isso mesmo!

Conteúdo das quebras de linhas

Para além do texto, as quebras de linha podem conter dois tipos de fórmulas.

  • A primeira possibilidade é utilizar os elementos presentes – ou que poderiam estar presentes – nas linhas repetidas (Ex: This.item.continent).
    O valor devolvido será o último valor utilizado antes do intervalo (ou o primeiro valor utilizado se a linha de intervalo preceder as linhas repetidas).
  • A segunda possibilidade é nova: A propriedade breakItems só pode ser utilizada no contexto de pausas (Ex: This.breakItems).
    A propriedade breakItems é um subconjunto dos dados de origem da tabela que corresponde precisamente às linhas repetidas da linha de quebra em questão.

    • Para utilizar o exemplo de múltiplas quebras por continente-cidade, quando o conteúdo muda, o subconjunto corresponde às pessoas do continente (antes da mudança), e isto é se a quebra de linha for colocada antes ou depois da linha repetida. Este subconjunto pode ser utilizado para efetuar cálculos como sum(“salary”), average(“salary”), etc.

 

blank

 

Finalmente, vamos especificar que estes subconjuntos serão do mesmo tipo que os dados de origem da tabela, ou seja, uma seleção de entidade ou uma coleção.

Mais informações

Mais informação sobre esta característica pode ser encontrada na documentação.

Conclusão

Esta nova funcionalidade mostra novamente o poder do 4D Write Pro em relação à criação automática de documentos.

Com as pausas, é dado mais um passo. Dê-nos a sua opinião sobre o Fórum 4D.

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.