Páginas

Gerar um relatório a partir de um registro selecionado

Ontem meu amigo Abraão me pediu ajuda pra gerar um relatório de acordo com um registro selecionado em um formulário. E me lembrava que já tinha feito e que era muito simples, porém não me recordava dos detalhes. Então em uma breve conversa com meu amigo Leandro Honório ele me ajudou muito e concluí os detalhes e ajudei o Abraão a solucionar o problema. Como já tinha passado pela mesma situação e não guardei tomei nota da resolução, decidi postar dessa vez para termos mais um auxílio.

Nesse caso tenho o formulário AssetTable e preciso criar um botão no formulário que leve para um relatório, porém as informações do relatório devem ser baseadas no registro selecionado.

Primeiro criei um relatório simples com o DataSource AssetTable e no design adicionei 2 campos apenas para demonstrar, a estrutura do relatório ficou da seguinte maneira:

Estrutura do relatório

Em seguida declarei a tabela como uma variável global:
  1. public class ReportRun extends ObjectRun
  2. {
  3.     AssetTable currentRecord;
  4. }
Depois sobreescrevi o método init, para que no momento que ele iniciar o relatório nossa variável global receba os parâmetro do registro selecionado:
  1. public void init()
  2. {
  3.     super();
  4.     currentRecord = element.args().record();
  5. }
E em seguida vamos sobreescrever o método fetch, para executar nossa query e para que possamos adicionar o range atual ao DataSource, assim preenchendo o DataSource apenas com os dados do registro selecionado:
  1. public boolean fetch()
  2. {
  3. boolean ret;
  4. ;
  5.  
  6. queryRun = new QueryRun(this);
  7. queryRun.query().dataSourceTable(tablenum(AssetTable)).addRange(fieldnum(AssetTable, AssetId)).value(currentRecord.AssetId);
  8. ret = super();
  9. return ret;
  10. }
Feito isso vamos desabilitar a propriedade Interactive do Relatório e na Query.

Com o relatório criado vamos criar um MenuItem do nosso relatório e no nosso formulário criar um botão partindo do MenuItem e passar a propriedade DataSouce para a tabela que estamos utilizando.

E com isso ao selecionar um registro e clicarmos no botão o relatório é gerado a partir do registro selecionado.

[]'s
Alexssander

Nenhum comentário:

Postar um comentário