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