FastReport no Delphi
FastReport é um gerador de relatórios que esta desde da versão Delphi 4, nas versões XE2 e superior ele passou a ser a ferramenta de relatório "integrado". Com o FastReport pode ser criado relatório do mais simples ao mais complexo nas aplicações Win32 e FireMonkey com Delphi. O manual de utilização https://www.fast-report.com/public_download/docs/vcl/FR6/HTML_EN/index.html
Para fazer um relatório simples basta utilizar dois componentes básicos o frxReport e o frxDBDataSet. O frxReport é o editor de relatórios, com um duplo clique em cima dele podemos criar o nosso relatório. Já o frxDBDataSet faz a conexão com o nossos dados pela propriedade DataSet.
Conhecendo a ferramenta
O FastReport possui suporte "adquirido separadamente":
mvc, asp.net, Mono (Windows, Linux, Mac OS X) FMX 2 e Lazarus.
Contem uma ferramenta chamada FastCube para análise de dados e construção de relatórios e gráficos, FastScript gerador de scripts que funciona em várias linguagens e plataformas, o FastQueryBuilder construtor de consultas SQL.
Para informações mais atualizadas dos produtos tem o site https://www.fast-report.com/pt/product/.
mvc, asp.net, Mono (Windows, Linux, Mac OS X) FMX 2 e Lazarus.
Contem uma ferramenta chamada FastCube para análise de dados e construção de relatórios e gráficos, FastScript gerador de scripts que funciona em várias linguagens e plataformas, o FastQueryBuilder construtor de consultas SQL.
Para informações mais atualizadas dos produtos tem o site https://www.fast-report.com/pt/product/.
Vamos conhecer a ferramenta e criar um relatório simples da utilização do FastRepost.
1 - Barra de menus;
2 - Report page tabs: abas para configuração da página do relatório;
3 - Régua;
4 - Barra de ferramentas do objeto: objetos que podem ser adicionados ao relatório;
5 - Report tree: janela onde podemos visualizar as bandas e objetos inseridos no relatório;
6 - Barra de ferramentas do objeto: objetos que podem ser adicionados ao relatório;
7 - Object Inspector: janela para definição das propriedades dos objetos do relatório;
8 - Report designer: local onde vamos adicionar as bandas e os objetos para o relatório;
9 - Data tree: janela com os objetos de dados do relatório. Podemos arrastar facilmente um campo para o relatório;
10 - Status line: semelhante a uma barra de status, com informações sobre o objeto selecionado no relatório.
Primeiro exemplo
Agora vamos iniciar um projeto no Delphi, em um TForm e adicione um frxDBDataSet e um frxReport. Crie uma conexão com o banco de dados de sua preferencia (usarei TClientDataSet para ser compatíveis com vocês).
Vamos vincular o frxDBDataSet com o DataSet (No meu caso o TClientDataSet). Depois dê um duplo clique no frxReport para abrir o editor. Agora vamos criar um novo relatório em menu (File > New Report) apos isso adicionar o DataSet no relatório em Menu (Report > Data) e marque a tabela.
Por padrão sempre vem adicionado estas bandas ReportTitle1, MasterData1 e PageFooter1 e para adicionar alguma outra banda é em barra de ferramentas de objetos >> Insert Band
Adicione os tipos: Page Header, já que o PageFooter1 e Master Data já estão adicionado. O Master Data, Para adicionar um DataSet no MasterData de dois cliques na (Tarja laranja) e selecione a Tabela.
Existem duas maneiras de adicionar os campos na banda Master Data para exibir os dados.
Arraste os campos da janela Data tree para o relatório. Note que após inserir os campos, ao passar o mouse, é mostrado uma seta, onde podemos clicar e será exibido um menu com os campos do DataSet, assim fica fácil modificar o objeto para outro campo da consulta.
Outra forma é adicionar o campo Text object da barra de ferramentas. Será aberto um editor com alguns botões.

No editor, temos abas onde vamos configurar o formato do campo, formatações de fonte etc. o primeiro botão da aba Text, acessa outro editor, onde podemos escolher os campos da consulta, variáveis do relatório, funções, etc.
Podemos usar o editor do Text Object ( O "A" vermelho ao lado) para adicionar os títulos as nossas colunas do relatório, onde basta digitar o texto na parte Text dando dois cliques no campo.

