Ver Mensaje Individual
  #6  
Antiguo 28-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.271
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
El problema aquí, no es de bucles ni de máquina, sino que la instrucción que ejecuta tarda 5 minutos (el Exec del Stored Procedure). La ejecución del Stored es síncrona, por lo tanto el programa no continuará hasta que el stored no acabe.

Se me ocurren 2 formas de solventarlo.
La primera es que hagas unas pruebas a conectarte con ADO; El componente TADOStredProc posee una propiedad llamada ExecuteOptions con los valores:

-----------------------------------------------------------
type
TExecuteOption = (eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlocking, eoExecuteNoRecords);
Execute Option Meaning

eoAsyncExecute
The command is executed asynchronously.
eoAsyncFetch
The command fetches remaining rows after the initial quantity specified in the Cache property asynchronously.
eoAsyncFetchNonBlocking
Execution is performed without blocking the thread.
eoExecuteNoRecords
A command or stored procedure that does not return. If any rows are retrieved, they are discarded and not returned.

-----------------------------------------------------------


Aunque no lo he probado, me da la impresión de que te pueden servir; Tendrás que tener en cuenta eso sí, las cosas que haces (o que no puedes hacer) mientras no acabe el Stored y cómo detectar la finalización.

En segundo lugar, la otra opción es utilizar un Thread diferente para lanzar el StoredProcedure, pero me da la impresión que esto es un poco más complejo (sobre todo si no tienes experiencia con threads).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita