Ver Mensaje Individual
  #6  
Antiguo 30-06-2007
maro maro is offline
Miembro
 
Registrado: sep 2003
Ubicación: Sevilla
Posts: 104
Reputación: 21
maro Va por buen camino
Hola,

Si estás tarbajando en 3 capas con Capas sql y capas clientes usando TClientdataset para la consulta de datos es normal que te suceda esto.

Si tu consulta retorna un número considerable de registros, es lógico que durante un cierto tiempo, la capa cliente se quede esperando una respuesta de la capa SQL.

Para estos casos te recomiendo implementar un procedimiento auxiliar que "obtenga" los datos por bloques de registros y los valla adjuntando a un tClientDataset final.

El resultado final es más lento, pero el usuario no tiene la sensación de que su aplicación se ha colgado, además de que puedes poner un gauge indicando el progreso de la operación. Una vez finalizado el proceso podrás manipular como siempre el tClientdataset final.

Ten en cuenta que cuando ejecutas una consulta de datos con un tClientDataset, éste no conoce el número de registro que se le retornará de la capa SQL y no te puede dar información sobre esto.

Igualmente, cuando un tClientadataset recibe un conjunto de registro, no los va recibimiento de uno en uno, ni de "x" en "x" registros, sino, que recibe un "paquete" que contiene la respuesta de la capa SQL, incluyendo estructura de la tabla, restricciones, formato de campos, etc... y por último los registros solicitados.

Un Saludo.
__________________
Maro. OutSourcing de programación con Delphi.
Responder Con Cita