Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
Poder: 21
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
  #2  
Antiguo 15-08-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
y en que instruccion es?
has depurado el modulo para ver donde es que se esta quedando?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
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
Poder: 21
Paulao Va por buen camino
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;
Responder Con Cita
  #4  
Antiguo 17-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
Poder: 21
Paulao Va por buen camino
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?
Responder Con Cita
  #5  
Antiguo 17-08-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
coloca el codigo......


esta pregunta no la hiciste anteriormente???
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 17-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
Poder: 21
Paulao Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 14-11-2011
Carlos Sánchez Carlos Sánchez is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 11
Poder: 0
Carlos Sánchez Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tiempo excedido Paulao Varios 2 15-08-2011 22:20:20
ProgressBar+tiempo en hacer POST HTTP BlackDaemon Internet 18 04-05-2007 01:24:14
controles en tiempo de ejecución verlos como si estubieran en tiempo de diseño gulder Varios 7 21-04-2007 22:57:30
IBDatase Insert Post Edit Post ariefez Firebird e Interbase 4 12-10-2005 01:53:04


La franja horaria es GMT +2. Ahora son las 09:09:26.


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