Histórico da Página
...
Esse documento tem como objetivo auxiliar os desenvolvedores na migração dos códigos que utilizam o RM Reports nos seus produtos. Lembrando que a partir da versão 12.1.5 uma nova engine de execução de relatórios do RM Reports foi disponibilizada para nossos clientes.
Para isso, foi criada uma nova API de comunicação com o RM Reports para facilitar o uso e a manutenção nos produtos RM que executam diretamente relatórios construídos no RM Reports.
Ela possibilita a execução de relatórios tanto no lado cliente (actions, forms, etc) quanto no lado server, procurando isolar os componentes internos de execução dos relatórios da RM e da DevExpress, impedindo assim, que os consumidores alterem propriedades e executem métodos diretamente nesses componentes.
1) Classes removidas no novo modelo de execução do RMReports:
...
As classes abaixo foram removidas do RM Reports. Portanto os produtos que fazem uso dessas classes apresentarão erros durante o processo de compilação.
RptReportBase: foi retirada pois a mesma expõem funcionalidades dos componentes da XtraReports para os consumidores. Essa classe foi substituída pelas classes RptExecutorClient (utilização no lado cliente) e RptExecutorServer (utilização no lado server);
RptReportsWinForms: Foi substituída pela classe "RptExecutorClient";
Importante: A classe RptReport localizada na "RM.Rpt.Lib.dll" não poderá mais ser utilizada para gerar relatórios nos produtos. Com isso o método "CREATEDOCUMENT" não deve mais ser utilizado.
...
Importante: A dll RM.Rpt.Lib não deve mais ser adicionada como referência nos produtos que utilizam o Reports.
2) Execução de relatórios no "Server"
...
Passo-a-passo para utilização da API no server:
Adicionar referência para a dll "RM.Rpt.Executor.Intf.dll";
Remover as referências para as outras dll's do reports;
Utilizar a interface IRptExecutorServer localizada na dll RM.Rpt.Executor.Intf. Uma instância da classe RptExecutorServer deve ser criada da seguinte forma:
IRptExecutor executorServer = RM.Lib.RMSBroker.CreateServer<IRptExecutor>("RptExecutorServer");
A A interface "IRptExecutorServer" possui a seguinte estrutura:
GetReportInfo: método responsável em retornar informações do layout do relatório (ele não executa o relatório). Esse método deve ser utilizado quando houver a necessidade de recuperação de informações do layout do relatório antes de executá-lo. Ele retorna informações de parâmetros e filtros criados internamente no relatório para que os consumidores possam manipular esses dados de alguma forma.
Parâmetros de entrada:
Nome do parâmetro | Tipo | Descrição |
codColigada | int | Código da coligada |
idReport | int | Identificador do relatório |
codUsuario | String | Código do usuário |
...
Nome do parâmetro | Tipo | Descrição |
ParametersReport | Lista | Parâmetros criados no relatório |
ParametersProvider | Lista | Parâmetros de provider usados no provider do relatório |
FiltersReport | Lista | Filtros disponíveis no relatório. |
FiltersFormulas | MemoryStream | Filtros de fórmula disponíveis no relatório |
DataSourceSchema | MemoryStream | Schema da fonte de dados do relatório. |
MemberInfo | Membros | Informações dos membros de dados do report. |
ExecuteReport: principal método da API. Ele executa o relatório e retorna informações da execução através do objeto RptExecutorReturn.
Parâmetros de entrada:
Nome do parâmetro | Tipo | Descrição |
codColigada | int | Código da coligada |
idReport | int | Identificador do relatório |
codUsuario | String | Código do usuário |
params | RptExecutorPar | Contem características de execução do relatório |
...
Nome do parâmetro | Tipo | Descrição |
ExportFileType | RptExportFileType | Tipo de exportação do relatório após sua geração. São eles: CSV, JPEG, HTML, XLSX, MHT, PDF, RTF, TXT |
ContextStr | String | Objeto RMSContext na forma de string. |
PartialSources | Lista | Lista de DataSet preenchidos com informações a serem usadas na geração do relatório. |
UseUniquePageNumber | bool | Usa numeração de página sequencial. |
Exemplos de uso (lado server):
...
A classe "RptExecutorClient" possui a seguinte estrutura:
AddParams: informa os valores dos parâmetros do relatório;
AddParamsProvider: informa os valores dos parâmetros de provider do relatório;
AddMainFilter: envia um filtro (no formato de string) para o "report [RptReport]" principal do relatório;
AddDetailFilter: envia um filtro (no forma de string) para as bandas de detalhe do report;
GetReportInfo: Retorna informações do layout do relatório através do objeto RprReportInfo conforme descrito acima;
GetRepositoryInfo: Retorna informações do repositório (informações do relatório);
Show: Mostra o relatório na tela passando o printReport como parâmetro. O parâmetro de showModal mostra o relatório em uma janela modal ou não.
ExecuteReport: executa o relatório no server e retorna informações da execução para o cliente.
Parâmetros de entrada:
Nome do parâmetro | Tipo | Descrição |
codColigada | int | Código da coligada |
idReport | int | Identificador do relatório |
codUsuario | String | Código do usuário |
params | RptExecutorClientParams | Contem características de execução do relatóiro |
...