Note que ao adicionarmos um Text Object ou mesmo adicionar um campo usando a janela Data tree, existem linhas que nos auxiliam para que os controles fiquem alinhados tanto horizontalmente, como verticalmente.
No delphi na tela onde contem os componentes colocar um botão (BtnVisualizar) e em seu OnClique c colocar o código abaixo.
procedure TFSistema.BtnVisualizarClick(Sender: TObject);
begin
frxReport.ShowReport;
end;
Ao clicar no botão, temos a visualização do nosso primeiro relatório em fastRepost.

Formatação de objetos
Como podemos ver no relatório que criamos, o campo VALOR_VENDA, esta como texto, sem a devida formatação. Para ajustar isso, abra o relatório e dê um duplo clique no campo. No editor, acesse a aba Format e configure, onde indicamos o tipo de formatação e o separador decimal (vírgula) do formato.
Para visualizar podemos fazer por dois jeitos, pelo botão BtnVisualizar que criamos antes ou clicamos duas vezes no frxReport e clicando no F9. E se precisássemos modificar a formatação de um objeto (fonte, cor etc) de acordo com algum parâmetro que existisse, como faríamos? É bastante simples.
De um duplo clique para acessar o editor e a aba Highlight. Na opção Condition, digite: “<frxDBDataset."VALOR_VENDA"> > 100”. Marque em Font a opção Bold. O botão Color, indica a cor do texto quando a condição do objeto for verdadeira.
Você também pode usar o botão para acessar o editor de expressões para montar a mesma manualmente. De acordo com o configurado antes, o campo "VALOR_VENDA" do relatório deve aparecer em vermelho quando o valor desde for maior que 100,00.

Caso você deseje mudar a formatação de todo “a linha”, para que não precise fazer manualmente a configuração de cada objeto, basta selecionar todos os objetos e acessar a propriedade HighLight>Condition e fazer a mesma configuração anterior.
Outra formatação bastante usada é a de indicar a quantidade de páginas e a página atual do relatório. O FastReport possui variáveis que retornam essas informações e que são fáceis de serem utilizadas.
Acesse a aba Variables do Data tree e arraste para o formulário um Date e um TotalPages. Para customizar esses variáveis, basta dar um duplo clique e digitar o texto que deseja.
Cada relatório é um arquivo da extensão ".FR3". Salve o arquivo com o nome de "teste.fr3" e coloque o código abaixo em um botão.:
procedure TFSistema.BtnVisualizarClick(Sender: TObject);
begin
frxReport.LoadFromFile('teste.fr3');
frxReport.ShowReport();
end;
Obs: Caso não encontre o arquivo ".fr3", nenhum erro é mostrado, apenas apresenta uma tela cinza.
Temos uma função LoadFromFile para carregar o arquivo de relatório no frxReport. Com isso podemos carregar os arquivos ".fr3", se não encontrar nos retorna falso! Pode ser utilizado desta forma.
procedure TFSistema.BtnVisualizarClick(Sender: TObject);
begin
if frxReport.LoadFromFile('teste.fr3') then
frxReport.ShowReport()
else
ShowMessage('Não encontrado o arquivo do relatório!');
end;
Vamos fazer a mesma listagem anterior, com a diferença que vamos retornar todos os produtos, agrupados pela sua unidade de medida.
Vamos criar um novo relatório (File > New report) Não esqueça de marcar o Data do relatório, no MasterData vincule com sua tabela de conexão de banco (Em meu caso o CDS). Adicione uma banda GroupHeader. Vamos indicar que o agrupamento se dará pelo campo UNIDADE. Podemos ainda indicar uma expressão para o agrupamento.Nas opções de agrupamento, podemos configurar para que a cada grupo, seja mostrado em uma nova página ou drill-down, onde clicamos sobre o grupo para mostrar os dados.
Obs: caso você escolha a opção drill-down ao executar o relatório, apenas os grupos serão mostrados. É necessário clicar em cima do mesmo para exibir os registros.
Obs: O SQL que vai para o relatório tem que estar ordenado pelo campo que esta sendo agrupado, em nosso caso pela unidade de medida.
Somatórios
Quando utilizamos o agrupamento em relatório temos a opção de contar a quantidade de registros que estão agrupados ou uma soma no valor total que esta no agrupamento.
Vamos fazer um exemplo: Adicione uma banda GroupFooter, dois "Text Object" e acesse o botão "Insert Aggregate" da aba Text. No editor, vamos configurar um campo que terá seu valor somado, que no caso é "VALOR_VENDA".
Faça a formatação no campo, semelhante ao campo "Valor_Venda". Rode o relatório e note que temos o somatório por grupo, e se quisermos um "total geral" no final do relatório? Basta adicionar uma banda Footer1 e fazer a mesmo processo de adicionar os campo ir para parte de aggregate e em seguida em formatação.
Insert Aggregate
Obs: temos uma opção bem interessante na configuração do somatório. Caso precisássemos mostrar um somatório acumulado por grupos, basta marcar a opção Running total na janela Insert Agreggate. Assim, a cada final de grupo, teríamos um somatório acumulado.

