Esse artigo faz parte da revista Clube Delphi edição 17. Clique aqui para ler todos os artigos desta edição


Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Trabalhando com TUpdateSql e CachedUpdates

 

 

Ao desenvolvermos uma aplicação Client/Server, devemos quase sempre nos preocupar com muitos aspectos que levem a aplicação ter um ótimo desempenho. Com certeza, um dos maiores problemas se dá no tráfego das informações na rede, o que significará uma boa velocidade de resposta para o usuário ou não.

Imagine uma aplicação que envolva grandes quantidades de registros e diversos usuários acessando-os ao mesmo tempo. O tráfego das informações na rede seria enorme e prejudicaria a velocidade de transmissão dos dados. A aplicação ficaria lenta e perderia vários segundos para realizar operações simples envolvendo consultas às informações. E, como nós sabemos, para os usuários alguns segundos a menos são como horas de espera.

Para que isso não ocorra, devemos diminuir o fluxo das informações na rede, fazendo com que a aplicação se torne mais rápida. Uma das grandes soluções é fazer com as informações, uma vez solicitadas pelos usuários, fiquem nas suas máquinas (lado Client). Os usuários farão todas as modificações necessárias e depois de tudo pronto enviarão para o servidor com o propósito de atualizar essas informações. Com isso, este tráfego será reduzido consideravelmente, pois funcionará como se as informações estivessem localmente no computador.

 

CachedUpdates

 

A maneira para que isso ocorra é a utilização do CachedUpdates, que é responsável por manter as informações localmente na máquina do usuário, ou seja, na memória do computador.

Quando utilizamos os componentes TTable, TQuery e TStoredProc, podemos fazer com que eles fiquem em modo CachedUpdates. É fácil: estes componentes possuem uma propriedade de mesmo nome que, ao setarmos para true, as informações obtidas por eles ficarão em memória. Veja a figura abaixo:

 

 

Mas nem tudo é tão fácil assim. Lembre-se que agora as informações estarão na memória, ou seja, qualquer alteração será feita lá, e não mais no servidor. Esse é o único problema de se trabalhar com CachedUpdates: se desligarmos o computador, perdemos tudo.

O melhor agora é fazer com que as informações sejam gravadas no servidor, além de limpar a memória para que ela não fique sobrecarregada de informações desnecessárias. Veja o exemplo abaixo:

 

Database1.StartTransaction;

try

   qryProdutos.ApplyUpdates;

   Database1.Commit;

   qryProdutos.CommitUpdates;

except

   qryProdutos.CancelUpdates;

   Database1.Rollback;

...

Quer ler esse conteúdo completo? Tenha acesso completo