![]() |
Query se bloquea
Tengo este query:
Si lo ejecuto en IBManager tarda en ejecutarse 0,5 segundos (literal); si lo ejecuto desde la aplicación en la que tiene que funcionar se queda colgado y tengo que matar el programa. ¿Alguna idea de que puede estar pasando? |
Asegúrate de que es la misma base de datos y también de que el problema es el query y no una línea posterior de código, algún bucle que hagas después, etc.
|
Gracias. Es la misma base de datos seguro y cuando lo ejecuto desde la aplicación del Query->Open() no pasa.
|
Pon un "break point" en el qr.open y cuando se pare ahí, copia el cotenido del sql que va a ejecutar. Luego lo pegas y lanzas desde el ibexpert/ibmanager.
|
Cita:
|
Pero tú sabes que eso es imposible, si es exactamente el mismo select con la misma base de datos, no puede ocurrir eso, salvo que devuelva tantos millones de registros que no quepan en memoria.
|
Ya lo sé y por eso me tiene muy mosqueado. Debe devolver un único registro.
|
Yo lidié con un fallo así de misterioso y al final era debido a una StringList en la que le pasaba los parámetros a la query, no la query en si. Pero no fue sencillo encontrarlo porque no era un error evidente.
Puse un break point justo antes del problema y activé al llegar a ese punto: tools|debugger options|language exceptions|stop on delphi exceptions (después hay que sacarlo sino saltan avisos por todos lados) A continuación recorrí unha por una todas las llamadas de cada línea hasta localizar el elemento exacto que daba el error. Pero aparentemente (en una ejecución normal) el error parecía de la query cuando no lo era. |
Si el problema es del qr.open, se puede confirmar haciendo un test minimo: Haz una app de consola que solo tenga el conexión, el query y ejecutar el open. Si te pasa ahi, entonces si es lo que dices.
Si no? Entonces existe otro factor en tu app que lo causa. |
El objeto Query tiene algún evento asociado como BeforeOpen, AfterOpen, etc...
De igual manera podrías revisar y de tener estos eventos desactivar y verifica su funcionamiento. Ojala puedas dar solución al problema y comentar lo que encuentres... Saludos cordiales |
Y otra prueba más: aunque parezca una tontería, a veces sirve, elimina el componente y vuelve a poner otro.
|
Probaré y ya os diré que pasa. Gracias.
|
La franja horaria es GMT +2. Ahora son las 02:03:12. |
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