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.
Componente do mês
Table Scanner 4.0 Manutenção em tabelas DBase/Paradox
Oi pessoal. Nesta edição do Jornal do Delphi vamos fugir um pouco da regra, falando sobre uma ferramenta (e não um componente, como indica a seção) bastante interessante e muito útil para aqueles que trabalham com bases de dados em Paradox/DBase. Um dos grandes problemas enfrentados com essa base de dados (Paradox) é a facilidade com que seus índices se corrompem, principalmente quando temos sistemas rodando em rede. Outro inconveniente é com a distribuição da base de dados: ou criamos todas na mão, via código, ou enviamos as tabelas vazias.
Existem várias ferramentas que se propõem a fazer esse trabalho, mas uma das melhores que já encontrei na Internet é o Table Scanner. O Table Scanner é um gerador de códigos (em Object Pascal) que automatiza a criação e manutenção de tabelas Paradox/Dbase.
Duas tarefas muito importantes nas quais o código gerado por esta ferramenta auxilia, são a criação da base de dados quando a aplicação é executada pela primeira vez, e a manutenção dos índices e arquivos auxiliares usados pelas tabelas Paradox/DBase.
O Table Scanner trabalha fazendo chamadas a API do BDE associado com uma DLL (TblScn.DLL) que acompanha a ferramenta. Esta DLL encapsula todo o código necessário para a criação/manutenção de tabelas Paradox/Dbase. Veja na figura abaixo o Table Scanner em execução:
Pincipais botões da barra de ferramentas do Table Scanner
Para escolher as tabelas das quais você quer trabalhar, clique no botão correspondente da barra de ferramentas. Na caixa de diálogo, selecione as tabelas que deseja.
Caixa de diálogo para seleção de tabelas
A partir desse ponto, o Table Scanner já pode gerar o código fonte. Para isso, basta clicar no segundo botão (Build Source Code).
O Table Scanner irá exibir o código fonte gerado no lado direito da janela. Observe que o Table Scanner mostra o código agrupado de uma forma super interessante: ele usa um componente do tipo TOutLine (da paleta “Win 3.1”). Basta clicar nos nós do OutLine para visualizar o restante do código.
Janela do Table Scanner V4.00
Após gerar o código fonte, salve a unit gerada clicando no botão para salvar o código gerado. O Table Scanner sugere o nome “makedb.pas” para a nova unit. Observe que o código gerado irá fazer chamadas a funções que se encontram na DLL que acompanha o Table Scanner, logo essa DLL deve ser distribuída juntamente com sua aplicação.
O próximo passo agora é incluir a unit gerada pelo Table Scanner em seu projeto e fazer a chamada da procedure CheckTables para criação/manutenção de suas tabelas. Você deve fazer a chamada a esta procedure antes de abrir qualquer tabela, pois o Table Scanner irá fazer um lock no database caso seja necessário fazer algum reparo, como a regeração de índices corrompidos. O melhor lugar para fazer essa chamada é o evento OnCreate de seu formulário principal. Veja um código de exemplo:
procedure TForm1.FormCreate
(Sender:TObject);
begin
// ... feche todas as tabelas
antes de usar a procedure ...
Database1.Connected := true;
Check(DbiGetDirectory(Database1.Handle,false,szDirectory));
ChckTables([false,StrPas(szDirectory),@Status.DoOnCheckTable]);
end;
A procedure CheckTables espera um parâmetro do tipo Open Array, no qual é possível passar para a procedure três valores:
1º Parâmetro: Parâmetro Booleano. Quando você fornece esse parâmetro com o valor FALSE, o Table Scanner irá fazer apenas a manutenção as tabelas que estão com erros de índice ou com arquivos auxiliares faltando. Se o valor do parâmetro é TRUE, o Table Scanner irá fazer a manutenção de todas as tabelas. Esse parâmetro é obrigatório. Note que o Table Scanner irá criar as tabelas, caso estas não existam.
2º Parâmetro: Parâmetro String. Esse parâmetro indica ao Table Scanner a localização das tabelas que o mesmo deve trabalhar. Esse parâmetro é opcional. Como valor default, o Table Scanner irá usar o diretório de inicialização da aplicação.
3º Parâmetro: Parâmetro Pointer. Esse parâmetro indica ao Table Scanner o endereço de uma função Call Back que o mesmo usa para retornar para a aplicação informações sobre a operação que a DLL está realizando no momento. Esse parâmetro também é opcional.
Conclusão
Vemos que o Table Scanner é uma ferramenta muito útil para quem trabalha com bases de dados Paradox/DBase. Através do código gerado e da DLL que acompanha a ferramenta podemos facilmente fazer a manutenção de nossas tabelas, tendo uma grande economia de tempo, além da padronização do código. Você pode encontrar o Table Scanner na página de seu criador, o Demian (que aliás, está de parabéns). O endereço é http://www.gold.com.br/~demian. Gostaria de salientar que o Table Scanner é Shareware, mas tem um custo bastante acessível. Essa é uma ferramenta que todo desenvolvedor que trabalha com bases de dados Paradox/DBase deve ter.