Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tiempo Excedido(Re-Post) (https://www.clubdelphi.com/foros/showthread.php?t=75371)

Paulao 15-08-2011 19:33:21

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;

oscarac 15-08-2011 22:13:20

y en que instruccion es?
has depurado el modulo para ver donde es que se esta quedando?

Paulao 15-08-2011 22:20:20

Ya lo hizo. Es que en mi codigo, yo hizo un update, pero no hizo en comparacion con la query del loop. Crie tres parametros en mi query de update y puzo eses parametros com la qury del loop y ahora si, estas ok. Gracias.

Código Delphi [-]
qry.SQL.add(sql);
      qry.Parameters.ParamByName('Filial').Value  := DM.qryAtualiza.FieldByName('filial_origem').AsString;
      qry.Parameters.ParamByName('Numero').Value  := DM.qryAtualiza.FieldByName('numero_conhecimento').AsString;
      qry.Parameters.ParamByName('Emissao').Value := DM.qryAtualiza.FieldByName('data_emissao_conhecimento').AsString;
      qry.ExecSQL;

Paulao 17-08-2011 15:22:05

Tiempo Excedido(Re-Post)
 
Uso Ado, Delphi 6 y Sql Server 2005. Siempre que me voy a ejecutar una View por Delphi, me lo da el erro de Tiempo Excedido. El que pasa es que si voy a ejecutar en el gerenciador del banco de datos, si queda listo. El problema estas en Delphi, con la aplicacion. Que puede ser esto?

oscarac 17-08-2011 15:38:50

coloca el codigo......


esta pregunta no la hiciste anteriormente???:confused::confused:

Paulao 17-08-2011 16:08:43

Por esto yo puzo Re-Post, o sea, hizo la pregunta parecida, pero en situacion diferente. Pero yo resolvi ponendo la propriedad ConnectionTimeOut para zero(0). Esto resolvio. Gracias.

Carlos Sánchez 14-11-2011 16:05:00

tiempo exedido
 
estimado,
Paulao, tienes que aumentar el tiempo de desconeccion de la base de datos con tu aplicacion, en el connecttimeout aumentalo, en la opcion params, te recomiendo que le pongas unos 2800000. a mi resolvio el problema en otra aplicacioón, espero que te seriva.

soy novato pero he tenido algunos cosas hechas y creo que te pueden ayudar estas recomendaciones

Saludos


La franja horaria es GMT +2. Ahora son las 07:00:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi