Como criadores, criamos frequentemente documentos complexos e avançados 4D Write Pro. Podemos gerar tabelas que precisam de ser preenchidas a partir de uma fonte de dados, e podemos não ter a certeza das filas e colunas exactas. Preencher manualmente as tabelas com dados de cada vez é uma tarefa trabalhosa. Ouvimo-lo, e é aqui que o contexto dos dados surge como uma opção inestimável, abrindo o mundo da ORDA e do desenvolvimento orientado para objectos aos documentos 4D Write Pro.
É agora possível definir uma “fonte de dados” para as tabelas do 4D Write Pro. Quer se trate de uma selecção de entidade ou de uma colecção, esta “fonte de dados” alimentará automaticamente as filas destas tabelas.
Vamos mergulhar nos detalhes!
Preencher dinamicamente as tabelas com Selecções e Colecções de Entidades
Uma imagem vale 1.000 palavras.
Esta característica permite-lhe criar documentos tal como este:
Uma vez concluída, pode ser exportada(como PDF, como Docx, ou qualquer outro formato de exportação disponível.), impressa, modificada, etc. Vamos ver, passo a passo, como proceder!
Tabela, linha de cabeçalho, linha “Modelo”, Outras linhas
Num documento 4D Write Pro, uma tabela pode agora conter uma ou mais linhas de cabeçalho. A linha que se segue imediatamente ao cabeçalho será considerada como uma linha modelo que será repetida e preenchida pelo conteúdo dos elementos da fonte de dados. As linhas seguintes (se existirem) serão automaticamente “empurradas” para baixo e podem conter mais informações, possivelmente também baseadas na fonte de dados da tabela. O documento original utilizado para gerar o relatório acima referido assemelha-se a este:
O primeiro quadro, no topo, é preenchido com informações fornecidas pelo contexto dos dados. Se não estiver familiarizado com este conceito, recomendamos vivamente que leia primeiro este post do blogue. Vamos ver como se define a própria tabela.
Neste caso, a tabela contém três partes (detalhadas mais tarde):
- A primeira linha foi definida como um cabeçalho.
- A segunda linha é a linha do modelo.
- As linhas seguintes contêm informação extra baseada na fonte de dados e cálculos da tabela.
ASSOCIAÇÃO DE UMA FONTE DE DADOS A UMA TABELA
Como o seu nome sugere, uma fonte de dados fornece dados a uma tabela. Por conseguinte, esta fonte de dados deve ser uma fórmula cujo resultado seja ou uma selecção de entidade ou uma recolha. Se não for este o caso (afinal, uma fórmula pode devolver qualquer coisa), o resultado da fórmula ainda pode ser acedido na tabela (ver abaixo), mas nenhuma linha será utilizada como modelo.
Duas formas de proceder
#1: DEFINIR O DATASOURCE COM A interface do utilizador
A interface do utilizador foi modificada para que uma fórmula possa ser directamente associada a uma tabela.
Imaginemos uma tabela “Empresa” ligada a uma tabela “Empregado” através de uma ligação “empregados”. Se uma entidade “Empresa” estiver acessível através de um contexto no documento, então “empregados” serão a fonte de dados da tabela.
A fórmula associada à tabela pode ser This.data.company.employees.
… onde Estes dados (o contexto) vão ser fornecidos (mais tarde) por programação:
$context:=New object("company";$company) // $company is a company entity
WP SET DATA CONTEXT(WParea;$context)
#2: DEFINIR A FONTE DE DADOS POR PROGRAMAÇÃO
A fonte de dados também pode ser definida usando uma única linha de código.
Cada tabela pode agora conter um novo atributo que pode ser definido com o comando WP SET ATTRIBUTES.
WP SET ATTRIBUTES($table;wk data source;Formula(This.data.company.employees))
COMO DEFINIR O CONTEÚDO DAS FILAS?
Uma vez definida a fonte de dados da tabela, é altura de preencher as filas!
Novos atributos estão disponíveis graças à palavra-chave This que se baseia nos itens da fonte de dados.
Na linha do modelo, pode utilizar This.item.xxx onde xxx (último nome, endereço, zipCode…) serão os atributos da entidade actual a que pretende aceder como This.item.name ou This.item.age. Pode também aceder ao índice do item na selecção (ou colecção) com o atributo This.itemIndex …
Uma vez computadas (utilizando WP COMPUTE FORMULAS), as linhas calculadas podem ser exibidas como se vê na introdução.
Mais atributos da tabela!
Alguns outros atributos também podem ser usados em qualquer parte da tabela, geralmente nas linhas seguintes.
This.table.datasource devolve a fórmula associada com a tabela. Ainda assim, será provavelmente melhor utilizar This.tableData, cujo valor é o resultado já avaliado desta fórmula (geralmente uma colecção ou uma entidade de selecção).
Isto optimiza o processamento, claro, e assegura a consistência no documento.
A partir deste último atributo (tableData), torna-se fácil calcular somas, médias, e valores mínimos ou máximos graças a fórmulas como estas:
This.tableData.min(age)
This.tableData.average(salary)
Ainda mais atributos?
Foram adicionados novos atributos que podem ser alcançados em qualquer tabela (mesmo sem uma fonte de dados definida). Eles permitirão ter acesso a:
- A própria tabela utiliza This.table,
- A linha actual com This.row,
- O número actual da linha através de This.rowIndex.
IMPRIMIR relatórios completos em quatro linhas de código!
Uma vez criado este tipo de documento, pode ser utilizado como um modelo.
For each ($company; $companies)
WP SET DATA CONTEXT($template; New object("company"; $company))
WP PRINT($template) // (before printing, expressions will be recomputed by default)
End for each
PERSONALIZAR RELATÓRIOS, LISTAS, ETC.
Pode também utilizar um modelo cujas tabelas foram preenchidas com valores da fonte de dados. Poderá destacar linhas, mudar cores e estilos, e até mesmo remover ou adicionar linhas vazias!
A melhor maneira de o fazer é congelar primeiro o documento de modo a que todos os dados inseridos sejam agora linhas e texto regulares. O congelamento do documento não é obrigatório, mas deve estar ciente de que todas as suas modificações serão perdidas se as fórmulas forem recalculadas.
Finalmente, se o seu documento tiver de ser guardado (não só impresso ou exportado), então deverá utilizar uma cópia dos seus modelos para que não perca os modelos em si.
MyWorkingDocument :=WP New($template))
Conclusão
Esta nova funcionalidade permite-lhe gerar documentos a partir de modelos. O seu conteúdo pode ser baseado em ORDA com um mínimo de linhas de programação.
Estes documentos podem ser exportados como PDF, Docx, eMail. Podem também ser utilizados como melhorias para listagem de formulários e selecção de impressão.
A geração automática de documentos é agora muito facilitada, seja para facturas, catálogos, ou inventários.
Mais detalhes sobre o centro de documentação(aqui e ali). E como sempre, sinta-se à vontade para entrar em contacto com os Fóruns 4D.