Como imprimir Linhas em branco no FastReport
25/02/2010
0
Preciso imprimir um master data no FastReport e queria que mesmo que não tivesse dados para imprimir e se o número de linhas fosse menor que 24, fosse impresso estas 24 linhas. Caso Seja um número maior não há problemas, a questão é este limite mínimo de 24 linhas que precisam ser impressas mesmo que não tenha dados para serem impressos, logicamente estas linhas terão de ser impressas em branco.
Só pra detalhar mais, o cenário se trata de uma relação de parcelas a serem pagas, que deverão constar no relatório da seguinte maneira:
Supondo que existam 24 parcelas:
1 parcela valor data| 13 parcela valor data
2 parcela valor data| 14 parcela valor data
3 parcela valor data| 15 parcela valor data
4 parcela valor data| 16 parcela valor data
5 parcela valor data| 17 parcela valor data
6 parcela valor data| 18 parcela valor data
7 parcela valor data| 19 parcela valor data
8 parcela valor data| 20 parcela valor data
9 parcela valor data| 21 parcela valor data
10 parcela valor data| 22 parcela valor data
11 parcela valor data| 23 parcela valor data
12 parcela valor data| 24 parcela valor data
Supondo que só existam 4 parcelas deverá assim ser impresso:
1 parcela valor data | 13 parcela (em branco) (em branco)
2 parcela valor data | 14 parcela (em branco) (em branco)
3 parcela valor data | 15 parcela (em branco) (em branco)
4 parcela valor data | 16 parcela (em branco) (em branco)
5 parcela (em branco) (em branco)| 17 parcela (em branco) (em branco)
6 parcela (em branco) (em branco)| 18 parcela (em branco) (em branco)
7 parcela (em branco) (em branco)| 19 parcela (em branco) (em branco)
8 parcela (em branco) (em branco)| 20 parcela (em branco) (em branco)
9 parcela (em branco) (em branco)| 21 parcela (em branco) (em branco)
10 parcela (em branco) (em branco)| 22 parcela (em branco) (em branco)
11 parcela (em branco) (em branco)| 23 parcela (em branco) (em branco)
12 parcela (em branco) (em branco)| 24 parcela (em branco) (em branco)
Obs: Há um campo na tabela em que o master data que informa o número da parcela(1 parcela, 2 parcela, 3 parcela, etc.)
Sugestões, idéias, dicas, críticas serão muito bem-vindas.
Abraços.
Ari Sato
Posts
25/02/2010
Emerson Nascimento
fica assim: ao abrir os datasets, você verifica a quantidade de parcelas informada no dataset principal e faz um laço para inclusão na tabela detail.
numparcelasdb := master.parcelas.asinteger;
if numparcelasdb < 24 then
for parcela := numparcelasdb to 24 do
begin
detail.append;
detail.numparcela.asinteger := parcela;
detail.post; -> somente post, não execute o applyupdates
end
depois basta imprimir.
25/02/2010
Ari Sato
Estou trabalhando com uma query no delphi que é conectada com o frxDBDataSet também no delphi, ao qual eu chamo no form do FastReport. Só estou usando como detail o prórpio MasterData por não precisar de um detalhamento maior. Vou tentar fazer do jeito que me ensinou pra ver se funciona.
05/03/2010
Ari Sato
Uma stored procedure que eu chamo sempre que o número de parcelas estiver entre 1 e 24, caso contrario eu passo as instruções via sql no ADOQuery conectado com o correspondente TFRXDBDataset. O código da Stored procedure:
CREATE PROCEDURE jur_cons_mj6a1_valores
( @idjp6a int
)
AS
CREATE TABLE #SEQ
(IDseq Int Identity(1,1), campo int);
insert into #seq(campo)
select top 24 codcli from kcl1
SELECT idj6a1, idjp6a, nropar, valpar, datpag, criter
FROM (
Select TOP 24 mj6a1.idj6a1, mj6a1.idjp6a,
mj6a1.nropar 'nropar', cast(mj6a1.nropar as varchar(2)) 'nroseq',
mj6a1.valpar, mj6a1.datpag, mj6a1.criter
from mj6a1
left join mjp6a on mj6a1.idjp6a = mjp6a.idjp6a
where mj6a1.idjp6a = @idjp6a
UNION ALL
select 0, @idjp6a, idseq , ' ', null, null, 0
from #seq
where (#seq.idseq >
(select count(idj6a1) from mj6a1 where mj6a1.idjp6a = @idjp6a)
)) as x
ORDER BY x.nropar
GO
Espero que ajude alguém mas acho que é um caso muito específico.
Abraços
Clique aqui para fazer login e interagir na Comunidade :)