Como usar o ReadCommitted???
Olá! Tenho em um form um ClientDataSet e uma IBQuery; No ClientDataSet tenho um campo Lookup para o campo [b:4ae374b83d]Quantidade[/b:4ae374b83d] da IBQuery. A Transação da IBQuery está configurada com ReadCommitted, porém se eu altero esse campo em outro programa como IBOConsole e comito, o campo Lookup continua com o valor antigo. Só atualiza se eu fechar e abrir a Query. Já fiz esse mesmo teste usando IBTable e sem campo Lookup, mas o resultado é o mesmo.
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!
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
Curtidas 0
Respostas
Delphi32
12/05/2004
sabia que já tinha postado isso antes...
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é!
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
Faelcavalcanti
12/05/2004
sabia que já tinha postado isso antes...
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é!
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
Delphi32
12/05/2004
Sobre esse tipow de configuração, tá muito estranho tais utilizando transação, e esse refresh onde é feito ????
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
Faelcavalcanti
12/05/2004
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é!
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