Durante essa semana estive modificando o nome de alguns campos do banco de dados de um dos nossos maiores projetos. Um dos campos era relativamente importante, de uma das principais tabelas do sistema e estava sendo usado no SQL de muitos datasets.
Qual seria a melhor forma de localizar todos os locais que o campo é utilizado? A primeira idéia que me veio a cabeça foi usar o ótimo Grep Search do GExperts e pesquisar todos os arquivos do projeto, incluindo os DFM. O problema dessa solução é que a pesquisa traz muito lixo junto, pois o nome do campo era comum e várias tabelas tinham outros campos com o mesmo nome. Então tive que ir item por item encontrado, analisar o código, identificar se era da tabela que eu estava modificando e então modificar o SQL.
Conclusão, foi uma tarefa demorada, chata e com muita chance de deixar algo passar e só dar pau quando o cliente for usar o sistema.
E o que me motivou a contar isso aqui, é que só tive essa dificuldade porque esse sistema ainda está usando DataSnap padrão do Delphi com muitos TSQLDataSet e TSQLQuery espalhados nos data modules do servidor. Em breve pretendo iniciar a migração dele para DataAbstract, que fornece uma ferramenta ótima para facilitar a nossa vida nesse tipo de situação.
No DataAbstract, todos os datasets que utilizamos no sistema são criados e mantidos através do Schema Modeler, portanto temos um local centralizado para todo o SQL que escrevemos no sistema. O interessante é que a qualquer momento você pode pedir para o Schema Modeler validar todos os datasets com a estrutura do banco. O que ele faz é conectar ao banco e verificar se todos os seus comandos SQL ainda são válidos na estrutura atual do banco. Não é show?
E tem mais! Se seu sistema suportar mais de um banco ao mesmo tempo. Por exemplo, Firebird e SQL Server, o Schema Modeler conecta aos dois e valida os comandos nos dois bancos.
Enfim, é uma ferramenta muito poderosa e que pode nos economizar muito tempo na manutenção de nossos aplicativos.
TPodcast
2 Comments
Então!
Estou com exatamente este mesmo problema! Tenho um sistema enorme em DataSnap + RemObjects, e estava precisando renomear 90% dos campos da minha tabela! Loucura e algo totalmente inviável!
Tenho o Dataabstract, mas andei tem algumas dificuldade no começo com ele, e como estava sem tempo abandonei. Coisas básicas estavam complicadas demais pra se fazer, mas imagino ser falta de experiência!
Vou voltar a dar uma boa olhada nele! Espero que dessa vez consiga aproveita tudo que ele tem a oferecer!
Cezar, vale a pena investir tempo nele. Vai mandando as dúvidas lá no news que vamos te ajudando.