Fórum Como usar o ReadCommitted??? #44252
12/05/2004
0
Li em outra mensagem nesse fórum que a IBQuery só funciona assim mesmo (para atualizar deve-se fechá-la e abrí-la), mas se for assim, pra que usar então o ReadCommitted? Não seria mais vantajoso usar o modo Snapshot (concurrency e nowait)?
Ps.: Uso Firebird 1.5.
Desde já agradeço!
Delphi32
Curtir tópico
+ 0Posts
22/03/2005
Delphi32
essa dúvida quanto ao ReadCommited ainda permanece...
Estou usando um IBDataSet ligado a um Transaction configurado como ReadCommited. Estou usando um IBEvents para me informar quando algum usuário salva algo novo na tabela. Nesse momento todas as estações dão um refresh, mas não conseguem enxergar o que foi alterado... o que pode estar errado?
Até!
Gostei + 0
23/03/2005
Faelcavalcanti
Cara, sobre este tipow de configuração como [b:17bb6591b0]ReadCommited[/b:17bb6591b0], no site sobre o componente [url=http://www.ibobjects.com]IBObjects[/url] possui um demo muito bom falando sobre diversos tipos de isolações em relação à transação e quando eles fazem a diferença. Sei que é outro componente mas é muito show o demo, caso queiras experimentar.
Sobre esse tipow de configuração, tá muito estranho tais utilizando transação, e esse refresh onde é feito ????
Gostei + 0
23/03/2005
Delphi32
O Refresh é feito no IBDataSet...
Ah, e ainda não peguei o demo que você falou não, mas tenho a impressão que já o peguei há muito tempo atrás...
Até!
Gostei + 0
23/03/2005
Faelcavalcanti
Cara, estive tentando procurar e parece que mudaram o link, caso eu encontre aqui te envio via particular. Agora sobre o IBDataset, não fica legal não. Quando eu utilizava com o IBObjects eu fazia tudo associado a uma transação, caso alguma query estivesse sido associada, automaticamente era feito um refresh em todos os acessos conectados. Por exemplo :
function SalvarDados; const c_SQL_Default : String = ´UPDATE TABELA SET CODIGO = :PCODIGO WHERE NOME = :PNOME´; var Qry_Aux : TIB_Query; begin // instanciando Qry_Aux := TIB_Query.Create(Nil); Qry_Aux.Transaction := TIB_TransactionDefault; TIB_TransactionDefault.StartTransaction; try try Qry_Aux.SQL.Add(c_SQL_Default); Qry_Aux.ParamByName(´PCODIGO´).AsInteger := 87 Qry_Aux.ParamByName(´PNOME´).AsInteger := ´Java is the future!´; Qry_Aux.ExercSQL; TIB_TransactionDefault.CommitRetaing; // existe mais dois outros métodos que são agregados a eventos, mais não estou muito bem lembrado // é neste momento que deverá ser realizado um refresh, mas não em uma Query ou correspondente TIB_TransactionDefault.Refresh; except TIB_TransactionDefault.RollbackRetaing; end; finally Qry_Aux.Free; end; end;
Cara acabei fazendo meio que nas pressas o código, mas é só um exemplo de como mais ou menos eu utilizava. Mas lógico que eu usava métodos genéricos para aumentar a reutilização de código.
:wink:
Falow!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)