Tenía un programa Delphi 4 que desarrollé hace muchos años que usaba Opus DirectAccess para buscar secuencialmente a través de una base de datos de Microsoft Access y recuperar los registros deseados. Delphi 4 no tenía ADO, por eso estaba usando DirectAccess.¿Por qué desacelera el procesamiento de registro ADO Next en Delphi?
Pero ahora me he actualizado a Delphi 2009 y he convertido el programa para usar ADO. Lo que encontré fue que el ciclo de la tabla (de unos 100.000 registros) comienza tan rápido como lo hizo en DirectAccess, pero luego comienza a ralentizarse y se vuelve cada vez más lento a medida que pasa por la tabla. El bucle básico es:
ArticlesTable.First;
while not Cancel and not ArticlesTable.Eof do begin
(See if the current record has criteria desired)
(If so, process the record)
ArticlesTable.Next;
end;
Básicamente, simplemente procesa los registros secuencialmente utilizando el método .Next.
Entonces, ¿por qué se está desacelerando, y cómo puedo recodificar esto para que no se ralentice?
Añadiendo "ArticlesTable.DisableControls;" antes de "ArticlesTable.First"; arregló el problema ¡Perfecto! Muchas gracias! – lkessler