GARANTIR DESCONTO

Fórum Transações no Dbexpress #273369

21/03/2005

0

Venho desenvolvendo meus sistemas usando principalmente os componentes IB para manipulação de dados, lembrando que sempre usando Interbase e Firebird mas a minha dúvida é: qual a melhor maneira de se trabalhar com transações no DBexpress, afinal estou terminando um sistema que desenvolvi usando DBexpress mas na hora de implementar um controle de transação mais complexo, acho que ele deixa um pouco a desejar ou seja sem rodeios, o que faço no IB com poucas linhas de código no dbexpress torna-se uma tarefa bem mais complicada.


Rogerio Amorim


Rogerio_amorim

Rogerio_amorim

Responder

Posts

21/03/2005

Faelcavalcanti

No básico e simples faria assim:
Procedure ProcedimentoSimples;
const c_SQL_Tabela : String = ´DELETE * FROM TABELA´;
var   Qry_Aux : TSQLQuery;
begin
  // instancia o objeto TSQLQuery em run-time
  Qry_Aux               := TSQLQuery.Create(Nil);
  Qry_Aux.SQLConnection := SQLConnectionDefault;

  // verifica se está em transação, caso não inicializará
  if SQLConnectionDefault.InTransaction then
    SQLConnectionDefault.StartTransaction(TTransactionDesc);

  try
    try
      Qry_Aux.SQL.Add(c_SQL_Tabela);
      Qry_Aux.ExecSQL;

      // vários outros procedimentos aqui       
      // ......

      // salva tudo e atualiza no banco
      SQLConnectionDefault.Commit(TTransactionDesc);

    except
      // caso ocorra algum erro executar o seguinte código abaixo
      do e: exception begin
        SQLConnectionDefault.Roolback(TTransactionDesc);
        ShowMessage(´Ocorreu um erro: + #13 + e.Message);
      end;

  finally
    Qry_Aux.Free; // aqui sempre será executado
  end;

end;


Os objetos [b:18f14d6396]TTransactionDesc[/b:18f14d6396], você poderia utilizar algum já criado, mas no caso seria recomendável setar para [b:18f14d6396]xilREADCOMMITTED[/b:18f14d6396]. Já no caso do [b:18f14d6396]SQLConnectionDefault[/b:18f14d6396] vale o mesmo, pois depende das configurações do banco.

Acho que este simples exemplo já fica legal para implementar no código, você poderia fazer até uma procedure padrão já com tratamento de transação, tipow sempre que eu quiser fazer qualquer tipow de tratamento você passaria as SQL´s, os parâmetros, e outros. Existem várias formas de poder facilitar no desenvolvimento.

afinal estou terminando um sistema que desenvolvi usando DBexpress mas na hora de implementar um controle de transação mais complexo, acho que ele deixa um pouco a desejar ou seja sem rodeios


Agora se você achar que ficou um pouco lento, vai depender de uma porção de coisas, tipow rede, configuração de banco, configuração da conexão, velocidade do servidor e da máquina cliente, e nível de transação e .... é coisa que não acaba mais aí só você chamando o Inspetor Bugiganga. :lol: :lol: :lol: Brincadeira!!! Mais é meio chato já sofri com isto também.

Existem inúmeros tópicos abordados sobre transação é só conferir em [url=http://forum.clubedelphi.net/search.php]pesquisar[/url], vai lá e pimba. Qualquer coisa posta tuas dúvidas mais específicas aqui.

:wink:
Falow!


Responder

Gostei + 0

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

Aceitar