# Relatórios para impressão e PDF

Os relatórios para impressão é uma forma que podemos imprimir (ou gerar um PDF) os dados de um formulário (e de outros) em um formato pré-definido. É possível definir vários relatórios para um mesmo formulário. Isso é útil, quando se precisa das informações que constam em um formulário, mas como foco diferente.

Por exemplo, em um formulário de pedidos, é possível criar um relatório com os detalhes do pedido e um outro com detalhes apenas da entrega.

> Qual a diferença entre o relatório para impressão e o [relatório analítico](http://wiki.agilityflow.io/books/manual-do-usu%C3%A1rio/page/relat%C3%B3rios "Relatórios")?

A principal diferença é que no relatório para impressão é possível formatar a(s) página(s), dando uma apresentação customizada às informações.

Como foi dito, nos relatórios é possível criar um layout com imagens, logotipo da empresa e etc, dando uma outra roupagem aos dados do formulários quando são impressos.

A definição dos relatórios para impressão é feita como em um editor de texto comum. Para criar um formulário, clique no botão 'adicionar impressão'.

### Título

É o nome que aparecerá na tela do formulário ao se clicar no ícone ![](http://wiki.agilityflow.io/uploads/images/gallery/2019-03-Mar/scaled-840-0/image-1552315909927.png).

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-03-Mar/scaled-840-0/image-1552315982808.png)

### Edição do documento

A área para edição do documento, funciona como um editor de texto clássico. É possível adicionar textos fixos, tabelas, imagens, quebra de linha e etc. Todos os recursos de um editor de texto estão disponíveis na barra superior:

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-03-Mar/scaled-840-0/image-1552316855851.png)

Além desses recursos, outros dados estão disponíveis para serem adicionados:

#### Campos

Todos os campos do formulário ficam disponíveis para serem utilizados no relatório, com exceção do [Botão Customizado](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/bot%C3%A3o-customizado "Botão Customizado"). Para adicionar qualquer campo, basta arrastar para o relatório. Ao fazer isso, o nome do campo é adicionado ao lado do conteúdo, que é representado pelo @.

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-03-Mar/scaled-840-0/image-1552322152675.png)

Para fazer a formatação do conteúdo, basta selecionar o conteúdo (que fica com um contorno amarelo) e aplicar a formatação normalmente.

##### Formulário Relacionado

Quando o formulário é relacionado, todos os registros desse formulário serão mostrados na listagem. É possível filtrar o conteúdo, clicando com o botão direito e selecionando a opção 'Editar Filtro de Dados'.

Além disso, as colunas que serão mostradas nessa tabela, são as mesmas que estão configuradas na [listagem de dados](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/listagem-principal-de-dados "Listagem principal de dados") desse formulário. Caso não queira a exibição de uma delas, basta remover a coluna da tabela. Para adicionar uma informação, basta criar uma coluna e arrastar o campo do formulário relacionado desejado.

##### Campo Upload

Ao posicionar o campo upload no relatório, e seu conteúdo for uma(s) imagem(ns), a(s) imagem(ns) será(ão) exibida(s) no relatório.

#### Log

Algumas informações internas do sistema estão também disponíveis para serem incluídas no relatório. São elas:

- Alterado por: nome do usuário que fez a última alteração no formulário;
- Criado por: nome do usuário que criou originalmente o formulário;
- Data Alteração: data e hora em que ocorreu a última alteração no formulário, no formato DD/MM/AAAA HH:mm;
- Data Criação: data e hora em que ocorreu a criação no formulário, no formato DD/MM/AAAA HH:mm;

#### Outras Variáveis

É a data atual, em diversos formatos:

- Data (DD/MM/AAAA): por exemplo 11/03/2019;
- Data (DD/MM/AAAA HH:mm): 11/03/2019 13:44;
- Data (DD de mês de AAAA): 11 de Março de 2019;
- Data (Dia da semana, DD de mês de AAAA): Segunda-Feira , 11 de Março de 2019;

#### Outras Fontes de dados

É um recurso que permite adicionar dados de outros registros ou formulários no relatório. A criação dessas outras fontes de dados, depende da composição de queries SQL nas tabelas dos formulários.

O agilityflow usa o SQL Server 2016. Para maiores informações, acesse a página do produto no [site da Microsoft](https://www.microsoft.com/pt-br/sql-server/sql-server-2016).

Na composição da query, é necessário usar os nomes as tabela informado nos [Dados Técnicos](http://wiki.agilityflow.io/link/21#bkmrk-%E2%A0-5) do formulário e o nome informado no campo [Coluna Banco de Dados SQL](http://wiki.agilityflow.io/link/38#bkmrk-%E2%A0-0 "Exemplo no campo Textbox"), na configuração dos campos.

Elas podem ser de dois tipos:

##### Tabela de Dados

A query retorna uma lista com várias colunas e linhas. Para o relatório, o elemento a ser adicionado é uma tabela. Ao clicar com o botão direito, é possível definir o agrupamento por um dos campos da query.

##### Variáveis

A query retorna uma lista com várias colunas mas apenas uma linha. Para o relatório, cada coluna é um elemento que pode ser adicionado ao relatório.

<p class="callout warning">Para esse tipo de fonte de dados, é necessário usar o parâmetro '*top 1*' no *select*.</p>

##### Exemplo de Query

Cenário: um relatório do formulário de clientes onde se obtém os últimos 15 pedidos desse cliente em uma impressão.

```SQL
SELECT TOP 15 pedido.log_data_criacao, 
             desc_ped, 
             valor_ped 
FROM   x_tbl_pedido AS pedido 
       INNER JOIN x_tbl_cliente AS cliente 
               ON pedido.id_cliente = cliente.id 
WHERE  cliente.id = @formularioid 
ORDER  BY pedido.log_data_criacao DESC 
```

Na query acima, vamos exibir os campos *log\_data\_criacao*, *desc\_ped* e *valor\_ped* dos últimos 15 registros (pedidos) ta tabela *x\_tbl\_pedido*, cujo cliente do pedido seja igual ao cliente que o usuário está acessando no formulário de Clientes (*x\_tbl\_cliente*). A ordem dessa lista é decrescente baseada no campo *log\_data\_criacao*.