Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Error en ejecución (https://www.clubdelphi.com/foros/showthread.php?t=86660)

Angel.Matilla 12-09-2014 17:56:57

Error en ejecución
 
Estoy ejecuntadno este query contra unas tablas Paradox en una aplicación BCB 6:
Código SQL [-]
SELECT A.Disco, A.Orden, A.Anyo, A.Duracion, A.Director, A.Interpretes, A.Estilo, A.Origen, A.Estado, A.Subtitulos, A.Esp, A.Ing, A.Otros, B.Caratula
FROM 'Peliculas.db' A LEFT JOIN 'Imagenes.db' B ON A.Registro = B.Registro AND B.Tabla = 'P'
WHERE A.Registro = 903

Si lo ejecuto desde Database Desktop no me da error y me devuelve resultado, pero desde la aplicación en la que está insertado me devuelve una vionalción de acceso y la típica pantalla de la CPU (que nunca he sido capaz de entender). En la aplicación está así:
Código:

Query->Close();
Query->SQL->Text = "SELECT A.Disco, A.Orden, A.Anyo, A.Duracion, A.Director, A.Interpretes, A.Estilo, A.Origen, A.Estado, A.Subtitulos, A.Esp, A.Ing, A.Otros, B.Caratula FROM  'Peliculas.db' A LEFT JOIN 'Imagenes.db' B ON A.Registro = B.Registro AND B.Tabla = 'P' WHERE A.Registro = :Registro";
Query->ParamByName("Registro")->AsInteger = PageControl1->Tag;
Query->Open();

La tabla B (Imagenes) de momento está vacía, pero lo está en ambos casos y si ejecuto el query desde la aplicación SIN pedir esa tabla B me funciona correctamente. Lo siento, pero me he perdido del todo.

ecfisa 13-09-2014 00:02:38

Hola Angel.Matilla.

Si los componentes TQuery y TPageControl fueron colocados en tiempo de diseño en el formulario que se usan y no has liberado alguno previamente, no diría que esas cuatro líneas fueran las generadoras de un error de tipo EAccessViolation. Revisaría los estados de los componentes TQuery y TPageControl en ese punto.

¿ Donde está ubicado el componente "Query" ? Si está en un TDataModule, fijate si está creado.

También ayudaría saber en que línea se produce la excepción, para eso podes usar BreackPoint y hacer Trace Into (F7).

Saludos :)

Angel.Matilla 13-09-2014 10:07:09

Gracias por contestar. Vamos por partes:
  1. Efectivamente, TQuery y TPageControl están colocados en tiempo de diseño.
  2. No hay ningún TDataModule en la aplicación. Creo que no me hace falta, pero no pasaría nada con probarlo.
  3. La excepción tiene lugar al intentar ejecutar el Open del TQuery.
  4. Ese mismo query lo uso unas líneas antes para cargar un TListView, y en ese caso no produce ningún error.

ecfisa 13-09-2014 16:31:40

Hola.

No no es necesario que incluyas el DataModule, fue solo una consulta para tratar de circunscribir el error. Y ahora, que comentas que no dá el error cargando el ListView, me deja mas confundido...

No uso BDE para mis aplicaciones, pero creo haber leído que había que realizar algunos cambios desde el administrador de BDE, revisa si te sirve lo publicado en este enlace :Problema de memoria con Delphi y BDE

Saludos :)

Angel.Matilla 18-09-2014 11:07:00

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 12:46:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi