Fórum Gerar parcelas com ClientDataSet em memória #443662

22/05/2013

0

Olá galera!!! Mais uma vez aqui, tentando clarear as idéias...kkkkk
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

Marcos Morais

Responder

Posts

23/05/2013

Paulo Freire

Olá Marcos tenho essa, da uma olhada ...


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;
Responder

Gostei + 0

23/05/2013

Paulo Freire

Ops, faltou um end; no final ok.
Responder

Gostei + 0

23/05/2013

Marcos Morais

valeu garoto, tanks. kkkkkkkkkkkk
Responder

Gostei + 0

23/05/2013

Paulo Freire

Beleza, precisando estamos sempre as ordens.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar