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:
- public class ReportRun extends ObjectRun
- {
- AssetTable currentRecord;
- }
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:
- public void init()
- {
- super();
- currentRecord = element.args().record();
- }
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:
- public boolean fetch()
- {
- boolean ret;
- ;
- queryRun = new QueryRun(this);
- queryRun.query().dataSourceTable(tablenum(AssetTable)).addRange(fieldnum(AssetTable, AssetId)).value(currentRecord.AssetId);
- ret = super();
- return ret;
- }
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