Fórum Interromper processos #177089
23/08/2003
0
Gostaria de saber como faço para interromper um processo em andamento.
Quando estou executando algum processo em uma tabela da forma
table1.first;
while not(table1.eof) do
begin
.... processo....
table1.next;
end;
table1.close;
o único modo que consigo interromper é com o ctrl+alt+del.
Algum dos colegas pode me dar uma luz?
Obrigado.
Quando estou executando algum processo em uma tabela da forma
table1.first;
while not(table1.eof) do
begin
.... processo....
table1.next;
end;
table1.close;
o único modo que consigo interromper é com o ctrl+alt+del.
Algum dos colegas pode me dar uma luz?
Obrigado.
Catunda
Curtir tópico
+ 0
Responder
Posts
24/08/2003
Aroldo Zanela
Colega,
Existem várias formas, vou sugerir uma que lhe dará condições de entender o funcionamento:
Coloque um CheckBox com caption ´Cancelar´.
No entanto, é conveniente lembrar que o cancelamento de um processo pode implicar numa série de inconsistências, pricipalmente se estiver manipulando um banco de dados fora de uma transação ou que não suporte.
Existem várias formas, vou sugerir uma que lhe dará condições de entender o funcionamento:
Coloque um CheckBox com caption ´Cancelar´.
table1.first; while not(table1.eof) do begin Application.ProcessMessages; // Isto é extremamente necessário if CheckBox1.Checked then exit; .... processo.... table1.next; end; table1.close;
No entanto, é conveniente lembrar que o cancelamento de um processo pode implicar numa série de inconsistências, pricipalmente se estiver manipulando um banco de dados fora de uma transação ou que não suporte.
Responder
Gostei + 0
24/08/2003
Afarias
Uma forma é:
1 - Crie uma variável global (ou um Field no Form) da forma:
CancelarProcesso: Boolean;
2 - coloque um botão ´Cancelar´ com um código:
CancelarProcesso := True;
3 - escreva seu código na forma:
T+
1 - Crie uma variável global (ou um Field no Form) da forma:
CancelarProcesso: Boolean;
2 - coloque um botão ´Cancelar´ com um código:
CancelarProcesso := True;
3 - escreva seu código na forma:
procedure MeuProcesso; begin CancelarProcesso := False; table1.first; while not(table1.eof) do begin .... processo.... table1.next Application.ProcessMessages; if CancelarProcesso then Break; // ou Exit -- más tem o Close depois do loop... end; table1.close end;
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)