![]() |
Verificar si hay cambios en Datasets
En muchas ocasiones uso tablas de memoria (sobre todo las KbmMemTable) en conjunto con SQLDirect para trabajar con datos en memoria y en algún momento grabar los cambios generados en la base de datos, esa parte es facil, ambos son TDataSet, pero ¿que ocurre si la tabla tiene miles de registros y realmente no hubo ningún cambio en los datos? Con un "changed" no es suficiente porque eso cambia cuando uno entra a editar un registro, aunque realmente no cambie nada.
Para eso hice un método, que por más que recorre todos los Fields de la tabla y podría parecer lento, siempre es más rápido que ejecutar updates en la base, sobre todo si la base de datos es remota. En el uses hay que agregar variants y DB.
Para usarlo lo que hago es recorrer los registros de la tabla orígen y buscar si existe el registro en el destino, si existe chequea si hay cambios, si hay alguno edita el destino. Si no existe agrega el registro.
En realidad, el código anterior no lo tengo igual, ya que el último parámetro realmente lo tengo en True, para que modifique la query si hay cambios, por lo que lo llamo así:
Espero que les sirva, cualquier duda me pueden consultar... |
^\||/^\||/^\||/
|
Gracias por el aporte.
^\||/^\||/^\||/ |
La franja horaria es GMT +2. Ahora son las 17:29:24. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi