[firebase-br] trabalhando com trasações...

maikiperin maiki.perin em gmail.com
Ter Mar 1 10:31:28 -03 2005


bom dia,

gostaria da opinião(sugestão) do pessoal do fórum em relação
a minha rotina de tratamento de transações envolvendo o b.d.,
segue a rotina:

//efetuo o insert ou update
MeuProprietario.Cadastrar;

//retorna Id do Proprietario
Campos:='GEN_ID(GENPROPRIETARIO_ID, 0)';
Tabela:='RDB$DATABASE';
Complemento:='';
Seleciona(Campos,Tabela,Complemento);
EId.text:=DMDados.DSPrincipal.DataSet['GEN_ID'];

//trabalho com a transação
if not DMDados.IBTFidelizando.InTransaction then
  DMDados.IBTFidelizando.StartTransaction;
DMDados.IBTFidelizando.Commit;
  messagedlg('Registro Salvo.',mtInformation,[mbOK],0);

Obs.: Minhas query´s se concentram em um único Data Module, 
com a seguinte estrutura: IBDatabase->IBTransaction->IBQuery->DataSource
abro e fecho as query´s somente quando as preciso e o IBTransaction está 
com os seguintes parâmetros: read_committed, rec_version. Não utilizo
componentes DataWare, faço o controle manualmente em Edit´s.

Obs2.: Observa-se q não faço uso de um Rollback numa exception por exemplo,
isso seria adequado ???...só faço uso do Rollback apenas em cadastros
Master/Detail, onde no OnClose do Form, verifico se não houve a inserção ou alteração
(pelo Id do form).


Mais detalhes sobre a lista de discussão lista