Outro caso muito comum e de mostrar os dados master e os details. Exemplo clássico: Vendas, dados do comprador podemos considerar no master, e os produtos da venda, são o Detail.
Adicione um DataSource e faça a ligação com a consulta master. No componente (ClientDataSet, Query, Table etc) com os dados da consulta detail, acesse a propriedade MasterSource e escolha o DataSet anterior. Em MasterFields, acesse o editor e configure o campo de relacionamento (nesse caso CODIGO).
Precisam ter um relacionamento entre as duas tabelas. Primeiro, teremos duas consultas separadas, uma para a master e outra para detail. Nesse exemplo, estou pesquisando os Produtos e as matérias primas. Precisaremos, portanto de dois frxDBDataSet (um para cada consulta). E adicionar a nova tabela em "Data" menu (Report > Data)
Crie um novo relatório (File > New Report). Salve com o nome de Detail.fr3 e adicione as seguintes bandas: Header1, MasterData, DetailData e Footer1. Na MasterData você deve configurar o frxDBDataSet que tem os dados dos "Produtos" e consequentemente, para o DetailData os dados das "materias primas". E na MasterData marcar a propriedade "PrintFDetailEmpty = True" para mesmo que não houver "matérias primas" apresentar a linha com os "produtos".
procedure TFSistema.BtnDetailClick(Sender: TObject);
begin
if frxReport.LoadFromFile('Detail.fr3') then
frxReport.ShowReport()
else
ShowMessage('Não encontrado o arquivo do relatório!');
end;
Execute o relatório e veja que os dados estão agrupados de acordo com o nome do produto.
Exportação de relatórios do FastReport
FastReport tem uma quantidade grande de tipos de exportações.

Para fazer uma exportação e bem simples, vamos fazer o exemplo para exportar para .pdf, basta adicionar no formulário um frxPDFExport. Executo o projeto e note que um botão foi adicionado para exportar o relatório. Para adicionar outras formas basta apenas adicionar os componentes no formulário.
Enviar e-mail no FastReport
Na versão comercial do FastReport, diferente da versão que acompanha o Delphi, existe a opção de envio do relatório por e-mail. Ao clicar no componente, um editor será mostrado. Nele, na aba E-mail configuramos para quem o relatório será enviado, assunto, corpo do e-mail e escolhendo o formato desejado.
Na aba Account, configuramos o e-mail de envio, ou seja, as nossas configurações de e-mail para o envio do mesmo.


