Reparei que na sua rotina vc usa table...
talves a lentidão não seja na hora de gravar e sim na hora de ler o conteudo
da table... Já ví isso acontecer quando um outro projeto (que não era o meu)
lia uma quantidade grande de registros localizados em um .dbf em uma máquina
remota...

não sei como está o seu projeto... é só uma sugestão... tomara que ajude

abraço


Em 26/06/06, Francisco Carlos de Andrade <[EMAIL PROTECTED]>
escreveu:
>
>  Ola pessoal, estou aqui com um problema serio, tenho 1 arquivo que sempre
> esta sendo atualizado com inclusoes e ou alteracoes de dados, acontece que
> qdo vou atualizar uma determinada quantidade de registros ele demora
> muito,
> exemplo digamos que eu tenha que atualizar 2000 registro fazendo a rotina
> de
> ver se cada registro ja esta inserido no arquivo caso esteja eu atualizo o
> registro e caso nao eu insiro o novo registro, com essa qtde de registro a
> serem verificadas esta demorando aproximadamente 2 horas  e meia.
> Minha rotina :
>   Table1.First;
>   While not Table1.Eof do begin
>    Application.ProcessMessages;
>    If tmpvenda.Active = True then tmpvenda.Active := False;
>    Tmpvenda.Sql.Clear;
>    Tmpvenda.Sql.Add('select dataemis,registro,cgce,modelo,especie,serie
> numero,aliquota,cnpjempresa from ntfvenda where ');
>    Tmpvenda.Sql.Add('(Cgce="'+Edit5.Text+'") and (Modelo="'+Table1MODELO
> Text+'") ');
>    Tmpvenda.Sql.Add('and (Especie="'+Table1ESPECIE.Text+'") and (Serie="
> +Table1SERIE.Text+'") ');
>    Tmpvenda.Sql.Add('and (Numero="'+Table1NUMERO.Text+'") and (Aliquota="
> +Table1ALIQUOTA.Text+'") ');
>    Tmpvenda.Active := True;
>    If tmpvenda.RecordCount = 0 then begin
>     LSaida := 'insert into ntfvenda (Modelo,Cgce,CnpjEmpresa';
>     If length(Table1NO_MAQUINA.Text) > 0 then LSaida :=
> LSaida+',No_Maquina'
>
>     If length(Table1ESPECIE.Text)    > 0 then LSaida := LSaida+',Especie';
>
>    // faco a comparacao dos campos
>
>     LSaida := LSaida+') values ("'+Table1MODELO.Text+'","'+Edit5.text+'","
> +Copy(Edit5.Text,1,8)+Copy(Edit5.Text,10,4)+Copy(Edit5.Text,15,2)+'"';
>
>     if length(Table1NO_MAQUINA.Text) > 0 then LSaida := LSaida+',"
> +Table1NO_MAQUINA.Text+'"';
>     if length(Table1ESPECIE.Text)    > 0 then LSaida := LSaida+',"
> +Table1ESPECIE.Text+'"';
>
>     LSaida := LSaida+')';
>     if Zntfvenda.Active = True then Zntfvenda.Active := False;
>     Zntfvenda.Sql.Clear;
>     Zntfvenda.Sql.Add(LSaida);
>     if length(Table1DATAEMIS.Text)   > 0 then Zntfvenda.ParamByName('d1')
> AsDateTime := Table1DATAEMIS.AsDateTime;
>     if length(Table1VRCTB.Text)      > 0 then Zntfvenda.ParamByName('v1')
> AsFloat := Table1VRCTB.Value;
>
>    // comparacao dos campos para parametros
>     Zntfvenda.ExecSql;
>    end
>    else begin
>     MId := tmpvendaRegistro.Text;
>     if tmpVendaDataEmis.Text = Table1DataEmis.Text then begin
>      LSaida := 'Update ntfvenda set
> No_Maquina="'+Table1NO_MAQUINA.Text+'"
> Especie="'+Table1Especie.Text+'",Serie="'+Table1SERIE.Text;
>
> LSaida:=LSaida+'",Numero="'+Table1NUMERO.Text+'",DataEmis=:d1,Uf_Dest="
> +Table1UF_DEST.Text+'",Codctb="'+Table1CODCTB.Text;
>      LSaida:=LSaida+'",CodFiscn="'+Table1CODFISCN.Text+'",VrCtb=:v1
> BaseCalc=:v2,Aliquota=:v3,ImpDeb=:v4,Isentas=:v5,Outras=:v6,';
>      Zntfvenda.ExecSql;
>     // mesma comparacao mas dessa vez serve para o update
>     end;
>    end;
>    Table1.Next;
>   end;
>
>
> Alguem poderia me dar uma ideia de como fazer isso + rapido
>
> -------------------------------------------------------------------------
> Francisco Carlos de Andrade
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
> [EMAIL PROTECTED]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>
> 
>


[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a