# Relatório rave

Manipulação de relatórios utilizando rave

# Adição de campos no Data View do Rave Reports

<p class="callout info">Neste capítulo será abordado todo o processo para a adição ou remoção de campos no *Data View* de um relatório *RAVE*</p>

##### Passo 1: Localizar os componentes no formulário

Primeiramente, será necessário localizar o formulário que contém o relatório *RvProject* que será alterado (normalmente, estará localizado na tela de impressão do relatório). Após localizar o componente *rave,* será necessário localizar os componentes *FDQuery* que terão as *querys* responsáveis por carregar as informações do banco de dados que serão usadas no relatório.

Para localizar os *FDQuerys* do relatório, clique no componente *RvDataSetConnection* e verifique o componente apontado na propriedade "*DataSet".*

<p class="callout info">Utilize "F11" para acessar as propriedades dos componentes.</p>

<p class="callout info align-left">Alguns componentes podem estar "escondidos". Ajuste o tamanho do formulário, se necessário.</p>

[![image-1622049529709.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622049529709.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622049529709.png)

<p class="callout info">No exemplo acima, a *query* pode ser localizada através do caminho RVC\_RELAT &gt; CDS\_RELAT &gt; DSP\_RELAT &gt; QRELAT</p>

<p class="callout warning">Obs.: Guarde o nome do componente que está ligado ao *DataSet* do *RvDataSetConnection*, ele será usado posteriormente.</p>

[![image-1622049640256.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622049640256.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622049640256.png)

<p class="callout info">Em alguns casos, a *query* poderá estar ligada diretamente ao *RvDataSetConnection*.</p>

#####  

##### Passo 2: Localizar, no código fonte, a montagem da *query* 

Após localizar os *TFDquerys,* vimos que as *querys* que alimentam esse relatório são: QRelat e QEmpresa. Descoberto o nome das *querys*, busca-las dentro do código (utilizando Ctrl + F, por exemplo).

Adicionar ou remover os campos necessários no *SELECT* referente à *query* que será utilizada no relatório. Nesse exemplo, o campo "DeducoesServicoes" será incluído ao relatório.

[![image-1622051469729.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622051469729.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622051469729.png)

<p class="callout warning">Obs.: Podem existir mais lugares onde a *query* é montada. Alterar todos os trechos que forem necessários.</p>

#####  

##### Passo 3: Incluir e configurar uma nova *FDQuery* e um *FDConnection* ao formulário

Para incluirmos o novo campo ao relatório, será necessário adicionar novos componentes *FDQuery* e *FDConnection* ao formulário (caso a lista de componentes não esteja aberta, pode ser encontrada através do menu *View* &gt; *Tool Windows* &gt; *Tool Palette*). Na propriedade "*Connection*" da nova *FDQuery*, atribua o novo *FDConnection*.

[![image-1622050347673.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622050347673.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622050347673.png)

 No novo *FDConnection*, realizar as seguintes configurações:

[![image-1622050579269.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622050579269.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622050579269.png)

<p class="callout info">O parâmetro "*Database*" deve receber o caminho em que a base de dados .FDB está localizada.</p>

#####  

##### Passo 4: Extrair do código a *query*-alvo completa

Localize o fim da montagem da query no código e adicione um breakpoint uma linha abaixo do fim da montagem. Execute o sistema até que chegue ao breakpoint adicionado e execute a função "MostraParams(NomeDaQuery)". Uma tela com a *query* será aberta no sistema.

<p class="callout danger">IMPORTANTE: Por garantia, a *query* gerada deverá ter todos os campos do *SELECT*, sendo assim, os trechos de DLL deverão ser incluídos.</p>

[![image-1622052160887.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622052160887.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622052160887.png)

[![image-1622052366197.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622052366197.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622052366197.png)

 Copie todo o texto da *query* gerada, checando até o fim com Ctrl + End para que não fique trechos para trás.

#####  

##### Passo 5: Configurar a nova *FDQuery* utilizando a *query* extraída

No formulário, dar duplo clique na *FDQuery* para que o editor seja aberto. Cole a *query* copiada anteriormente na caixa "*SQL Command*" e clique em executar. Os campos gerados pela SQL deverão aparecer na aba "*RecordSet*". Verifique se todos os campos (inclusive o seu) foram gerados. Checado os campos, clique em "OK".

[![image-1622052739889.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622052739889.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622052739889.png)

Com a *FDQuery* configurada, clique no componente "*RvDataSetConnection*" referente à *query* que está sendo trabalhada, e atribua na propriedade "*DataSet*" a nova *FDQuery*.

[![image-1622053072383.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622053072383.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622053072383.png)

#####  

##### Passo 6: Incluir novo(s) campo(s) no Data View do Rave

Execute o sistema novamente até o breakpoint adicionado no passo 4. Com duplo clique no componente *RvProject*, abra o *Rave Reports*. No menu *File* &gt; *Open* &gt; Selecione o arquivo .rav do relatório-alvo na pasta do seu *branch* &gt; Abrir. No menu lateral, localizar o View referente à *query* que está sendo trabalhada &gt; Clique direito &gt; *Refresh*.

[![image-1622054363567.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622054363567.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622054363567.png)

<p class="callout danger">CUIDADO: Caso alguma mensagem de aviso apareça na tela, consultar um dev antes de realizar o *refresh* para que nenhum campo seja apagado.</p>

Após realizar o *refresh*, o novo campo deverá estar localizado dentro do componente view. Salve o relatório (Ctrl + S) e Interrompa novamente a execução do sistema.

[![image-1622054545273.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622054545273.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622054545273.png)

##### Passo 7: Configurar os componentes para a inclusão do(s) novo(s) campos no relatório

No formulário, clique no componente *RvDataSetConnection* que foi utilizado para adição do(s) campo(s), e na propriedade "*DataSet*" atribua o componente que estava sendo usado antes.

[![image-1622125321870.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622125321870.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622125321870.png)

Na propriedade "*ProjectFile*" do componente *RvProject*, atribua o caminho do relatório que foi aberto anteriormente no *Rave*. Dê um duplo clique no dlg da propriedade "*StoreRAV*", clique em "*Load*" para que as alterações sejam carregadas, depois "*Close*".

[![image-1622125390531.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622125390531.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622125390531.png)

Abra o *RvProject* e cheque se o(s) novo(s) campo(s) está(ão) no *Data View* após carregar as informações. Feito isso, os novos componentes adicionados podem ser excluídos do formulário.

# Novo método - Adição de campos no Data View do Rave Reports

<p class="callout info">Neste capítulo será abordado todo o processo para a adição ou remoção de campos no *Data View* de um relatório *RAVE*</p>

<p class="callout success">Alterações do novo método encontram-se a partir do Passo 3</p>

##### Passo 1: Localizar os componentes no formulário

Primeiramente, será necessário localizar o formulário que contém o relatório *RvProject* que será alterado (normalmente, estará localizado na tela de impressão do relatório). Após localizar o componente *rave,* será necessário localizar os componentes *FDQuery* que terão as *querys* responsáveis por carregar as informações do banco de dados que serão usadas no relatório.

Para localizar os *FDQuerys* do relatório, clique no componente *RvDataSetConnection* e verifique o componente apontado na propriedade "*DataSet".*

<p class="callout info">Utilize "F11" para acessar as propriedades dos componentes.</p>

<p class="callout info align-left">Alguns componentes podem estar "escondidos". Ajuste o tamanho do formulário, se necessário.</p>

[![image-1622049529709.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622049529709.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622049529709.png)

<p class="callout info">No exemplo acima, a *query* pode ser localizada através do caminho RVC\_RELAT &gt; CDS\_RELAT &gt; DSP\_RELAT &gt; QRELAT</p>

<p class="callout warning">Obs.: Guarde o nome do componente que está ligado ao *DataSet* do *RvDataSetConnection*, ele será usado posteriormente.</p>

[![image-1622049640256.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622049640256.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622049640256.png)

<p class="callout info">Em alguns casos, a *query* poderá estar ligada diretamente ao *RvDataSetConnection*.</p>


##### Passo 2: Localizar, no código fonte, a montagem da *query* 

Após localizar os *TFDquerys,* vimos que as *querys* que alimentam esse relatório são: QRelat e QEmpresa. Descoberto o nome das *querys*, busca-las dentro do código (utilizando Ctrl + F, por exemplo).

Adicionar ou remover os campos necessários no *SELECT* referente à *query* que será utilizada no relatório. Nesse exemplo, o campo "DeducoesServicoes" será incluído ao relatório.

[![image-1622051469729.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622051469729.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622051469729.png)

<p class="callout warning">Obs.: Podem existir mais lugares onde a *query* é montada. Alterar todos os trechos que forem necessários.</p>


##### Passo 3: Incluir e configurar uma nova *FDQuery,* um *FDConnection e um RvDataSetConnection* ao formulário

Para incluirmos o novo campo ao relatório, será necessário adicionar novos componentes *FDQuery,* *FDConnection* (este copiaremos da unit (DMCONEXOES.pas) e um *RvDataSetConnection* ao formulário (caso a lista de componentes não esteja aberta, pode ser encontrada através do menu *View* &gt; *Tool Windows* &gt; *Tool Palette*).

[![componentes.png](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/scaled-1680-/componentes.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/componentes.png)

Na propriedade "*Connection*" da nova ***FDQuery***, atribua o ***CO\_Principal***.

Na propriedade "*DataSet*" do ***RvDataSetConnection1***, atribua a nova ***FDQuery***.

No novo *CO\_Principal*, realize as alterações necessárias para apontar para o banco de dados conectado:

[![coprincipal.png](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/scaled-1680-/coprincipal.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/coprincipal.png)

<p class="callout info">O parâmetro "*Database*" deve receber o caminho em que a base de dados .FDB está localizada.</p>

Na propriedade "*Active*" da nova ***FDQuery***, atribua *True.*

##### Passo 4: Monte a cláusula com os novos campos

Diferente do método anterior, neste é necessário adicionar apenas os campos desejados, podendo ser utilizado até mesmo *CAST.*

No formulário, dar duplo clique na *FDQuery* para que o editor seja aberto. Coloque a cláusula para gerar os campos desejados, clique em execute e verifique se trouxe os campos corretos, exemplo:

[![retornoBusca.png](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/scaled-1680-/retornobusca.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/retornobusca.png)


##### Passo 5: Adicionar a nova *FDQuery* temporariamente no relatório

Com duplo clique no componente *RvProject, abrirá o Rave Reports. No menu File &gt; Open &gt; Selecione o arquivo .rav do relatório-alvo na pasta do seu branch &gt; Abrir.*

Vá em *File &gt; New Data Object.* Selecione *Direct Data View* , clique em *Next&gt;*

[![NewDataObject.png](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/scaled-1680-/newdataobject.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/newdataobject.png)

<p class="callout info">Caso apareçam Warnings, aperte ok em todos</p>

Selecione o novo ***RvDataSetConnection1*** na lista que aparecerá e aperte em *Finish.*

Nesse momento na lista de Data View Dictionary terá um novo objeto contendo somente os campos que deseja adicionar:

[![DataView.png](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/scaled-1680-/dataview.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/dataview.png)

##### Passo 6: Mover novo(s) campo(s) do novo Data View para o Data View desejado

Com botão SHIFT selecione todos os campos, agora com botão CTRL pressionado, arraste para dentro do Data View desejado

[![movendo.jpg](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/scaled-1680-/movendo.jpg)](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/movendo.jpg)

Após mover, os campos poderão estar estranho como a imagem a seguir, basta clicar fora da região que normalizará:

[![campos.png](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/scaled-1680-/campos.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2023-04/campos.png)

Renomeie os novos Fields conforme o desejado/padrão.

<p class="callout danger">Muito importante seguir corretamente os passos abaixo para não perder o trabalho feito.</p>

Salve o relatório (Ctrl + S) e feche o Rave Report.

Apague os três componentes criados no passo 3,

Abra novamente o Rave Report clicando no *RvProject.*

Selecione o Data View criado no passo 5 e apague-o.

Salve o relatório (Ctrl + S) e feche o Rave Report.

##### Passo 7: Carregando as alterações para o dfm

Na propriedade "*ProjectFile*" do componente *RvProject*, atribua o caminho do relatório que foi aberto anteriormente no *Rave* caso não esteja. Dê um duplo clique no dlg da propriedade "*StoreRAV*", clique em "*Load*" para que as alterações sejam carregadas, depois "*Close*".

[![image-1622125390531.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622125390531.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622125390531.png)

<p class="callout success">Abra o *RvProject* e cheque se o(s) novo(s) campo(s) está(ão) no *Data View* após carregar as informações. </p>

# Adição de campos na interface gráfica do Rave

<p class="callout info">Para realizar esse processo, é necessário ter os campos adicionados no *Data View* do relatório.</p>

<p class="callout info">Nota: Cada relatório tem sua própria construção, o relatório usado nessa página servirá como exemplo. </p>

Para que o campo adicionado no *Data View* seja exibido no relatório, será necessário adicioná-lo em suas respectivas regiões.

No exemplo a seguir, o campo "DeducoesServicos" será integrado ao relatório.

[![image-1622134887074.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622134887074.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622134887074.png)

####  

#### Localizar as regiões do relatório

Abra o *Rave Reports* e selecione o arquivo .rav que será alterado através do menu *File* &gt; *Open* (caso o relatório já esteja aberto, não é necessário realizar esse passo).

No menu lateral, expanda o componente *Report Library* e seus respectivos filhos até encontrar os *DataBand Components.* Cada um desses componentes, será responsável por uma região do relatório, identificada por nome.

[![image-1622135604877.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622135604877.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622135604877.png)

O campo deverá ser adicionado em cada banda que for necessário. Nesse exemplo, o campo "DeducoesServicos" será adicionado nas bandas "bSubCabecalho" e "dbItens".

####  

#### Adicionar componentes nas regiões

Expanda a banda e veja qual componente está sendo usado para os demais campos.

[![image-1622136079385.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622136079385.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622136079385.png)

Nesse exemplo, o componente utilizado é um *Memo component.*

Através do menu de componentes, selecione o componente que será usado e coloque-o em sua respectiva banda.

[![image-1622136469625.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622136469625.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622136469625.png)

<p class="callout info">Ao adicionar o componente, o mesmo também deverá ser encontrado no menu lateral.</p>

####  

#### Configurar propriedades dos componentes 

Mude as propriedades do componente de acordo com os demais.

[![image-1622140162106.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622140162106.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622140162106.png)

A propriedade "*FontMirror*" receberá a família de componentes que ele pertence.

A propriedade "*Name*" receberá o nome do componente.

<p class="callout warning">É vital que todos os componentes adicionados tenham o prefixo referente à sua região (nesse caso, "ttlt") e que tenha o mesmo nome (DeducoesServicos) em todas as outras regiões para que funcione corretamente. </p>

Na propriedade "*Text*" é possível alterar o nome do campo que será exibido no relatório.

#####  

##### Campos *Data*

Na inserção de campos *Data*, clique em "..." no dlg &gt; Selecione o *Data View* do campo (DV\_Relat) &gt; Selecione o *Data Field* do campo (DEDUCOESSERVICOS) &gt; *Insert Field* &gt; o campo deverá aparecer no *Data Text* &gt; Ok.

[![image-1622139003451.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622139003451.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622139003451.png)

Preencha as demais propriedades de acordo com outros componentes

[![image-1622139257698.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622139257698.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622139257698.png)

<p class="callout info">Repare que apesar do prefixo ser diferente "dtlt", o nome do campo continua o mesmo "DeducoesServicos".</p>

<p class="callout success">Após ter adicionado os campos necessários, salve o relatório.</p>

####  

#### Carregar alterações no relatório

No formulário (Delphi), dê F11 no componente *RvProject* e na propriedade "*StoreRav*" realize o *load*.

[![image-1622139599469.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622139599469.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622139599469.png)

Após realizar o *load*, execute o sistema e abra o relatório. O novo campo já poderá ser visualizado.

[![image-1622140605116.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622140605116.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622140605116.png)

####  

#### Como mudar o nome do campo no 'Seleciona Campos' e o número de casas decimais exibidas no relatório 

<p class="callout info">Caso o relatório utilize um "Seleciona Campos", o nome do campo que será exibido pode ser alterado através da propriedade "*FullName*" do campo no *Data View* do *Rave.* A propriedade "*DisplayFormat*" pode ser usada para definir o número de casas que serão exibidas no relatório.</p>

[![image-1622140713425.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622140713425.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622140713425.png)

[![image-1622140853734.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622140853734.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622140853734.png)

# Commit de alterações no relatório

<p class="callout info">Como realizar o *commit* do dfm das alterações feitas no *Rave* </p>

<p class="callout warning">Não esquecer de realizar o *load* das alterações do relatório no *RvProject* antes de commitar </p>

As alterações realizadas no **relatório** ficarão no arquivo .dfm e no arquivo .rav

[![image-1622144455965.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622144455965.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622144455965.png)

O arquivo .pas terá apenas as alterações realizadas no código.

No arquivo .dfm, deverá ser realizado apenas o commit do "RaveBlobNew", com exceção da situação que o "ProjectFile" não existe ou está desatualizado, conforme a imagem <span style="text-decoration: underline;">*[Exceção](https://wiki.supersoft.com.br/link/232#bkmrk-imagem-exce%E3%A7%E3%A3o%3A)*</span>. Caso não haja alterações **propositais** no dfm, o restante pode ser revertido.

[![image-1622144651788.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622144651788.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622144651788.png)

[![image-1622144747969.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/image-1622144747969.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/image-1622144747969.png)

Imagem *Exceção:*

[![66.png](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/scaled-1680-/66.png)](https://wiki.supersoft.com.br/uploads/images/gallery/2021-05/66.png)

O arquivo .rav e .pas podem ser commitados normalmente