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;
...