Você utiliza a tabela de contratos para administrar as parcelas que ele gerou?
Você não tem uma tabela de contratos (com os dados contratuais) e faz a geração do financeiro (em uma tabela de financeiro) separadamente ? Acho que o seu controle deveria ser um contrato com adendos de renovações, com data inicial e final, desta forma você controla as parcelas de cada adendo, ao invés de ficar seguindo as parcelas que foram geradas pelo contrato inicial, até porque não é o contrato inicial e sim um adendo de renovação. É assim que penso, mas se quiser continuar com este raciocínio, terá que mudar seu procedimento, para verificar se existe parcelas deste contrato, se existir, pega a quantidade de parcelas que existe, e vai incrementando no seu for aí. Compliquei ou descompliquei? Abraços. 2009/5/27 vandeirr <vande...@yahoo.com.br> > > > Tenho uma tela de parcela onde tenho a opção para gerar determinada > quantidade de parcela, como faço para gerá-las novamente a partir da última > parcela gerada? Por exemplo, tenho 12 parcelas geradas, gostaria de > continuar gerando da 13 para frente como faço? Na verdade da primeira vez > gero as parcelas inicias do contrato, na segunda vez gostaria de gerar as > parcelas para renovação do mesmo contrato, apenas acrescentando as novas > parcelas na sequencia. > > estou usando esse código: > > procedure TForm1.Btn_IncluirClick(Sender: TObject); > var > i: Byte; > begin > //Abro o Banco > ClientDataSet1.Open; > //Chamo um procedimento para verificar se tem prestação pendente > verificaparcela; > // Minha variável no caso i inicialmente é 0 > i:=0; > // minha variável recebe 1 do numero de parcelas no caso o digitado dentro > de edParcela.Text > for i := 1 to StrToInt(edParcela.Text) do > begin > // verifico o numero é menor do que o da variavel > if ClientDataSet1.RecordCount < i then > // se for insiro > ClientDataSet1.Insert > else > //senao edito > ClientDataSet1.Edit; > //PARC vai receber o numero de parcelas que eu digitei > ClientDataSet1.FieldByName(\'PARC\').Value := i; > //VALOR vai receber o valor digitado dividido pelo numero de parcelas > ClientDataSet1.FieldByName(\'VALOR\').Value > :=(StrToFloat(edtValor.Text)/(StrToInt(edParcela.Text))); > //DATA recebe a data replicando conforme o numero das parcelas > ClientDataSet1.FieldByName(\'DATA\').Value:= incMonth( Date, i - 1); > //Gravo no banco > ClientDataSet1.Post; > //vou para o próximo > Next; > end; > //Dou um updade para gravar esse registro no banco lembre-se que quando > //trabalho com clientDataSet eu trabalho em cachê é necessário dar um > //ApplyUpdates(0) para gravar no banco o (0) significa o numero de erros > //claro com certeza isso só vai acontecer se não tiver nenhum erro ok > ClientDataSet1.ApplyUpdates(0); > //Mando uma mensagem de texto > showmessage(\'Arquivo incuido com sucesso\'); > end; > > > [As partes desta mensagem que não continham texto foram removidas]