Deixa eu ver seu entedi a sua duvida. Suponhamos que voce queria fazer esse procedimentos como um pedido de venda. Voce tera a capa do pedido os items do pedido.
Dentro do CDS eu crio todos os campos referente o pedido e os itens //Dados do pedido - Codigo Pedido; - DataPedido; - Vendedor; - Cliente; - ValorTotalPedido; //Dados Itens - CodigoProduto; - NomeProduto; - QtdPedido; - ValorUnitario; - ValorTotal; - ValorDesconto; Quando você cria um pedido no cds todos os dados campo referente a informação do pedido serão iguais. O que será alterado vão ser os campos referente ao Item. Logo um ClientDataSet com 5 itens sera + ou - assim; CodigoPedido DataPedido Vendedor Cliente ValortotalPedido CodigoProduto NomeProduto QtdPedido ValorUnitario ValorTotal ValorDesconto 74 01/04/2010 001 1256 1000,00 1254 ProdutoA 10,00 10,00 100,00 0,00 74 01/04/2010 001 1256 1000,00 1254 ProdutoB 20,00 10,00 180,00 20,00 74 01/04/2010 001 1256 1000,00 1254 ProdutoC 1,00 10,00 10,00 0,00 74 01/04/2010 001 1256 1000,00 1254 ProdutoD 5,00 10,00 50,00 0,00 74 01/04/2010 001 1256 1000,00 1254 ProdutoE 10,00 10,00 100,00 0,00 Como deu para perceber todos os campo do pedido se repetem logo eu faço um procedure ou função + ou - assim procedure GravaBanco; begin with CDSPedido do begin //Posiciono no primeiro registro First; //Gravo a capo do pedido da maneira que vc quizer/utiliza. Query.sql.Clear; Query.sql.add('inset into pedio (campo1, campo2, campo3...........) values (:parametro1, :parametro2, :parametro3,............)') ParameterByName('parametro1').AsInteger := CDSPedidoCodigoPedido.AsInter; ParameterByName('parametro2').AsDateTime := CDSPedidoDataPedido.AsDataTime; ParameterByName('parametro3').AsInteger := CDSPedidoVendedor.AsInter; .... // Todos os parametros do campos do pedido Query.ExecuteSql; // Depois faço um while para percorer toda lista para gravar os registro filhos do pedido, ou seja, os produtos. while not Eof do begin // EOF = Fim do CDS Query.sql.Clear; Query.sql.add('inset into pedio (campo1, campo2, campo3...........) values (:parametro1, :parametro2, :parametro3,............)') ParameterByName('parametro1').AsInteger := CDSPedidoCodigoProduto.AsInter; ParameterByName('parametro2').AsString := CDSPedidoNomeProduto.AsString; ParameterByName('parametro3').AsInteger := CDSPedidoQtdPedido.AsInter; .... // Todos os parametros do campos dos produtos Query.ExecuteSql; Next; // para pular para o proximo registro. end end end Lembrando que to usando um query para grava apenas como exemplo e to utilizando o ParameterbyName apenas como exemplo para gravação de banco na pratica vc pode utilizar de qualquer forma. Eu mesmo não gosto de utilizar desta forma. Qualquer duvida manda ae para gente dar uma olhada Att. Cleber. To: delphi-br@yahoogrupos.com.br From: mcscu...@yahoo.com.br Date: Tue, 27 Apr 2010 08:43:24 -0300 Subject: Re: [delphi-br] TcxGrid Cleber, Como vc pega os dados FILHOs? Ou seja, se houver um registro dentro de outro, como gravar os DETALHES do PEDIDO? Obrigado. MuriloCunha On 23/04/2010 11:59, Cleber Sinop wrote: > Eu utilizo + ou - assim. > > > > Depois de todos os tratamentos e informações processado nos grid, faço um > rotina da seguinte forma. > > > > - coloco o ClientDataSet no primeiro registro com o first. > > - faço um while not EOF e cada registro lanço com insert ou update no banco. > > - sempre no final de cada while faço um next no cds. > > > > Nesse tipo de situção posso fazer bem mais tratamentos na hora de gravar. > somando campos, fazendo algumas verificalções e validações etc. > > OBs: faço esse estoma todos com query mesmo na hora de atualizar o banco de > dados. > > > > > > []'s > > > > Cleber. > > > > To: delphi-br@yahoogrupos.com.br > From: mcscu...@yahoo.com.br > Date: Fri, 23 Apr 2010 08:58:25 -0300 > Subject: Re: [delphi-br] TcxGrid > > > > > > Jackson, > > Seguindo o seu pensamento... > Como vc faria para gravar os dados no banco? > Se for a primeira vez que estou montando os dados na tela (direitos do > usuario), terei que colocar estes dados na mao... nome dos componentes, > form a q eles pertencem, direito atribuido por default (nao > permitido)... etc. > Entao, teria que alimentar um TClientDataSet sem estar ligado ao banco > (somente o TClientDataSet). Apos esta etapa, como faria para alimentar o > banco? Jogar estes dados para outro TClientDataSet ligado ao banco? > > Me explique melhor como vc monta este form com TcxGrid. > > Obrigado. > MuriloCunha > > On 22/04/2010 21:06, Jackson Gomes - Tools&Comps wrote: > >> >>> Quem manja de mexer com o componente TcxGrid, do pacote da DevExpress?? >>> Nao estou conseguindo inserir dados nele. Nao quero liga-lo a um >>> DataSource, quero inserir dados como se fosse um TStringGrid. >>> Ha como fazer isso via programacao? >>> >>> >> Alimente seus dados em um ClientDataset. Mesmo que nao queira dados do banco, >> fica mto mais simples trabalhar assim... >> >> Jackson Gomes >> Tools&Comps - Controle de Usuários para Desenvolvedores CodeGear >> Web Site: http://www.toolsandcomps.com >> Nosso Fórum: http://groups.yahoo.com/group/toolsandcomps >> e-mail: jack...@toolsandcomps.com >> Fone: 27 3389 1138 - 8811 0324 >> ---------------------------------------------------------- >> http://jacklovesdelphi.blogspot.com - Delphi, Intraweb, etc.... >> ---------------------------------------------------------- >> Devhost - Webhost para desenvolvedores Delphi >> http://www.devhost.com.br >> devh...@devhost.com.br >> >> >> >> >> ------------------------------------ >> >> >> > > > > > __________________________________________________________ > Você sabia que seu navegador te ajuda a ficar longe de vírus? Leia mais sobre > isso. > http://www.microsoft.com/brasil/windows/internet-explorer/?WT.mc_id=1500 > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------ > > _________________________________________________________________ O Internet Explorer 8 quer te ajudar a navegar seguro. Entre aqui para ler as dicas. http://www.microsoft.com/brasil/windows/internet-explorer/?WT.mc_id=1500 [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html