Erro de tempo excedido
Fiz uma rotina para rodar um script de banco. Esse script é demorado mesmo, mas o que passa é que ele sempre dá tempo execdido? Tem como alterar isso? Como eu faço para aumentar esse tempo durante a execução? Uso Delphi 6, ADO e Sql Server 2005. Abaixo o meu código:
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;
Pjava
Curtidas 0
Respostas
Pjava
15/08/2011
Resolvi. É que faltava eu comparar os registros da query do loop com a query que seria atualizada. Criei uns parametros e carreguei com a query do loop e agora funcionou.
GOSTEI 0