Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RenatoReis

[Resolvido] Notas Promissórias

Recommended Posts

Pessoal, boa tarde.

 

To com um probleminha aqui com respeito a Notas promissórias.

Preciso gerar notas promissórias para uma única pessoa. Tenho valor definido, número de notas, etc.

Estou utilizando o Rave Report do Delphi 7.

Criei um Layout no Rave que possibilite imprimir duas notas por folha.

Segue o Código:

 

if Application.MessageBox('Confirma Impressão das Notas Promissórias?', 'Informação', MB_ICONQUESTION

+ MB_YESNO + MB_DEFBUTTON1) = IDYES then

begin

//dados da Filiada

qrImpFilia.Open;

qrImpFilia.Locate('EMPGARCOD', xFilia,[]);

 

dataModule1.QrLicenca.open;

 

// Pegar dados do Associado

datamodule1.qrAssoc.Close;

datamodule1.qrAssoc.SQL.Clear;

datamodule1.qrAssoc.SQL.Text:='Select * from SCCASOC where SOCEMP ='+'''' + xFilia + ''''+' and SOCCOD ='+ '' + IntToStr(xMatr) + ''+'';

datamodule1.qrAssoc.Open;

 

datamodule1.rvdsAssoc.DataSet:=datamodule1.qrAssoc;

datamodule1.rvdsEmpresa.DataSet:= qrImpFilia;

datamodule1.rvdsLic.DataSet:= dataModule1.QrLicenca;

 

xVez:=1;

 

xValparc:=MskValanal.Value / strtoint(edtNpanal.Text); // Valor das Parcelas

xExtenso:=valorporextenso(xValparc);

xParc:=strtoint(edtNpanal.Text);

 

// Passagem dos parametros

dataModule1.rvProject1.setparam('xParct', edtNpanal.text);

dataModule1.rvProject1.setparam('xContrato', dbEdit2.text);

dataModule1.rvProject1.setparam('xTotref', currtostr(xValparc));

datamodule1.rvProject1.SetParam('xExtenso', xExtenso);

 

// Looping para preencher as duas vias de cada folha

while xParc > 0 do

begin

xVencto:=IncMonth(dbEdit1.date, xParc); // Adiciona as parcelas para calcular os vencimentos

xDataref:=datetostr(xVencto); // Retorna data para xDataref

if xVez = 1 then

begin

dataModule1.rvProject1.setparam('xParc1', inttostr(xparc));

dataModule1.rvProject1.setparam('xData1', xDataref);

end else

begin

dataModule1.rvProject1.setparam('xParc2', inttostr(xparc));

dataModule1.rvProject1.setparam('xData2', xDataref);

datamodule1.rvProject1.ProjectFile:='C:\Relatorios\RavPromissoria.rav';

datamodule1.rvproject1.Execute;

end;

xParc:=xParc - 1;

xVez:=xVez + 1;

if xVez > 2 then

xVez:=1;

end;

 

if (xParc=0) and (xVez=2) then

begin

datamodule1.rvProject1.ProjectFile:='C:\Relatorios\RavPromissoria.rav';

datamodule1.rvproject1.Execute;

end;

 

datamodule1.rvproject1.Close;

 

dataModule1.QrLicenca.close;

dataModule1.qrAssoc.Close;

qrImpfilia.Close;

end;

 

Já percebi que a cada execute que faço, é aberta a telinha do setup de impressão.

Quando coloco apenas um execute para o relatório, no final de tudo, gera apenas duas notas e finaliza.

Alguém tem alguma sugestão para a solução deste problema?

 

Vasculhando a Net, achei uma resposta antiga, indicando que eu deveria reduzir o tamanho do papel no RAVE e ao invés do formulário ser duplicado na mesmo folha, haver apenas um campos para impressão de nota por nota.

Fiz isso, tirei a duplicidade da nota promissória no RAVE, ou seja havia um layout duplicado, deixei apenas uma e modifiquei o código.

 

if Application.MessageBox('Confirma Impressão das Notas Promissórias?', 'Informação', MB_ICONQUESTION

+ MB_YESNO + MB_DEFBUTTON1) = IDYES then

begin

//dados da Filiada

qrImpFilia.Open;

qrImpFilia.Locate('EMPGARCOD', xFilia,[]);

 

dataModule1.QrLicenca.open;

 

// Pegar dados do Associado

datamodule1.qrAssoc.Close;

datamodule1.qrAssoc.SQL.Clear;

datamodule1.qrAssoc.SQL.Text:='Select * from SCCASOC where SOCEMP ='+'''' + xFilia + ''''+' and SOCCOD ='+ '' + IntToStr(xMatr) + ''+'';

datamodule1.qrAssoc.Open;

 

datamodule1.rvdsAssoc.DataSet:=datamodule1.qrAssoc;

datamodule1.rvdsEmpresa.DataSet:= qrImpFilia;

datamodule1.rvdsLic.DataSet:= dataModule1.QrLicenca;

xVez:=1;

xValparc:=MskValanal.Value / strtoint(edtNpanal.Text);

xExtenso:=valorporextenso(xValparc);

xParc:=strtoint(edtNpanal.Text);

 

dataModule1.rvProject1.setparam('xParct', edtNpanal.text);

dataModule1.rvProject1.setparam('xContrato', dbEdit2.text);

dataModule1.rvProject1.setparam('xTotref', currtostr(xValparc));

datamodule1.rvProject1.SetParam('xExtenso', xExtenso);

 

// Parte nova

 

while xParc > 0 do

begin

xVencto:=IncMonth(dbEdit1.date, xParc); // Adiciona as parcelas para calcular os vencimentos

xDataref:=datetostr(xVencto); // Retorna data para xDataref

dataModule1.rvProject1.setparam('xParc1', inttostr(xparc));

dataModule1.rvProject1.setparam('xData1', xDataref);

xParc:=xParc - 1;

end;

 

datamodule1.rvProject1.ProjectFile:='C:\coop\coop\Relatorios\RavPromissoriaa.rav';

datamodule1.rvproject1.Execute;

 

datamodule1.rvproject1.Close;

 

dataModule1.QrLicenca.close;

dataModule1.qrAssoc.Close;

qrImpfilia.Close;

end;

 

Supondo que queira imprimir 5 Notas promissórias, inicio da última para a primeira. Verifiquei que a única que aparece para imprimir é a Nota 1 de 5, mas que na verdade foi a última a ser gerada.

 

Preciso imprimir duas Notas promissórias dentro da mesma folha.

 

O que DEVO fazer para resolver esta bagaça?

 

Gde Abc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Solução:

 

Na verdade eu havia criado todos os tipos de relatorio em Rave, ou seja, criei uma page com:

1 Band e 1 Databand;

1 databand;

1 band;

etc, menos 2 databands na mesma page.

 

Isso resolveu meu problema.

 

Fica ai a dica pra quem precisar.

Obrigado aos que tentaram me ajudar.

At

 

Ik!

Novo problema sobre o velho problema...

 

beleza, rodou as Notas Promissórias como eu queria, 2 em cada folha.

Supondo que são 5 promissorias a imprimir, to fazendo da última para a primeira.

 

O problema agora está ná última nota promissória. O mesmo campo utilizado para informar o valor de cada nota, nesta última a ser impressa, no lugar do valor imprime o seguinte erro: "ReportPrinter Report"

 

O que pode ser?

 

At

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.