Então vimos como trabalhar com o FastReport de uma forma básica e rápida. Com o FastReport existem muitas outras possibilidades para criarmos relatórios desdo básico ao relatório mais complexo para suas aplicações Delphi, assim.
Exemplo: Download do exemplo
Exemplo: Download do exemplo
Bom dia!
ResponderExcluirComo posso criar um preview personalizado tal como é possível no QuickReport?
Dentro dos componentes do frx ha uma tela com o nome de frxPreview é essa tela que faz a impressão e visualização acredito que queira personalizar com essa tela tem tudo que precisa para começar.
ExcluirNão, ele quer customizar o formulário de pré-visualização.
ResponderExcluirObrigado pela tentativa. Eu acredito que a solução está no Preview tal como existe no QuickReport e se não me engano o frxPreview.
ResponderExcluirGente tenho mais uma duvida, mas está é muito difícil de resolver. Existe uma situação que preciso desenhar no band, que preciso fazer ao terminar a impressão na ultima linha da pagina que ele desenhe a linha e para isso preciso saber quando termina o grupo na página. Lembrando que não é uma única página a ser impressa e isto pode ocorrer nas paginas seguintes.
ResponderExcluirOu seja precisaria saber quando uma linha chegou ao final da pagina e quando ela inicia na outra.
Precisa disso para fazer oque?
ExcluirVocê pode mapear a pagina ver quantas vezes pode ser impressa a band e com isso sabera quando chegará no fim da pagina, e que seja um contador que reinicie a cada pagina e com isso sabe q é o inicio. erra isso ou so enrolei passa um exemplo de como quer?
Como posso adicionar os campos em tempo de execução?
ResponderExcluirBom dia!
ResponderExcluirEstou tendo um problema na somatório dos agrupamentos, onde, no meu relatório eu agrupo vendas por fornecedor e depois do grupo somo os valores das vendas, porém, esta soma não esta se dividindo por grupo, tipo, tenho o primeiro fornecedor com uma venda de R$ 10, no campo agrregate ele aparece 10 normal, no segundo grupo (segundo fornecedor ) tem duas vendas de 10 cada, na somatório deveria aparecer 20, porém, ele esta somando também o valor do grupo anterior, onde, fica na somatório o valor de R$ 30. No campo aggregate marquei a opção running total para somar cada grupo. Alguém sabe me dizer em que ponto posso ter errado? caso precise de alguma informação pode perguntar
Como esta fazendo o agrupamento é pelo GroupHeader?
ExcluirAna Paula, já consegui solucionar, para somar normalmente os valores dos itens apresentados no groupHeader, só tive que alterar o ultimo parâmetro do aggregate SUM de 2 para 1, depois passou à funcionar normalmente.
ResponderExcluirObrigada por dar a solução!
ExcluirOlá, estou fazendo um relatório com um campo (do próprio banco) anotações, porém dependendo do tamanho dessa anotação fica um espaço enorme entre um dado e o outro. Tem como deixar a altura automatica, para que fique do tamanho de cada anotação?
ResponderExcluirSim. Coloca a propriedade "StretchMode" dos campos "smMaxHeight" para poder se expandir de acordo com o conteúdo, e na banda que esse campo estiver marque a propriedade "Stretchd" para "True" para ela poder crescer junto com o campo.
ExcluirOlá, parabéns, esse artigo me ajudou MUITO, mas ainda tenho uma dúvida: Preciso que meu relatório apresente:
ResponderExcluirNome (tabela cliente), nacionalidade (tabela país), Logradouro (tabela logradouro), Cidade (tabela cidade), UF (tabela Estado) etc, sendo esses clientes dentro de uma outra tabela (item cliente).
Exemplo: João, brasileiro, portador do CPF 0, RG 0, residente na Rua X, no Município Y, Estado de Z. Ou seja, informações de várias tabelas e na mesma linha.
Pode me ajudar?
faz um SQL com o conteúdo que quer enviar e joga em uma tabela exemplo
Excluirselect CL.NOME_CLIENTE, CI.CIDADE, U.UF, CL.CPF, CL.RG, P.NASCIONALIDADE
from CLIENTES CL
inner join CIDADES CI on CI.CODIGO_CIDADE = CL.CODIGO_CIDADE
inner join PAIS P on P.CODIGO_PAIS = CL.CODIGO_PAIS
inner join ESTADOS U on U.CODIGO_ESTADO = CI.CODIGO_ESTADO
where CL.CODIGO_CLIENTE Is not null + Filtros se houver
Com isso fica em uma única tabela se existir muitos registos de Nacionalidade e Cidade repetidos você pode criar um agrupar por esse conteúdo no relatório, se for agrupar por algo lembre de ordenar por o que esta agrupando para não aparecer registos duplicados
Espero ter ajudado qualquer coisa posta aii
select CL.NOME_CLIENTE,
ResponderExcluir(SELECT CI.CIDADE FROM CIDADES WHERE CI.CODIGO=CL.CODIGO_CIDADE) AS CIDADE,
(SELECT U.UF FROM ESTADOS WHERE U.CODIGO_ESTADO = CI.CODIGO_ESTADO FROM CIDADES) AS ESTADO,
(SELECT P.NASCIONALIDADE FROM PAIS WHERE P.CODIGO_PAIS =CL.CODIGO_PAIS) AS NACIONALIDADE,
U.UF, CL.CPF, CL.RG
from CLIENTES CL
where CL.CODIGO_CLIENTE Is not null + Filtros se houver
Como sub select dentro de um select o processo do banco de dados fica um pouco mais lento dependo da consulta!
ExcluirOi Ana, parabens me ajudou muitoo
ResponderExcluirAna.. Estou com um problema aqui no meu relatorio. Uso o Delphi Xe7 Juntamente com o FRXReport para visualizar meus Relatórios. Tenho o campo Total declarado no banco de dados (Firebird) como VarChar. Faço o seguinte código no Insert Agreggate do Relatório [SUM()] invés dele fazer a soma dos campos ele apenas ajunta. Ex: Total1 36 Total2 36. Ele junta 3636. E não soma. Se poder me ajudar quanto a isto.
ResponderExcluirCom o campo varchar não vai funcionar o "Agreggate" teria de ser um campo com formato de valor. Você pode criar um campo "InternalCalc" e jogar o valor para ele e usar o "Agreggate" com esse campo. Isso resolveria? Comenta ai
ExcluirBoa noite, estou com uma duvida. Tenho duas tabelas, cliente e ordem, sendo que na ordem existe apenas o código do cliente e o nome.
ResponderExcluirPreciso que o relatório puxe os dados que estão na tabela ordem e com base no código do cliente puxe as informações do cliente da tabela cliente.
Sem querer abusar, mas já abusando, pode me dar um passo a passo de como fazer isso? Sou completamente cru e estou pesquisando já a vários dias em busca de uma solução.
Obrigado.
Não há como fazer um SQL juntando as duas tabelas? Nesse link tem um exemplo de como normalmente utiliza quando tem duas tabelas(Num exemplo como o seu, mas há diversas formas de fazê-la) e preciso exibi-la
Excluirhttp://www.4shared.com/rar/jpX5fHA2ba/000026.html?
Para distribuir o aplicativo os arquivos .fr3 devem ir junto com o executável? Existe possibilidade de incorporar os relatórios no executável como em outras ferramentas?
ResponderExcluirDa forma tradicional tem que ser enviado junto ao executável sim.
ExcluirJá vi sucessos em coloca-los dentro do banco de dados.
Ou deixa fixo no arquivo "frxReport" como isso não precisaria enviar junto mas também teria de ter um para cada arquivo fr3 (Não muito vantajoso acredito)
Você teria um exemplo de como colocá-los no banco de dados como citado?
ExcluirTem um exemplo utilizando um TClientDataSet que é só substituir por um componente vinculado a banco de dados
ExcluirNo final da esplicação tem um link para doawnload, Qualquer duvida e só postar aqui
http://anaprogramadorajunior.blogspot.com.br/2015/12/criar-etiqueta-no-fastreport.html
Ola, estou elaborando um relatório para impressão de etiquetas no fast, mas gostaria de adicionar uma opção em que o usuário mude os campos e edite a ordem em tempo de execução.
ResponderExcluirtem alguma dica de como modificar o relatório em tempo de execuão?
Que eu saiba não há como ordenar dentro do fast. Por que não coloca o campo para ordenar antes de exibir o fast direto no SQL?
ExcluirOla, estou elaborando um relatório para impressão de etiquetas no fast, mas gostaria de adicionar uma opção em que o usuário mude os campos e edite a ordem em tempo de execução.
ResponderExcluirtem alguma dica de como modificar o relatório em tempo de execuão?
Crie um campo de ordenação “ORDER” e deixando editável para o usuário a alteração do mesmo e na hora de fazer o comando de impressão faça a ordenação do mesmo. Só lembre de fazer o controle para o mesmo não poder se repetir.
Excluir- Estoque fazendo um relatório de etiquetas para argox, sendo que
ResponderExcluirquando imprime, salta uma etiqueta, quero passar para o fastreport
mas ainda estou usando o delphi 7, apesar que no meu delphi 7 tem
o fastreport;
- Será que alguem pode me ajudar???
Desde já agradeço a todos....
Como assim saltar uma etiqueta? Fazer a impressão de uma etiqueta em branco?
Excluiresse salto voce configura nas configurações de estoque da ARGOX
ResponderExcluirou configuração de paginas no fast
Normalmente faço esse controle no fast ou até mesmo no delphi enviando com um descrição em branco e quando é branco fica o quadradinho da etiqueta em branco.
ExcluirPessoal, estou montando um relatório, onde o usuário irá selecionar o cliente em um dbgrid, então através de botão, irá imprimir os dados somente daquele cliente (via query). Alguém pode me ajudar?
ResponderExcluirPassa seu e-mail que passo um exemplo.
ExcluirParabéns pelo artigo Ana. Gostaria de uma ajuda, preciso ordenar o dataset do delphi de dentro do fastreport, tem como ? Estou usando uma dialogpage do fast onde o usuário escolhe ordenar o relatório por código ou descrição.
ResponderExcluirQue eu saiba não tem como ordenar dentro do fast. Mas vou pesquisar se tiver como coloco mais um comentário aqui.
Excluirobrigado Ana,
ExcluirAtt.
Stéfano
Prezada Ana,
ResponderExcluirEstou saindo do Rave indo para o Fast. Tenho uma duvida, criei variáveis no relatório e se eu passo numero, tudo ok, agora se passo string da erro! Poderia me dar uma ajuda. Grato
Ola José, Que erro que está ocorrendo? Você esta passando a variável com o QuotedStr?
ExcluirNormalmente quando é string passo assim para o relatório:
frxReport.Variables.Variables['Variavel'] := QuotedStr(Trim(edVariavel.text));
Ola Ana, tenho uma duvida, fiz um relatório a partir view, ele roda direitinho só que está listando somente o primeiro item, pode me dar uma dica?
ResponderExcluirOla Jossimar, Será que o "DataSet" do seu "MasterData1" ou "DetailData1" esteja marcado?
Excluirboa noite. Como posso então saber quando o band terminou de imprimir na pagina e traçar uma linha no final dela (desenho para fazer oi fechamento das bordas) e então começar na próxima página.
ResponderExcluircomo ria isto. Favor envie exemplo ou código para ficar melhor esclarecido.
Ola! Bom dia!
ExcluirSe for apenas colocar uma linha no final de cada página pode ser colocado em um "PageFooter" essa banco imprime no final de cada página ( Normalmente coloco a Quantidade de páginas nele )
Era isso?
Olá não era isto não. Esta alternativa é trivial e já tentei. Não fica da forma que gostaria...Fica com linha no rodapé. A alternativa foi usar uma band que fica sobrepostas as outras.
ExcluirAlguém pode me fazer uma caridade e me doar uma versão do FastReport XE7. Não posso comprar...meu e-mail é : amoraes47@gmail.com.
ResponderExcluirFicarei eternamente grato.
Abraços
Alex -DF (61)98445 9724(zap)
Bom dia Ana, pessoal.
ResponderExcluirBaixei o XE10.1 Berlin e é impressão minha ou o mesmo não tem nenhum componente relatórios?
Tenho que baixar de terceiros?
Ola! Bom dia!
ExcluirNão cheguei a baixar o XE10.1 Berlin ainda. Mas pelo que vi em um fórum tem que ser de terceiro ( Mas não vou dar certeza )
Olá, Ana, bom dia!
ResponderExcluirNuca usei o Fast Report. Sempre criei meus próprios relatórios com qualidade usando recursos do próprio Delphi. Mas resolvi mudar e fazer tudo pelo Fast Report. Estou no estágio 1 (conhecendo, brincando e testando). Nesse estágio fiz relatórios simples, listando apenas os dados da tabela. Agora quero avançar e tentar fazer o que eu fazia antes. Veja um exemplo do que preciso:
Tenho um campo CODIGO em uma tabela de 4 caracteres, sendo que o 1º é um nível, e 2º outro nível e o 3º e 4º são outro nível.
Digamos que n nível 1 eu tenha (de 0..9), 10 possíveis diretorias: 0-Diretoria Administrativa, 1-Diretoria financeira, 3-Diretoria de Produção.
Dentro do nível 0 eu tenho até 9 gerências: 00-Financeiro, 01-Faturamento, 02-Recursos Humanos, etc
Vamos pegar 00-FInanceiro, que se divide em: 0001-Contas a pagar e 00012-Contas a receber. Isso é só para ilustrar.
Quando eu faço meu relatório direito, a impressão fica assim:
0 - Diretoria financeira
0 - Financeiro
01 - Contas a pagar
02 - Contas a receber
A pergunta é: Como faço para manter essa mesma estética, considerando que a única diferença é o tamanho do campo: Quando é um dígito digamos que seja coluna 1, 2 dígitos=coluna, 4 dígitos igual coluna 3.?
Não sei se dá para fazer isso, mas é muito importante, pois o resultado tem que ser como um Treeview.
Agradeço pela atenção.
Verifica a postagem a baixo acho que seria mais ou menos isso
Excluirhttp://anaprogramadorajunior.blogspot.com.br/2017/03/impressao-de-plano-de-contas-fastreport.html
Oi Ana. Tenho que imprimir um relatório em uma impressora não fiscal térmica com o FastReport. Mas não sei como fazer sobre a questão do comprimento do relatório.
ResponderExcluirPode me ajudar?
Só configurar conforme o tamanho do papel conforme da impressora, no duplo clique no FastReport se configura isso..
ExcluirPessoal, estou montando um relatório, onde o usuário irá selecionar o cliente em um dbgrid, então através de botão, irá imprimir os dados somente daquele cliente (via query). Alguém pode me ajudar?
ResponderExcluirNo "DetailData" coloque o "DataSet" a tabela que esta relacionada no dbgrid, e depois no "DetailData" preencha a propriedade "RowCount" com "1" com isso sempre exibira apenas um resultado que é o que esta selecionando no dbgrid.
ExcluirPORQUE O FAST REPORT NÃO APARECE NO FIREMONKEY ?
ResponderExcluirOlhaaa! Fast 5, funciona para projetos VCL, não funcionam em Firemonkey multi plataforma, tem a versão FMX patch B9 do Fast Reports, é mais limitada, porém funciona para projetos assim.
ExcluirOla boa tarde estou fazendo um relatório com view porem tenho adicionar mais algumas informações que seria rescisão porem este campos nem sempre terá valores oe quando tiver nem vai ter valores com mesma quantidade de colunas exemplo salario tem todo mes vai mostra porem rescisão não teria alguma dica como tratar
ResponderExcluirOie boa tarde! Tem como colocar em um "frxChild" e controlar a visibilidade dele pelo código Ex:
Excluirprocedure Child1OnBeforePrint(Sender: TfrxComponent);
begin
Child1.Visible := Trim() <> '';
end;
Boa tarde, tenho um Relatório Master com um Subrelatório no FastReport 5, o master recebe um parâmetro no campo ex: (codigo_contrato) e não estou conseguindo passar o parâmetro recebido para o subrelatório que possui o mesmo campo.
ResponderExcluirBoa tarde! Como esta tentando fazer o envio ao campo?
ExcluirPrezada Ana,
ResponderExcluirTenho uma dificuldade em implementar este seguinte sistema para gerar a listagem e enviar para o QuickReport, por exemplo:
Em um ComboBox escolho um tipo de atendimento, ou mesmo em CheckBox:
[ ] Assistente Social
[ ] Odontologia
[x] Atendimento Médico
Feito a checagem, faço agora a checagem dos pacientes, por exemplo:
[ ]Antonio de Souza
[x]Amarildo Costa
[ ]Benedito Nascimento
[x]Elisangela Souza
[x]Francisco Pereira
[ ]....
[ ]..
....
...
.
Depois de feito a checagem, envio para o QuickReport
Ou salvar em uma tabela de atendimentos, Qual a situação melhor ???
Muita dúvida de como fazer esta parte.
Ficarei muito agradecido pela ajuda.
Boa tarde! Deixa eu ver se entendi....
ExcluirTem como ter vários "Tipo de atendimento" e vários "pacientes" e se selecionar ex "Assistente Social" e "Atendimento Médico" terá de exibir estas duas etiquetas para o paciente selecionado ? Isto?
Boa tarde. Pesquisei no google e cheguei ao seu blog. Tenho um sistema de portara que os usuários vai lançando entrada e saídas durante o serviço, porém quando tem muitos registros, eles querem que posiciona na última página o relatório, para ver os últimos registro lançados. E até agora não achei função no fastreport para resolver.
ResponderExcluirBoa tarde. Não tem como fazer a ordenação decrescente antes de enviar para o FastReport? Com isso os últimos registros sempre vão estar ao topo.
Excluirfiz uma rotina de ordenação de data e hora, para seguir o que foi acordado no contrato, então não posso alterar essa rotina.
ResponderExcluirEu pesquisei bastante nos manuais e exemplos que tem no Fast e não achei nenhuma rotina que manda para a ultima pagina, mas acredito que tenho sim alguma maneira.
ExcluirOlá, Estou desenvolvendo um sistema de venda, fiz a configuração correta do mestre detalhe dos componentes de acesso a base de dados, mas ao imprimir esta mostrando todas as vendas com os produto no relatorio, como faço para imprimir apenas o registro atual da venda que esta no form? usando o delphi 10,3,3 e fastreport com firebird
ResponderExcluirNão vincule a tabela (DataSet) de Vendas/Compras no MasterData ou no DetailData, ao invés disso coloca no campo "Número de registro" (Duplo clique na tarja laranja da MasterData/DetailData vai ter o campo com default "0") altere para o número "1" para ser exibida apenas da venda/Compra atual. Espero ter ajudado
ExcluirNo SELECT, pega a data que foi emitido e agrupa, caso tenha nais de uma venda:
ResponderExcluirSELECT codigo, MAX(emissao) FROM produto GROUP BY codigo;
Então o que eu preciso é fazer a impressão do recibo da compra ou venda que está sendo feita no momento.
ResponderExcluirOpa, respondido no e-mail!
ExcluirOlá, estou migrando do RaveReports para o FastReport, utilizo o Delphi XE8, com relatórios no RaveReports.
ResponderExcluir- Como poderia fazer isto no FastReport :
1 - setar conexão no objeto TfrDBXDatabase, em tempo de execução.
2 - utilizar clientdataset que foi estanciado no Delphi no código Scrip do FastReport.
3 - No RaveReports por exemplo, o componente DataTet tem a propriedade LookupDataview, LokupDisplay e LookupField. Como fazer no FastReport, uma vez que os campos para lookup estão em outro dataset, já consegui fazer isto colocando um objeto qry no relatorio, a qestão é que teria de mudar a coneção em tempo de execução.
- alguém poderia me ajudar !
Bonito trabalho Ana Paula. Tenho certeza que ajudou muita gente, inclusive a mim. Esqueci de te elogiar a 5 anos atras. :-) fui o primeiro a comentar em (26 de setembro de 2014). Poderia falar mais a respeito disto já que estamos no FastReport 6. Há muito pra explorar ainda nele e dá pra fazer coisas incríveis que não vejo em outro gerador de relatórios. Grande abraço.
ResponderExcluirBom dia! Olhaa obrigada significa muito!
ExcluirFastReport tem varias coisas incríveis estou anotando vários detalhezinhos para fazer um novo post do FastReport! Forte abraço.
Boa tarde. Alguém sabe me dizer se eu consigo deixar a marcação de fontes embutidas como default, quando realizo a exportação de um relatório do fast para PDF? Estou com problemas nesta questão, pois sempre me esqueço e se tento visualizar em um IPHONE por exemplo, os dados não ficam legíveis, só aparecem pontinhos.
ResponderExcluirBoa tarde! Já presenciei um problema semelhante, isso é por que a fonte não é a padrão.
Excluir1- Pode colocar a fonte padrão do Fast no documento "Arial"!
2- Outra sugestão mais eficaz é fazer a exportação para pdf por uma impressora virtual ex: DoroPDF!
Se encontrar alguma outra solução alem destas para esse problema descreve aqui por favor!
Olá Ana, cheguei no seu site procurando uma solução para enviar email pelo FR6.7 através da porta 587.
ResponderExcluirComo vc sabe a porta padrão no Brasil é a 587 pois fecharam a 25.
Até troquei email com o Paul Gursky chefe do FR que respondeu ser impossível enviar pela 587. Alterei tbm o frx.inc para usar INDY ao invés do frxMail mas não resolveu.
Você tem alguma idéia de como resolver ??
Agradeço a atenção e parabéns pelos seus post sobre o FR, boa didática e dedicação. Parabéns!!
Bom dia. Obrigado pelas informações. Felizmente conseguimos configurar no processo de exportação, manter por default as fontes já embutidas, assim o usuário evita de esquecer. também incluímos a opção do PDF/A na opção e desta maneira, solucionamos o problema de dados ilegíveis nos relatórios quando são abertos por algum aparelho IOS.
ResponderExcluirObrigado. Me ajudou muito esse artigo. :D
ResponderExcluirBoa tarde,
ResponderExcluirEstou usando os seus exemplos para criar meus relatório. Parabéns pelos seus conteúdos.
Estou com um problema quando coloco outro field no ClientDataSet e no report ele aparece e quando coloco ele no masterDatail no relatório a informação não aparece.
Boa tarde! Verificou se ele está dentro da MasterDatail? Ou tentar dar um duplo clique no TfrxDBDataset e atualizar as informações que ele apresenta.
ExcluirBom dia!
ResponderExcluirE como faço um relatório que contenha :
Dados do pedidi
Itens do pedido
Parcelas do Pedido (Nro da parcela, data e valor,
Utilizando nesse caso 3 tabelas
Boa tarde! Verifica o post abaixo nele tem um exemplo com 3 tabelas, uma simulação de um documento de Orçamento com produtos e parcelas.
Excluirhttps://anaprogramadorajunior.blogspot.com/2021/10/fastreport-no-delphi-com-dois-detail.html
Lien incorrect exemple depuis. 2014. C'est tres bien
ResponderExcluirBoa tarde, você sabe dizer se o FastReport têm limitações na versão do Delphi 12?
ResponderExcluir