Re: [firebase-br] Transação - ClientDataSet

claudiney.m.guedes claudiney.m.guedes em bol.com.br
Sex Ago 31 10:35:06 -03 2007


Bom dia a todos,

Quando trabalhamos com ClientDataSet não precisamos trabalhar com transação, pois o DataSetProvider fica responsavel por esta tarefa.

Qualquer dúvida referente a utilização eu posso disponibilizar um exemplo...

---------- Início da mensagem original -----------

      De: lista-bounces em firebase.com.br
    Para: "FireBase" lista em firebase.com.br
      Cc: 
    Data: Fri, 31 Aug 2007 10:09:02 -0300 (ART)
 Assunto: Re: [firebase-br] Transação - ClientDataSet

> Neste caso faça assim. Adapte as suas necessidades.
>    
>        transacao.TransactionID := 1;
>      transacao.IsolationLevel := xilREADCOMMITTED;
>      if not DM.Conexao.InTransaction then
>         DM.Conexao.StartTransaction(Transacao);
>        with DM.qryManut2 do
>       begin
>         sql.clear;
>           if btIncAlt.caption = 'Incluir' then
>          begin
>            sql.add('INSERT INTO PRODUCAO (DATA, CODCARTAO, VALORFACE, QTDCARTOES, LIXO)');
>            sql.add(' VALUES (:pdata, :pcodcartao, :pvalorface, :pqtdcartoes, :plixo)');
>          end
>         else
>          begin
>            sql.add('UPDATE PRODUCAO');
>            sql.add(' SET DATA       = :pdata,');
>            sql.add('     CODCARTAO  = :pcodcartao,');
>            sql.add('     VALORFACE  = :pvalorface,');
>            sql.add('     QTDCARTOES = :pqtdcartoes,');
>            sql.add('     LIXO       = :plixo');
>            sql.add(' WHERE CODCARTAO = :pcodcartao');
>            sql.add(' AND VALORFACE = :pvalorface');
>          end;
>         parambyname('pcodcartao').asinteger  := strtoint(trim(RightStr(cbTpCartao.items[cbTpCartao.itemindex],2)));
>         parambyname('pvalorface').Asfloat    := strtofloat(edtValorFace.text);
>         parambyname('pdata').AsDate          := strtodate(meData.text);
>         parambyname('pqtdcartoes').asinteger := strtoint(trim(meQuant.text));
>         parambyname('plixo').asinteger       := strtoint(trim(meLixo.text));
>           ExecSQL;
>       end;
>      with DM.qryManut2 do
>       begin
>         sql.clear;
>           sql.add('UPDATE ESTOQUE');
>         sql.add(' SET QTDCARTOES  = QTDCARTOES - :pqtdcartoes');
>         sql.add(' WHERE CODCARTAO = :pcodcartao');
>         sql.add(' AND VALORFACE   = :pvalorface');
>           parambyname('pcodcartao').asinteger := strtoint(trim(RightStr(cbTpCartao.items[cbTpCartao.itemindex],2)));
>         parambyname('pvalorface').asfloat   := strtofloat(trim(edtValorFace.text));
>         parambyname('pqtdcartoes').asinteger := (strtoint(trim(meQuant.text)) + strtoint(trim(meLixo.text))) - (quant_ant + qtdlixo_ant);
>           ExecSql;
>       end;
>      try
>        DM.Conexao.Commit(transacao);
>      except
>        DM.Conexao.RollBack(transacao);
>      end;
> 
>   Espero ter ajudado.
> 
> Felipe Aron <felipearon em gmail.com> escreveu:
>   Estou usando ClientDataSet na minha aplicação e li um artigo no FireBase a
> respeito: http://www.firebase.com.br/fb/artigo.php?id=156
> Porém no artigo ele informa para cada tabela usar uma transação....
> Mas e no caso de vendas ?? TEnho que gravar o cabeçalho de vendas + Itens.
> Seguindo a lógica do artigo, posso commitar o cabeçalho e dar erro ao gravar
> os itens.... nesse caso não é melhor usar apenas 1 transação ???
> 
> Outra pergunta: como fazer para commitar os dados da venda e itens
> (ClientDataSet) somente quando terminar TODO o processo ??
> 
> 
> -- 
> Com a força aprenda a suavidade. Através da suavidade a força prevalecerá!
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 
> 
>        Flickr agora em português. Você clica, todo mundo vê. Saiba mais.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 






Mais detalhes sobre a lista de discussão lista