TransactionDesc: Delphi

Veja nesta quick como podemos trabalhar com transações no Delphi usando a classe TTransactionDesc

Olá galera, nesta Quick Tips, irei mostra como podemos trabalhar com transações no Delphi usando a classe TTransactionDesc, localizada na unit SqlExpr. Já adianto que para este exemplo não vamos esquecer de dar uses em SqlExpr.

Vamos adicionar um SQLConnection configurado para o seu banco de dados: não importa qual seja. Logo em seguida vamos adicionar um Button(BtnIncluir), como mostra o exemplo:

Inicialmente vamos criar dois records para ilustrarmos o exemplo. Veja a declaração dos dois records:

type RCliente = Record IDCliente, Descricao: String; End; RTelefone = Record IDTelefone, IDCliente, Descricao: String; End;

A estrutura das duas tabelas que irei implementar é:

Na seção private, vamos incluir duas procedures IncluirCliente e IncluirTelefone:

private { Private declarations } procedure IncluirCliente; procedure IncluirTelefone;

Agora vamos implementar cada uma das procedures:

#IncluirCliente procedure TFrmTransacao.IncluirCliente; Var C : RCliente; xQry : TSQLQuery; begin C.IDCliente := '1'; C.Descricao := 'Wesley Yamazack'; xQry := TSQLQuery.Create(Self); xQry.SQLConnection := SqlConnectionDevMedia; xQry.SQL.Add(' INSERT INTO CLIENTE(IDCLIENTE, DESCRICAO )' ); xQry.SQL.Add(' VALUES ( '+ C.IDCliente + ' , ' + QuotedStr(C.Descricao) + ' ) ' ); xQry.ExecSQL; ShowMessage('Cliente incluído com sucesso'); end; #IncluirTelefone procedure TFrmTransacao.IncluirTelefone; Var T : RTelefone; xQry : TSQLQuery; begin T.IDTelefone := '1'; T.IDCliente := '1'; T.Descricao := '3333-3333'; xQry := TSQLQuery.Create(Self); xQry.SQLConnection := SqlConnectionDevMedia; xQry.SQL.Add(' INSERT INTO TELEFONE(IDTELEFONE, IDCLIENTE, DESCRICAO ) ' ); xQry.SQL.Add(' VALUES ( '+ T.IDTelefone + ' , ' + T.IDCliente + ' , ' + QuotedStr(T.Descricao) + ' ) ' ); xQry.ExecSQL; ShowMessage('Telefone incluído com sucesso'); end; end.

E por último vamos a implementação do BtnIncluir:

procedure TFrmTransacao.BtnIncluirClick(Sender: TObject); Var Trans : TTransactionDesc; ID : Integer; begin SqlConnectionDevMedia.StartTransaction(Trans); Trans.TransactionID := Random(ID); IncluirCliente; IncluirTelefone; SqlConnectionDevMedia.Commit(Trans); end;

Por que usar transação?

Imagine que você só possa incluir um cliente, se ele tiver um telefone, e por um acaso, deu erro ao incluir um telefone, o seu cliente não poderá ficar sem um telefone. Com a transação o processo só é concluído, ou seja, os dois registros só são criados se ambos estiverem corretos, do contrário nenhum dos dois será incluído.

Fico por aqui ate à próxima Quick Tips. Baixe o exemplo completo neste post.

Artigos relacionados