Pessoal parece que hoje é o meu dia de postar.
Obrigado pela paciência, no entanto não postaria se não fosse diferente.
Vamos lá, como já disse num outro post estamos mudando de: interbase para FireDac no acesso ao banco de dados Firebird.
O erro que apresento nesse momento é muito comum, e a resposta para ele também, porém no meu caso é diferente. Vejam, o erro é o famoso key violation.
Segue o código:
FcjParcelas.Insert;
FcjParcelas.fieldbyname('empresa' ).AsInteger := self.GetEmpresa; // faz parte da chave
FcjParcelas.FieldByName('codigo' ).AsInteger := Ficodigo; // faz parte da chave
FcjParcelas.FieldByName('parcela' ).AsInteger := i; // faz parte da chave (aqui eu incremento cfe qtd de parcelas)
FcjParcelas.FieldByName('dt_Vcto' ).AsDateTime := FdDtvcto;
FcjParcelas.FieldByName('status' ).AsString := 'A';
FcjParcelas.FieldByName('valor' ).AsFloat := strToFloat(FcValorAuxParcela) + FdDiferenca;
FcjParcelas.FieldByName('forma_pgto' ).AsInteger := FaFormaPgto.ID_FORMAPGTO;
FcjParcelas.FieldByName('descricao' ).AsString := FaFormaPgto.DESCRICAO;
FcjParcelas.Post;
Posso lhes garantir que cada linha é diferente e como prova disso é que a mesma rotina funciona no interbase e esta rodando em produção a pelo menos 8 anos.
outro detalhe, somente as grades de parcelas (que passam pelo código acima) que estão apresentando esse comportamento, as demais (até agora) estão incluindo, alterando, excluindo bem tranquilo cfe já funciona do mesmo.
Se alguém já passou por algo parecido e quiser compartilhar agradeço.