Ir para conteúdo

POWERED BY:

Arquivado

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

WillianHahn

Nota Fiscal no Quick Report sem Table...

Recommended Posts

Olá, estou querendo imprimir notas fiscais através do QuickReport mas estou com a seguinte dificuldade:

 

Criei um Form do qual possui campos onde são digitados os dados (Cliente, Cidade, RG, Parcelas, Valor...) Os valores digitado nos campos são mandados direto pro QuickReport sem tabelas de B.D., através de SQL.

Mas o problema que eu não consigo gerar as outras notas (somente uma). Queria saber como gerar mais de uma nota com os mesmo dados informados, sendo que a quantidade de notas a ser gerada seria a quantidade de parcelas informada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq você ñ faz na hora de imprimir ele tirar o nº de parcelas de Cópias???PS.: Pq ñ usa tabela???

Olá Hugo, Obrigado pelas dicas, sou novo forum sempre uma ajuda é bem vinda.Não faço na hora de imprimir pq ele tem que alterar o mês de vencimento, se eu colocar para imprimir 10, ele irá imprimir as dez com a mesma data de vencimento e o mesmo numero de nota ficas 1/12... 1/12 e o correto seria 1/12.... 2/12...

Compartilhar este post


Link para o post
Compartilhar em outros sites

QuickRep1.NewPage;
isso não resolve o problema???? http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif
Olá, não consegui resolver o problema...Vou tentar explicar...No QuickReport criei a TQRLabel CodCli e no formulario tem um TEdit edCliente onde o usuario digita os dados..... e eu criei o seguinte código no boão "Enviar"qrImpressao.CodCli.Caption := edCliente.Text;Mais esse não é o problema... o unico problema que tenho é imprimir mais de uma nota, ele tem que imprimir a quantidade de notas informado no TComboBox cbPlano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer um exemplo simulando o seu problema, no caso utilizei o evento NeedData do QuickReport, ficou algo do tipo o fonte do qrp:

 

unit Unit2;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, QuickRpt, QRCtrls, ExtCtrls;type  TForm2 = class(TForm)	QuickRep1: TQuickRep;	DetailBand1: TQRBand;	qrlNomeCliente: TQRLabel;	qrlNumParc: TQRLabel;	qrlValorParc: TQRLabel;	procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);	procedure QuickRep1BeforePrint(Sender: TCustomQuickRep;	  var PrintReport: Boolean);  private	{ Private declarations }	posAtual: integer;  public	{ Public declarations }	nomeCliente: string;	numParcelas: integer;	valorParcela: Extended;  end;var  Form2: TForm2;implementation{$R *.dfm}procedure TForm2.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);beginMoreData:=(posAtual <= numParcelas);if MoreData then	begin	QuickRep1.NewPage;	qrlNomeCliente.Caption:=nomeCliente;	qrlNumParc.Caption:=IntToStr(posAtual);	qrlValorParc.Caption:=FloatToStrF(valorParcela,ffNumber,15,2);	QuickRep1.QRPrinter.Progress:=(Longint(posAtual - 1) * 100) div numParcelas;	endelse	QuickRep1.QRPrinter.Progress:=100;Inc(posAtual);end;procedure TForm2.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean);beginposAtual:=1;end;end.
O form que chama o relatório eu fiz assim:

 

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Buttons;type  TForm1 = class(TForm)	Label1: TLabel;	edtNomeCliente: TEdit;	edtNumParcelas: TEdit;	Label2: TLabel;	Label3: TLabel;	edtValorParc: TEdit;	BitBtn1: TBitBtn;	procedure BitBtn1Click(Sender: TObject);  private	{ Private declarations }  public	{ Public declarations }  end;var  Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);beginForm2:=TForm2.Create(Application);Form2.nomeCliente:=edtNomeCliente.Text;Form2.numParcelas:=StrToInt(edtNumParcelas.Text);Form2.valorParcela:=StrToFloat(edtValorParc.Text);Form2.QuickRep1.PreviewModal;Form2.Free;end;end.
No caso somente coloquei três edit, um para o nome, outro para o n° de parcelas e outro para o valor, sendo que ele gera o número de páginas de acordo com o n° de parcelas informado.

No relatório somente coloquei um Detail com os QRLabel que vão receber o valor.

Acredito que isto possa lhe ajudar, somente iria precisar adaptar as suas necessidades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

marcio.theis

 

Muito bom o seu código, adaptei ele e ficou quase 100%...

Mas tem um probleminha. Ele gera as páginas da nota fiscal, mas ilimitado.

 

Ex.: passo o valor 14 de notas pra imprimir, mais ele continua e nao para...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Deve de ser um controle que esta faltando no OnNeedData, verifique... Aqui testei e funcionou certinho, mando gerar o n° de páginas que quiser, e ele para quando mandar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Deve de ser um controle que esta faltando no OnNeedData, verifique... Aqui testei e funcionou certinho, mando gerar o n° de páginas que quiser, e ele para quando mandar...

olá marcio.theis,Seu código está certo, funcionou perfeitamente, eu que estava usando QRBand SubDetail e tinha feito o código na própria Band e não no Quick Report. Agora estou com outro probleminha se puder me ajudar... gerei um código de Mês e preciso que o mesmo mude conforme as notas. Ex.: A primeira nota é do Mes de Janeiro (01) a segunda seria (02) e assim por diante.Desde já agradeçoWillian.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer isto tb dentro do OnNeedData, dentro do bloco MoreData, sendo que somente irá precisar incrementar o mês, pode-se usar algo do tipo:

 

Declare no uses DateUtils

Dentro do bloco MoreData faça:

 

qrlData.Caption:=DateToStr(IncMonth(Date,posAtual - 1));
Ou seja, a partir do dia de hoje, ele vai incrementar os meses....

Pode adaptar conforme a sua necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer isto tb dentro do OnNeedData, dentro do bloco MoreData, sendo que somente irá precisar incrementar o mês, pode-se usar algo do tipo:

 

Declare no uses DateUtils

Dentro do bloco MoreData faça:

 

qrlData.Caption:=DateToStr(IncMonth(Date,posAtual - 1));
Ou seja, a partir do dia de hoje, ele vai incrementar os meses....

Pode adaptar conforme a sua necessidade.

Vlw... adptei o código e funcionou beleza...

Estou muito grato pelo Forum... Muito bom...

Vou indicar pros meus amigos da Faculdade...

 

Agora é só eu arrumar a impressão...

configurei no QuickReport o tamanho, mas quando imprime ela usa como se fosse papel A4.

a impressora é Matricial e a nota tem 21,5 cm x 14 cm

Vou dar uma ohada no Forum...

Vlw pelas dicas...

Abraços....

Fuiii...

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza... Quando precisar estamos ai...Coloca a folha como CustomSize, e configura da mesma forma na impressora...

Não funcionou... configurei no CustomSize do QR o tamanho certo e na impressora deixei como Papel Continuo mais ele sempre pula uma nota, baixei o VDOPrinter estou mexendo.. mais nao sei usar... tem 3 icones (VDOCaPrinter, VDODmPrinter e VDOPrinter) não sei as diferenças dele... ou se tem outro meio de arrumar isso sem ser pelo VOD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema são com os windows mesmo, pois nao tem aquelas páginas personalizadas como exisita no 98, com o VDO você vai imprimir de forma matricial, terá de fazer tudo na mão mesmo... no caso no site do fabricante do componente se nao me engano tem exemplos e tudo mais... e um fórum onde o pessoal tira as principais dúvidas...

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.