Fórum Controle de Transacao #388303

12/10/2010

0

Pessoal utilizo d7 com dbexpress e FB 2, estou usando o seguinte codigo para controlar gravacao em cascata e transaçao, mas aconteceu um erro de gravação e estou precisando da opiniao de vcs quanto ao codigo, gostaria de saber de vcs se estou tratando esse assunto da maneira mais segura possivel. Aconteceu de somente a gravacao ocorrer em uma das tabelas e isso me deixou preocupado. Segue o codigo:  
 
  xgravacao := False;
  Transacao.TransactionID := 1;
  Transacao.IsolationLevel := xilReadCommitted;
  DMC.SQLCon.StartTransaction(Transacao);
 
  if (DM.CdPedidos.ApplyUpdates(0)) = 0 then
    if (DM.CdPedidosItens.ApplyUpdates(0)) = 0 then
      if (DM.CdPedidosCobr.ApplyUpdates(0)) = 0 then
        if (DM.CdVendedores.ApplyUpdates(0)) = 0 then
          if (DMPedidos.CdPedidosServer.ApplyUpdates(0)) = 0 then
            xgravacao := True;
 
  if (xgravacao) then
    DMC.SQLCon.Commit(Transacao)
  else
  begin
    DMC.SQLCon.Rollback(Transacao);
    AVISO('ERROR','Ocorreram Erros Durante a Gravação. Os Dados Não Serão Gravados !');
    Close;
    Exit;
  end;

 

    Abs a Todos
Felipe Ip

Felipe Ip

Responder

Posts

13/10/2010

Marcos Iwazaki


  xgravacao := False;  Transacao.TransactionID := 1;
  Transacao.IsolationLevel := xilReadCommitted;
  DMC.SQLCon.StartTransaction(Transacao);  try   if (DM.CdPedidos.ApplyUpdates(0)) = 0 then
    if (DM.CdPedidosItens.ApplyUpdates(0)) = 0 then
      if (DM.CdPedidosCobr.ApplyUpdates(0)) = 0 then
        if (DM.CdVendedores.ApplyUpdates(0)) = 0 then
          if (DMPedidos.CdPedidosServer.ApplyUpdates(0)) = 0 then
            xgravacao := True;   if (xgravacao) then
    DMC.SQLCon.Commit(Transacao)
  else
  begin
    DMC.SQLCon.Rollback(Transacao);
    AVISO('ERROR','Ocorreram Erros Durante a Gravação. Os Dados Não Serão Gravados !');
    ---------- cancelar os updates nos dataset, pois mesmo que aconteceu erro eles ficam em memoria    Close;
    Exit;
  end;
  finally    DMC.SQLCon.Rollback(Transacao);
    AVISO('ERROR','Ocorreram Erros Durante a Gravação. Os Dados Não Serão Gravados !');    ---------- cancelar os updates nos dataset, pois mesmo que aconteceu erro eles ficam em memoria
    Close;
    Exit;
  end;

 
Responder

Gostei + 0

13/10/2010

Felipe Ip

Mas estao a parte do rollback fica nas 2 partes do codigo ? Dentro do Try e fora ?     Abs  
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar