Ajuda - Busca - Membros - Calendário
Versão Completa: Problemas na nota-fiscal
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
beneli
Pessoal,
Bom dia!

Preciso de uma ajuda urgente, o tempo para entrega do sistema esta muita atrasado por causa de um problema na nota-fiscal.

Exemplo:

Tenho 50 itens de um determidado pedido na Query (ItensPedido), preciso enviar esses itens para o formulário da nota-fiscal, mas de que forma, de 20 em 20 itens, ou seja, enviar 20 itens para nota e (imprimir), depois enviar mais 20 itens e (imprimir), depois o restante 10 itens e (imprmir), só isso, mas não sei como fazer, estou utilizando o banco de dados access, no delphi utilizado ADOquery.

Tentei colocar um ClientDatSet no formulário da nota-fiscal, mas os itens são enviados todos de uma vez só..(50 itens).

Existe outra forma fazer essa configuração de impressão no delphi?


Por favor, quem puder me ajudar eu agradeço muito!!!!

Até mais..
Jhonas
QUOTE
Tenho 50 itens de um determidado pedido na Query (ItensPedido), preciso enviar esses itens para o formulário da nota-fiscal, mas de que forma, de 20 em 20 itens, ou seja, enviar 20 itens para nota e (imprimir), depois enviar mais 20 itens e (imprimir), depois o restante 10 itens e (imprmir), só isso, mas não sei como fazer, estou utilizando o banco de dados access, no delphi utilizado ADOquery.

Tentei colocar um ClientDatSet no formulário da nota-fiscal, mas os itens são enviados todos de uma vez só..(50 itens).

Existe outra forma fazer essa configuração de impressão no delphi?


Existe sim ... voce pode optar por usar o evento OnNeedData do proprio report onde voce pode controlar os registros que serão impressos, ou pode optar por usar um Memo na banda de Detail onde voce coloca somente os registros que serão impressos.

exemplo para saber quantas notas deverão ser emitidas para um total de 20 itens por vez:

CODE
CDS_Moviment.First;
               notas := CDS_Moviment.RecordCount DIV 20;  // nº de itens que deverão ir para a nota
               if ((CDS_Moviment.RecordCount / 20) * notas) <> notas then
                  notas := notas + 1;

               if (CDS_Moviment.RecordCount <> 0) and (CDS_Moviment.RecordCount <21) then
                  notas := 1;

               Label1.Caption := 'OBS: TOTAL DE ITENS = ' + inttostr(CDS_Moviment.RecordCount) +
                '   ( GERAR ' +  inttostr(notas) + ' NOTA(s) )';


OBS: sabendo-se quantas notas deverão ser emitadas.. voce faz um FOR de 1 ate N notas e dentro deste for voce adiciona em um QRMemo (que estara na banda Detail do Report), os item lidos atraves de outro FOR variando de 1 ate N registros da Nota e limitando a impressão do ClientDataSet a cada 20 registros.

abraço
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.