Fórum Gerar parcelas com ClientDataSet em memória #443662
22/05/2013
0
Moçada delphiana é o seguinte to precisando gerar parcelas em um contas a receber. Uso firebird + IBQuery como componente de acesso, e pretendo fazeer a geração das parcelas com um ClientDataSet em memória. Mas seguinte algumas regras.
1. Vou pegar daos já informados em uma tela "Contas a pagar"
2. Preciso incrementar as parcelas de acordo com o último registro da tabela "PAGAR" do banco de dados.
Valendo lembrar que a tabela "PAGAR" usa um generator "GEN_PAGAR_ID". Meu problema está em gerar as parcelas no ClientDataSet já pegando o último registro da tabela "PAGAR", assim meu ClientDataSet já viria com as chaves primárias que posteriormente só iria gravar no banco.
Alguém tem uma idéia????
Desde já agradecido
Marcos Morais
Curtir tópico
+ 0Posts
23/05/2013
Paulo Freire
procedure TFormParcelas.btnIncluirParcelasClick(Sender: TObject);
var
i: integer;
Begin
DM.CDS_Parcelas.Open; //Abro o Banco
//verificaparcela; //Chamo um procedimento para verificar se tem prestação pendente
i:=0; // Minha variável no caso i inicialmente é 0
for i := 1 to StrToInt(txtParcelas.Text) do // minha variável recebe 1 do numero de parcelas no caso o digitado dentro de edParcela.Text
begin
if DM.CDS_Parcelas.RecordCount < i then // verifico o numero é menor do que o da variavel
DM.CDS_Parcelas.Insert // se for insiro
else //senao edito
DM.CDS_Parcelas.Edit; //PARC vai receber o numero de parcelas que eu digitei
DM.CDS_Parcelas.FieldByName('IDCLIENTE').Value := DBLookupComboBoxCliente.KeyValue;
DM.CDS_Parcelas.FieldByName('DESCRICAO').Value := trim(txtDescricao.Text) + ' - Parc.: ' + IntToStr(i) + ' de ' + trim(txtParcelas.Text);
DM.CDS_Parcelas.FieldByName('NPARCELAS').Value := i; //VALOR vai receber o valor digitado dividido pelo numero de parcelas
DM.CDS_Parcelas.FieldByName('VALOR').Value := (StrToFloat(txtValor.Text)/StrToInt(txtParcelas.Text));
DM.CDS_Parcelas.FieldByName('DATA').Value:= incMonth( txtData.Date, i - 1); //DATA recebe a data replicando conforme o numero das parcelas
DM.CDS_Parcelas.Post; //Gravo no banco
DM.CDS_Parcelas.Next; //vou para o próximo
end;
//Dou um updade para gravar esse registro no banco
DM.CDS_Parcelas.ApplyUpdates(0); //ApplyUpdates(0) para gravar no banco o (0) significa o numero de erros
ShowMessage('Parcelas incluídas com sucesso'); //Mando uma mensagem de texto
with DM.CDS_Parcelas do
begin
Close;
Params.ParamByName('X').Value := DBLookupComboBoxCliente.KeyValue;
Open;
DisableControls;
First;
EnableControls;
end;
Gostei + 0
23/05/2013
Paulo Freire
Gostei + 0
23/05/2013
Marcos Morais
Gostei + 0
23/05/2013
Paulo Freire
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)