Habrá que ver como se implementa el locate... ya que 1000 son pocos, pero 1000 llamadas a un locate que recorre 1000 registros, ya son 1000000 de registros recorridos...
Si el locate funciona en local... será mejor cambiar ese locate por una búsqueda en la base de datos mediante SQL. De hecho, podes cambiar todo a tres simples SQL's que hacen select, update e insert, ya que segun veo, no tiene sentido mantener todo en un DataSet durante el proceso.
El hacer commit a cada registro también me parece mala idea... yo haria un solo commit por todos los registros y si algo falla, que corran el proceso completo otra vez (claro, si esto es posible, es mucho mejor), pero dependerá de las especificaciones y necesidades de tu proyecto
Hasta luego.
