FastReport no Delphi - Com dois Detail


Criaremos um relatório de orçamentos, então iremos exibir os dados principais do "Cliente" e "Número do Orçamentos" e abaixo os produtos e os detalhes das parcelas. Vamos organizar esse relatório jogando os produtos para um Detail e com os totais dos produtos, e outro Detail com as parcelas.
Esse vai ser apenas um exemplo ilustrativo, sem conexão com banco de dados, vamos nos aprofundar apenas na parte do FastReport

Vamos iniciar um novo projeto (File >> New >> Windows VCL Application);

Nesse projeto vamos utilizaremos:
2 - TBitBtn;
3 - TfrxDBDataset;
1 - TfrxReport
3 - TClientDataSet;
3 - TDataSource;
1 - TEdit;

Organizei os componentes desta forma: 

Agora vamos para o FastReport.

Dê dois cliques no componente frxReport para abrir na forma de Designer, vamos iniciar (File >> New Report). Pronto criamos um novo documento ele nos trouxe como padrão ReportTitle1, MasterData1 e um PageFooter1, adicionar as tabelas no FastReport menu (Report >> Data);

Vamos comecar colocando o nosso logo no topo do relatório.

Eu coloquei manualmente o caminho utilizando um TEdit para colocar o caminho do logo, mas vocês podem colocar um campo na tabela de configuração do sistema para colocar um logo padrão da empresa com isso pode ser utilizado em outros locais do sistema.

Vamos para o FestReport

Colocamos uma linha para identificar se o logo e existe, pois se mandar um caminho invalido ocorre erro, e coloquei uma variável em branco para quando não encontrar o logo para não ocorrer o erro de não encontrar a variável no FastReport 
procedure TFSistema.BtnVisualizarClick(Sender: TObject);
begin
  if FileExists(edLogoTipo.Text) then //Identifica se existe um logo
    frxReport.Variables.Variables['LogoSistema'] := QuotedStr(edLogoTipo.Text)
  else
    frxReport.Variables.Variables['LogoSistema'] := QuotedStr('');
  frxReport.ShowReport;
end;
Com o código pronto no FastReport vamos usar a variável na parte do código
begin
  if <LogoSistema> <> '' then
    igLogo.LoadFromFile(<LogoSistema>)
end. 
Quando adicionarmos o componente que vai receber nosso logo vamos marcar algumas propriedades, Com a propriedade Stretched ativa o logo irá ocupar exatamente o tamanho que nós estipulamos, e com a propriedade HightQuality nosso logo irá ter uma qualidade melhor.

Na banda MasterData1 vamos vincular com o DataSet FrxDataSet(cdsOrcamentos), após vincular adicionar os campos "Número do Orçamento" e "Nome do cliente" o "Endereço" e outros dados que o cliente desejar. 

Organizei os componentes desta forma, vinculei a tabela frxDataset que seria a cdsOrçamentos.
Agora para os produtos vamos adicionar uma Detail e com ela vinculamos frxDataset2 com vínculo aos cdsOrcamentos_produtos abaixo do MasterData.

Agora vamos para as parcelas, vinculei a tabela frxDataset3 que seria a cdsOrçamentos_Parcelas.
Para isso iremos utilizar um Detail e com ela vinculamos frxDataset3 com vínculo aos cdsOrcamentos_parcelas abaixo do outro Detail.


Antes de irmos para os totais vamos dar uma olhada e uma "perfumada" no nosso documento, colocar o numero do orçamento no topo do documento, um espaço maior entre as parcelas e os produtos;

Agora iremos para o nosso rodapé com os totais agora, para isso vamos utilizar um ColumnFooter, para ficar no final do nosso documento, e faremos um Sum na Detail.


Resultado final 



Espero ter acendido uma pequena luz no final do túnel de como fazer um documento com três tabelas.

0 comentários:

Postar um comentário