Inclusão de produtos da tela de vendas no banco

Delphi

Automação Comercial

Modelagem

Firebird

29/10/2015

Olá,

Estou com dificuldade em algo que deve ser bem simples mas não consigo entender.

Estou criando um sistema de PDV simples e estou com um problema para incluir todos os produtos da tela de vendas na minha tabela do banco.

Se eu jogar 10 produtos na tela, apenas o último fica salvo no banco.

Alguém poderia me ajudar?

Estou utilizando Firebird 2.5 e Xe3.

Segue meu código de finalizar a venda, aqui ele lança os produtos em um CDS e abre a tela de finalização onde o usuário daria desconto e escolheria a forma de pagamento e daria um applyupdates no CDS...

procedure TfrmVendas.BitBtn3Click(Sender: TObject);
begin
  dsPedido.DataSet.Open;
  dsPedido.DataSet.Insert;



  dmFechamento.cdsPedido.FieldByName('DATA').AsDateTime := now;
  dmFechamento.cdsPedido.FieldByName('HORA_FECHA').AsDateTime := TIME;
  dmFechamento.cdsPedidoVALOR_TOTAL.Value   := ClientDataSet1SomaTotal.Value;
  dmFechamento.cdsPedidoQTD_PRODUTO.Value   := ClientDataSet1Qtd.Value;
  dmFechamento.cdsPedidoCORTE.Value         := ClientDataSet1TipoCorte.Value;
  dmFechamento.cdsPedidoBORDA.Value         := ClientDataSet1Borda.Value;
  dmFechamento.cdsPedidoTAMANHO.Value       := ClientDataSet1Tamanho.Value;
  dmFechamento.cdsPedidoOBS_PRODUTO.Value   := ClientDataSet1Obs.Value;
  dmFechamento.cdsPedidoID_PRODUTO.Value    := ClientDataSet1Id_Produto.Value;
  dmFechamento.cdsPedidoID_SECAO.Value      := ClientDataSet1ID_SECAO.Value;
  dmFechamento.cdsPedidoID_FORNECEDOR.Value := ClientDataSet1ID_FORNECEDOR.Value;


  dsPedido.DataSet.Post;
  // dmFechamento.cdsPedido.ApplyUpdates(0);

  frmFechamento := TfrmFechamento.Create(Self);
  frmFechamento.ShowModal;
  FreeAndNil(frmFechamento);

end;


Obrigado.
William Pacini

William Pacini

Curtidas 0

Respostas

Wazowski

Wazowski

29/10/2015

Você ta executando com esse ApplyUpdates em comentário? Experimenta tirar de comentário pra ele aplicar as mudanças...
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

29/10/2015

O post salva os dados em memória use o dmFechamento.cdsPedido.ApplyUpdates(-1);
GOSTEI 0
Dirceu Morais

Dirceu Morais

29/10/2015

Não sei se já conseguiu resolver seu problema mas acho que o correto seria assim:

procedure TfrmVendas.BitBtn3Click(Sender: TObject);
begin
  dsPedido.DataSet.Open;  
  ClientDataSet1.first;
   While Not ClientDataSet1.eof do
   Begin
       dmFechamento.cdsPedido.DataSet.Insert;
       dmFechamento.cdsPedido.FieldByName('DATA').AsDateTime := now;
      dmFechamento.cdsPedido.FieldByName('HORA_FECHA').AsDateTime := TIME;
      dmFechamento.cdsPedidoVALOR_TOTAL.Value   := ClientDataSet1SomaTotal.Value;
      dmFechamento.cdsPedidoQTD_PRODUTO.Value   := ClientDataSet1Qtd.Value;
      dmFechamento.cdsPedidoCORTE.Value         := ClientDataSet1TipoCorte.Value;
     dmFechamento.cdsPedidoBORDA.Value         := ClientDataSet1Borda.Value;
     dmFechamento.cdsPedidoTAMANHO.Value       := ClientDataSet1Tamanho.Value;
     dmFechamento.cdsPedidoOBS_PRODUTO.Value   := ClientDataSet1Obs.Value;
     dmFechamento.cdsPedidoID_PRODUTO.Value    := ClientDataSet1Id_Produto.Value;
     dmFechamento.cdsPedidoID_SECAO.Value      := ClientDataSet1ID_SECAO.Value;
     dmFechamento.cdsPedidoID_FORNECEDOR.Value := ClientDataSet1ID_FORNECEDOR.Value;
   
 
     dsPedido.DataSet.Post;
    ClientDataSet1.next;
end;

   dmFechamento.cdsPedido.ApplyUpdates(0);
 
  frmFechamento := TfrmFechamento.Create(Self);
  frmFechamento.ShowModal;
  FreeAndNil(frmFechamento);
 
end;
GOSTEI 0
POSTAR