Atualização na tabela esta travando o sistema
Eu estou atualizando uma tabela que tem mais de 4.000 registro, só que no decorrer da atualização o sistema trava. O que eu posso fazer para que isso não ocorra.
Obs. Utilizo banco de dados paradox, dbgrid como visualizador de dados, computador pentium 133 com 32mb de memoria ram.
Segue abaixo o codigo utilizado:-
dm.Clientes.DisableControls;
try
dm.Clientes.First;
while not dm.Clientes.Eof do
begin
dm.Clientes.Edit;
dm.Clientes.asstring := ´SIM´;
dm.Clientes.Post;
dm.Clientes.Next;
end;
dm.Clientes.First;
finally
dm.Clientes.EnableControls;
end;
Obs. Utilizo banco de dados paradox, dbgrid como visualizador de dados, computador pentium 133 com 32mb de memoria ram.
Segue abaixo o codigo utilizado:-
dm.Clientes.DisableControls;
try
dm.Clientes.First;
while not dm.Clientes.Eof do
begin
dm.Clientes.Edit;
dm.Clientes.asstring := ´SIM´;
dm.Clientes.Post;
dm.Clientes.Next;
end;
dm.Clientes.First;
finally
dm.Clientes.EnableControls;
end;
Jcmsistemas
Curtidas 0
Respostas
Jcmsistemas
13/01/2005
Ainda não encontrei solução para o meu probema, será que alguem pode me ajudar.
Eu estou atualizando uma tabela que tem mais de 4.000 registro, só que no decorrer da atualização o sistema trava. O que eu posso fazer para que isso não ocorra.
Obs. Utilizo banco de dados paradox, dbgrid como visualizador de dados, computador pentium 133 com 32mb de memoria ram.
Segue abaixo o codigo utilizado:-
dm.Clientes.DisableControls;
try
dm.Clientes.First;
while not dm.Clientes.Eof do
begin
dm.Clientes.Edit;
[b:c96b3f3659] dm.ClientesTrava.asstring := ´SIM´;[/b:c96b3f3659] dm.Clientes.Post;
dm.Clientes.Next;
end;
dm.Clientes.First;
finally
dm.Clientes.EnableControls;
end;
GOSTEI 0
Massuda
13/01/2005
Experimente fazer assim:
// desabilite o menuitem/botão que iniciou este processamento dm.Clientes.DisableControls; try dm.Clientes.First; while not dm.Clientes.Eof do begin dm.Clientes.Edit; dm.Clientes.asstring := ´SIM´; dm.Clientes.Post; dm.Clientes.Next; Application.ProcessMessages; end; dm.Clientes.First; finally dm.Clientes.EnableControls; // reabilite o menuitem/botão que iniciou este processamento end;
GOSTEI 0
Aroldo Zanela
13/01/2005
Colega,
O sistema está em rede ou stand-alone?
O sistema está em rede ou stand-alone?
GOSTEI 0
Jcmsistemas
13/01/2005
[quote:b96a9df17c=´Aroldo Zanela´]Colega,
O sistema está em rede ou stand-alone?[/quote:b96a9df17c]
O sistemas foi desenvolvido para rede, mais esta sendo utilizado no sistema mono-usuário.
O sistema está em rede ou stand-alone?[/quote:b96a9df17c]
O sistemas foi desenvolvido para rede, mais esta sendo utilizado no sistema mono-usuário.
GOSTEI 0
Gandalf.nho
13/01/2005
Pelo que entendi você está atribuindo o valor ´SIM´ a um campo de todos os registros de sua tabela. Se sim, já experimentou usar um componente Query separado e usar um simples [b:6e2e6d80dc]UPDATE nome_tabela SET Trava = ´SIM´[/b:6e2e6d80dc]?
GOSTEI 0
Aroldo Zanela
13/01/2005
Colega,
O uso de query indicado pela colega, com certeza é a melhor solução. Entretanto, para tentar entender o motivo do ´travamento´ gostaria de ´bater na tecla´ e sugerir as seguintes modificações:
O uso de query indicado pela colega, com certeza é a melhor solução. Entretanto, para tentar entender o motivo do ´travamento´ gostaria de ´bater na tecla´ e sugerir as seguintes modificações:
var TempDir: String; begin TempDir := ´C:\AC_TEMP´; // Muito importante em rede ForceDirectories(TempDir); // Crie um diretório temporário Session.PrivateDir:= TempDir // _QSQL???? dm.Clientes.Exclusive:= True; // Assegurar performance e que // Todos os registros sejam // atualizados dm.Clientes.DisableControls; try dm.Clientes.First; while not dm.Clientes.Eof do begin dm.Clientes.Edit; dm.ClientesTrava.Value := ´SIM´; dm.Clientes.Post; dm.Clientes.Next; Application.ProcessMessages; end; dm.Clientes.First; finally dm.Clientes.EnableControls; end; end;
GOSTEI 0
Jcmsistemas
13/01/2005
Pelo que entendi você está atribuindo o valor ´SIM´ a um campo de todos os registros de sua tabela. Se sim, já experimentou usar um componente Query separado e usar um simples [b:8aee280ca4]UPDATE nome_tabela SET Trava = ´SIM´[/b:8aee280ca4]?
Usando um componente Query, qual o comando que eu usaria para deixar um campo de uma tabela boolean em ´True´ ou ´False´,
Eu tentei [b:8aee280ca4]Update Produtos Set imprimir = ´True´[/b:8aee280ca4]
GOSTEI 0
Aroldo Zanela
13/01/2005
Colega,
Basta remover as aspas.
Basta remover as aspas.
Update Produtos Set imprimir = True
GOSTEI 0
Jcmsistemas
13/01/2005
Agradeço a atenção de todos os que me ajudaram aqui no forum. Com isso eu pode sanar um problema que eu estava tendo no meu sistema.
GOSTEI 0