sera q alguem pode me ajudar ???? - urgente

13/05/2003

1

implementei este codigo para transferir um TXT de 19000 itens p/ uma tabela SQL, na minha maquina o codigo foi eficiente, mas na maquina que utilizo no trabalho nao, será que pode ser melhorado este código? ou é porque em minha maquina utilizo SLQ Server Desktop e no trabalho uso cliente/servidor!! e mais, o usuario clica no botao para atualizar a tabela, preciso que qdo carregar o programa ele verifica se o arquivo TXT foi alterado, se sim atualiza a tabela sem precisar da acao do usuario... obrigado


procedure TfrmPedidos.CopiaTXT(Sender: TObject);
var
TXT : TextFile ;
Entrada : String ;
begin
AssignFile(TXT, ´C:\USIProjetos\Tabelas\Prods.TXT´);
Reset(TXT) ;
while not Eoln(TXT) do
begin
Readln(TXT,Entrada) ;
DMGeral.ADOtblProduto.Insert ;
DMGeral.ADOtblProdutoCod_prod.Value := Copy(Entrada,01,09) ;
DMGeral.ADOtblProdutoNome_prod.Value := Copy(Entrada,10,40) ;
DMGeral.ADOtblProduto.Post ;
end;
CloseFile(TXT) ;
btnCopia.Enabled := False ;
end;


Responder

Posts

13/05/2003

Renaldo

Olá, espero que funcione.

DMGeral.ADOtblProdutoCod_prod.Value := Copy(Entrada,01,09) ;

Cod_prod é um campo da tabela?
se for use assim:

DMGeral.ADOtblProduto(´Cod_prod´).Value := Copy(Entrada,01,09) ;

Um abraço,
Renaldo


Responder

13/05/2003

Cfn2003

J ative experiencias parecidas, e optei por utilizar codigo sql, o executavel fica mais rapido.

tente o codigo abaixo, acho que vai melhorar

procedure TfrmPedidos.CopiaTXT(Sender: TObject);
var
TXT : TextFile ;
Entrada : String ;
begin
AssignFile(TXT, ´C:\USIProjetos\Tabelas\Prods.TXT´);
Reset(TXT) ;
while not Eoln(TXT) do
begin
Readln(TXT,Entrada) ;
with tadoquery.create(nil) do
try
connection := suaconexao;
sql.add(´insert suatabela(campo1,campo2....)´;
sql.add(´values(:campo1, :campo2, ...)´
parameters.itens[0].datatype := ftstring;
parameters.itens[1].datatype := ftinteger;
parameters[0].value :=Copy(Entrada,01,09) ;
parameters[1].value := Copy(Entrada,10,40) ;
execsql;
finally
free;
end;

end;
CloseFile(TXT) ;
btnCopia.Enabled := False ;
end;


Responder