Ver Mensaje Individual
  #1  
Antiguo 15-08-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Reputación: 23
Paulao Va por buen camino
Tiempo excedido

Tengo una rutina que hace un update en una tabla de banco. Que pasa es que estas tablas tiene muchos registros. Una com 60.000.000 y otra con 5.000.000. La que yo voy a actualizar es la de 5.000.000, pero basada en la que tiene 60 millones. Yo pongo uno registros apenas y quando me voy a actualizar, me lo da el erro: TIEMPO EXCEDIDO. Hay como permitir que mi programa lo haga con el tiempo que for necesario? Uso:
Delphi 6, MsSql Server 2005 y ADO. Abajo mi rutina:

Código Delphi [-]
procedure TfrmMain.AtualizaTabela;
var
  sql,
  tabela: String;
  qry,qry_carga: TAdoQuery;
  dts: TDataSource;
  arq: TextFile;
  incrementa:integer;
begin
  incrementa := 0;
  if rgBanco.ItemIndex = -1 then
  begin
    MessageDlg('Selecione uma opção de Forma de Execução',mtInformation,[mbok],0);
    Exit;
  end;
  AssignFile (arq, 'D:\Logs\Log_Erro_Update.txt');
  Rewrite (arq);

  qry := TAdoQuery.Create(nil);
  qry.Connection := DM.Conn;
  dts := TDataSource.Create(nil);
  dts.DataSet := qry;
  Grid.DataSource := dts;

  if ComboBox1.Text <> '' then
    tabela := ComboBox1.Text;

  bAtualiza_tudo  := rgBanco.ItemIndex = 0;

  DM.qryAtualiza.Sql.Clear;
  if (rgBanco.ItemIndex = 1) and (edtQtde.Text <> '') then
    DM.qryAtualiza.Sql.Add('select top ' + edtQtde.Text + ' * from conhecimento_carga where data_emissao_conhecimento = ''1899-12-30 00:00:00.000''');
  DM.qryAtualiza.Open;

  sql := Memo1.Lines.Text;
  pb.Max := DM.qryAtualiza.RecordCount;
  pb.Position := 0;
  DM.qryAtualiza.First;
  while not DM.qryAtualiza.Eof do
  begin
    try
      DM.Conn.BeginTrans;
      //sql := sql + DM.qryAtualiza.FieldByName('numero_conhecimento').AsString;
      qry.SQL.add(sql);
      qry.ExecSQL;
      DM.Conn.CommitTrans;
      pb.Position := pb.Position + 1;
      inc(incrementa);
      DM.qryAtualiza.Next;
    except
      on E: Exception do
      begin
        writeln(arq, DateToStr(Now) + ' - ' + E.Message);
      end;
    end;
  end;
  DM.qryAtualiza.Close;
  CloseFile(arq);
end;
Responder Con Cita