Olá "escovadores de bits" (essa é antiga hein kakaka), vamos a mais uma aula sobre Fast Report. Dessa vez iremos falar sobre o CrossTab Report. Este é um tipo de relatório, onde podemos gerar colunas "automaticas" com base nos campos de uma tabela. O relatório irá ficar parecido com uma planilha do excel. Vamos ver um exemplo no excel:
Agora vamos para o nosso projeto. Adicione o objeto frxCrossObject1 ao form. É ele q nos permite fazer a "mágica" acontecer. Adicione também uma nova Query (Name = sqlVendas) e um novo frxDBDataSet (Name/UserName = frxSqlVendas, ligando a propriedade DataSet ao sqlVendas)
Para gerar o relatório, vou usar 2 tabelas: DOCUMENTOS e VENDAS, fazendo um JOIN entre elas, gerando 3 colunas:
SELECT v.data, d.descricao, SUM(v.total) AS total
FROM vendas v
LEFT JOIN documentos d ON d.id_documentos = v.id_documento
GROUP BY v.data, d.descricao
Agora vamos para o Designer, criar no relatorio. Dentro dele ja inicie um relatorio novo. Remova todas as bandas e adicone somente a banda PageHeader.
Vá ao menu Relatório, opção Dados, e selecione frxVendas.
Agora adicione um object DBCrossTab.
Na janela de configuração do CrossTab, vamos arrastar os fields para as posições desejadas, e depois clicar OK. Fazendo isso, ja podemos ter um preview.
Agora só falta a perfumaria. Selecione uma das celulas do Crosstab e configure como desejar.
Agora o código pra visualizar o relatório. Adicione um novo Button e insira o código abaixo:
// abre a query
sqlVendas.Close;
sqlVendas.Open;
// limpa o relatório anterior q foi carregado no frxReport
// se vc deixou a propriedade StoreInDfm = True, não use a linha abaixo
frxReport1.Clear;
// carrega o relatório
// se vc deixou a propriedade StoreInDfm = True, não use a linha abaixo
frxReport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'Relatorio_Vendas.fr3');
// mostra o relatorio
frxReport1.ShowReport;
sqlVendas.Close
Agora vamos para o nosso projeto. Adicione o objeto frxCrossObject1 ao form. É ele q nos permite fazer a "mágica" acontecer. Adicione também uma nova Query (Name = sqlVendas) e um novo frxDBDataSet (Name/UserName = frxSqlVendas, ligando a propriedade DataSet ao sqlVendas)
Para gerar o relatório, vou usar 2 tabelas: DOCUMENTOS e VENDAS, fazendo um JOIN entre elas, gerando 3 colunas:
SELECT v.data, d.descricao, SUM(v.total) AS total
FROM vendas v
LEFT JOIN documentos d ON d.id_documentos = v.id_documento
GROUP BY v.data, d.descricao
Agora vamos para o Designer, criar no relatorio. Dentro dele ja inicie um relatorio novo. Remova todas as bandas e adicone somente a banda PageHeader.
Vá ao menu Relatório, opção Dados, e selecione frxVendas.
Agora adicione um object DBCrossTab.
Na janela de configuração do CrossTab, vamos arrastar os fields para as posições desejadas, e depois clicar OK. Fazendo isso, ja podemos ter um preview.
Agora o código pra visualizar o relatório. Adicione um novo Button e insira o código abaixo:
// abre a query
sqlVendas.Close;
sqlVendas.Open;
// limpa o relatório anterior q foi carregado no frxReport
// se vc deixou a propriedade StoreInDfm = True, não use a linha abaixo
frxReport1.Clear;
// carrega o relatório
// se vc deixou a propriedade StoreInDfm = True, não use a linha abaixo
frxReport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'Relatorio_Vendas.fr3');
// mostra o relatorio
frxReport1.ShowReport;
sqlVendas.Close
Bem pessoal, é isso. Não esqueçam dos comentários. (E de ajudar na vaquinha.com.br rsrsrs)
Parabéns! Muito didático!
ResponderExcluirEstou usando um crosstab, no entanto, como as vezes a quantidade de linhas será pequena, 3 ou 4 gostaria que o próximo crosstab ficasse na mesma página. Está tendo sempre um quebra.
ResponderExcluir