Olá a todos, estou enfrentado difícil de solucionar, pelo menos pra mim... Vou colocar o código de como estou trabalhando com o clientdataset, quem puder me ajudar agradeço.
Resumo do problema: Tenho um formulário de pedido que trabalho com duas tabelas no firebird que são: ("pedido" e "pedido_item") eu uso stored procedure para insert e update nessas tabelas. No form de cadastro de pedido tenho um dbgrid que é adcionado os items do pedido. Quando eu registro um novo pedido ele salva noramalmente, ai logo em seguida se eu clicar em localizar um pedido e seleciona-lo e logo em seguido clicar em novo, eu começo a inserio o produto ele puxa os produtos que foi inserido no pedido anterior não estou entendo mais nada. Vou postar algus código, se alguém já passou por isso e puder me ajudar. Agradeço. {: Procedure para inserir o pedido e os items} procedure TDMPrincipal.InsertPedido; var idPed: Integer; begin // verifica se escolheu produtos if cdsPedidoItem.IsEmpty then raise Exception.Create('É necessário escolher os produtos!'); idPed:= qSequence.FieldByName('VLRSEQ').AsInteger + 1; Start; // Adiciona o pedido try with spPedido do begin Params[0].AsInteger:= cdsPedidoPED_COD.AsInteger; Params[1].AsInteger:= cdsPedidoFUNC_COD.AsInteger; Params[2].AsDate:= cdsPedidoPED_DATA.AsDateTime; Params[3].AsBCD:= cdsPedidoItemTOTALGERAL.AsVariant; Params[4].AsInteger:= cdsPedidoFORN_COD.AsInteger; ExecProc; Commit; //idPed:= Params[4].AsInteger; end; Except Rollback; end; // Adiciona os items try Start; cdsPedidoItem.First; while not cdsPedidoItem.Eof do begin with spPedidoItem do begin Params[0].AsInteger:= idPed; Params[1].AsInteger:= cdsPedidoItemPROD_COD.AsInteger; Params[2].AsInteger:= cdsPedidoItemQUANTIDADE.AsInteger; Params[3].AsBCD:= cdsPedidoItemVALOR.AsCurrency; ExecProc; end; cdsPedidoItem.Next; end; Commit; Except DeletePedido(idPed); Rollback; end; end; No evendo afterpost do clientdataset eu chamo essa procedure; No evendo onnewrecord eu para 0 para o código do pedido. No formulário de pedido tenho os botões de "novo" "salvar" "alterar" "localizar" Novo: DataSource1.DataSet.Open; DataSource1.DataSet.Insert; Salvar: {: salvo as dados se os campos estiverem preenchidos} if FieldsWrithe(DataSource1) and (DataSource1.State in [dsEdit, dsInsert]) then begin DMPrincipal.cdsPedido.Post; MessageDlg(MSG_OK, mtInformation, [mbOK], 0); end; DMPrincipal.cdsPedido.Close; DMPrincipal.cdsPedidoItem.Close; Alterar: {: habilita/desabilita os componentes e verifica permissões/restrições } if not DataSource1.DataSet.IsEmpty then begin DataSource1.DataSet.Edit; DataSource2.DataSet.Edit; EnableDisableControls(True); end else begin raise Exception.Create('Nenhum pedido foi selecionado!'); end; Localizar: {: verifica se esta em modo de edição ou inserção} if DataSource1.State in [dsEdit, dsInsert] then case MessageDlg('Deseja salvar as alterações realizados no Cadastro?', mtConfirmation, [mbYes,mbNo,mbCancel], 0) of mrYes: btnSalvar.Click; mrNo: DataSource1.DataSet.Cancel; end else Application.CreateForm(TfrmBuscaPedido, frmBuscaPedido); frmBuscaPedido.ShowModal; Vlw Pessaol... Ajudem ai please Ricardo Messias da Silva Rocha Bacharel em Ciência da Computação [As partes desta mensagem que não continham texto foram removidas]