Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.
Método para Importação/Exportação de Tabelas
Neste artigo pretendo estabelecer de uma forma bem prática o uso de um método para importação/exportação de tabelas de dados que utilizam Drivers Dbase/Paradox. Para isso, criaremos um projeto de conversão simples, porém, com detalhes interessantes, como a criação dos componentes Table através de linhas de comando, para que analisemos com maior clareza esta interessantíssima classe TTable.
Classe - Componente - Propriedade - Valor
TEdit - Edit_Origem - Text - C:\ORIGEM\
Tedit - Edit_Destino - Text - C:\DESTINO\
TLabel - Label1 - Caption - Caminho de Origem
TLabel - Label2 - Caption - Caminho de Destino
Inclua ainda um componente Gauge e um componente SpeedButton (ou qualquer outro botão que desejar), lembrando que neste exemplo a propriedade Name do Botão será igual a Bexportar.
Ficando o nosso Form conforme abaixo:
Toda a nossa rotina ficará no evento Onclik do Botão (Bexportar), ficando da seguinte forma:
procedure TForm1.bexportarClick(Sender: TObject);
Var mTabela_origem,
mTabela_Destino : TTable; // classe para a nossa Tabela
m_codigo : String;
Begin
mTabela_origem := TTable.Create(self);
// cria um componente Table
//e associa à variável do mesmo tipo (classe)
mTabela_origem.Name := 'TABELA_ORIGEM';
// Associa a String 'TABELA_ORIGEM' à propriedade "Name" do TTable criado
mTabela_Destino := TTable.Create(self);
mTabela_Destino.Name := 'TABELA_DESTINO';
Try
//// Configurando a Tabela de Origem dos Dados
With mTabela_origem do
Begin
Close;
//Fecha a tabela para configurar as propriedades do TTable
DataBaseName := 'C:\ORIGEM\';
// Caminho para o arquivo de dados
TableType := ttDBase;
// Tipo de Driver utilizado pelo arquivo de dados
exclusive := true;
//Utiliza a tabela em modo exlusivo
TableName := 'TABELA_O.DBF';
// Nome da tabela de origem
Open;
First;
Gauge1.progress := 0;
Gauge1.MaxValue := recordcount;
End;
//// Configurando a Tabela de Destino dos Dados
With mTabela_destino do
Begin
close;
DataBaseName := 'C:\DESTINO\';
TableType := ttParadox;
exclusive := true;
TableName := 'TABELA_D.DB';
Open;
End;
With mTabela_origem do
Begin
While not Eof do
Begin
Application.ProcessMessages;
Gauge1.progress := recno;
m_codigo := fieldbyname('codigo').asstring;
// neste exemplo vamos exportar apenas o campo código da tabela
With mTabela_Destino do
Begin
indexfieldnames := 'CODIGO';
//Utilizaremos o índice CODIGO para evitar duplicidade de código
if not findkey([m_codigo])then
Begin
Append;
fieldbyname('CODIGO_DEST').asstring := m_codigo;
Post;
End;
End;
Next;
End;
End;
ShowMessage('Acabou.');
finally
mTabela_origem.free;
mTabela_Destino.free;
End;
end;
O Exemplo com o código fonte pode ser baixado clicando aqui!
Fonte: Esta rotina foi criada com base em módulos da “Sysmac - Softwares e Consultoria”.
Espero ter colaborado.
-(Wiliam Zacarias)-
wiliam@delphi.eti.br
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009