GARANTIR DESCONTO

Fórum Atualização na tabela esta travando o sistema #265271

13/01/2005

0

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;


Jcmsistemas

Jcmsistemas

Responder

Posts

14/01/2005

Jcmsistemas

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;



Responder

Gostei + 0

14/01/2005

Massuda

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;



Responder

Gostei + 0

14/01/2005

Aroldo Zanela

Colega,

O sistema está em rede ou stand-alone?


Responder

Gostei + 0

14/01/2005

Jcmsistemas

[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.


Responder

Gostei + 0

14/01/2005

Gandalf.nho

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]?


Responder

Gostei + 0

14/01/2005

Aroldo Zanela

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:

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;



Responder

Gostei + 0

15/01/2005

Jcmsistemas

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]


Responder

Gostei + 0

15/01/2005

Aroldo Zanela

Colega,

Basta remover as aspas.

Update Produtos Set imprimir = True



Responder

Gostei + 0

15/01/2005

Jcmsistemas

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar