Aqui na empresa temos algo parecido. Antes da compilação do executavel, rodamos o gendbc, como o Lassala informou. Ele gera um arquivo meubanco.krt e um prg, que é anexado ao projeto.
O arquivo krt, contem informações sobre os relacionamentos e I.R.
Quando o cliente executa o programa ele procura na base de dados um pequeno arquivo contendo a versao da base de dados ou a data de sua estrutura, e compara com a versão que esta sendo executada, se for necessária a atualização uma messagebox, e enviada ao usuário informando a necessidade de atualização da base de dados, solicitando uma cópia de segurançao ao usuário antes da atualização.
Qdo o usuario autoriza a atualização da base de dados, o sistema copia toda pasta de dados para uma pasta de \dadosold e cria uma base de dados zerada na pasta \dados, após isto executa uma rotina de atualizaçao das bases.
A rotina que utilizamos nao usa append from, mas fazemos a leitura do registro e executamos o insert na tabela nova. O código é meio extenso, e ainda esta sendo aprimorado se houver uma forma de anexar um arquivo eu posso enviar para vcs, que até podem me ajudar a melhora-lo.
Na advisor de marco de 2001, tem um artigo de Juan Luiz Calcagno, que faz algo parecido, e ele utiliza o gendbx, talvez ate mais completo e complexo que o meu código. Neste artigo ele ainda faz uso project hook para ajuda-lo nesta tarefa.
A minha mensagem esta um pouco longa, mas nao sei se isto tem algum problema aqui no UT.
Abraços
Paulo Cesar Carneiro
Paulo Cesar Carneiro
desenvolvimento@controplan.com.br"My God, what have we done?"
-- Capt. Robert Lewis, co-pilot of the Enola Gay, recalling the moment the atomic bomb exploded over Hiroshima
At 8:15 a.m. on August 6 1945