GARANTIR DESCONTO

Fórum Como usar o ReadCommitted??? #44252

12/05/2004

0

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!


Delphi32

Delphi32

Responder

Posts

22/03/2005

Delphi32

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é!


Responder

Gostei + 0

23/03/2005

Faelcavalcanti

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 ????


Responder

Gostei + 0

23/03/2005

Delphi32

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é!


Responder

Gostei + 0

23/03/2005

Faelcavalcanti

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!


Responder

Gostei + 0

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

Aceitar