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


Responder a