[Resolvido] Notas Promissórias
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
Discussão (1)
Carregando comentários...