Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Mensaje de Error al Cerrar Aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=31463)

pikachuy 09-05-2006 06:34:44

Mensaje de Error al Cerrar Aplicacion
 
Saludos a todos.
Es la primera vez que participo en este foro :D

Mi problema es el siguiente:

Ejecuto este codigo en un boton para mostrar el resultado en un DBGRID:

La relacion de los componentes es:
DBGrid1->DataSource1->Query1.

Código:

Query1.SQL.Clear;
Query1.SQL.Text:='Select (Cursos.Nombre) as Nombre, (Cursos.Turno) as Turno, (Cursos.Horario) as Horario From'
  +' Cursos, Grupos Where Grupos.Id_Alumno='+QuotedStr(PCCAClave.Text)
  +' and Grupos.Id_Curso=Cursos.Id_Curso and Cursos.Tipo="CURSO"';
Query1.ExecSQL;
Query1.Active:=True;

Se ejecuta bien la consulta y muestra sus resultados.

pero luego al cerrar la aplicacion aparece esto:
Mensaje de error:
Código:

Proyect SCC.exe raised exception class EAccessViolation
with message 'Access violation at address 000000000.
Read of address 000000000'. Process stopped. Use Step or Run to Continue.

y luego cambio la consulta(para probar que es lo que pasa):
Código:

Query1.SQL.Clear;
Query1.SQL.Text:='Select * From Cursos';
Query1.ExecSQL;
Query1.Active:=True;

Se ejecuta bien y se cierra bien la aplicacion.

esto lo he probado por separado en un programa sencillo y me di cuenta que el problema es la consulta:
Código:

Query1.SQL.Text:='Select (Cursos.Nombre) as Nombre, (Cursos.Turno) as Turno, (Cursos.Horario) as Horario From'
 +' Cursos, Grupos Where Grupos.Id_Alumno='+QuotedStr(PCCAClave.Text)
 +' and Grupos.Id_Curso=Cursos.Id_Curso and Cursos.Tipo="CURSO"';

Estas consultas no regresan ni 15 registros.
Esa consulta me sirve porque me muestra lo que quiero

Si me pueden ayudar a resolver este problema se los agradeceria mucho.
:o
PD: Perdon por no manejar bien las etiquetas.

epuigdef 09-05-2006 08:53:44

Buenas!

En lugar de hacer

Código Delphi [-]
Query1.execsql;
Query1.active:=true

prueba con

Código Delphi [-]
Query1.open;


Y, por cierto, si tienes este código en un botón, vas a dejar la consulta abierta, si el usuario pulsa 2 veces vas a tener errores, por lo que al inicio debes controlar si está cerrado:

Código Delphi [-]
if  query1.active then query1.close;


Espero que te sirva

Edu

pikachuy 09-05-2006 15:26:50

Gracias epuigdef funcionó de maravilla:eek:,
por cierto lo de que si el usuario pulsa dos veces
el boton eso lo controlo si la consulta regresa resultados
el boton se deshabilita;).
Nuevamente Gracias:)


La franja horaria es GMT +2. Ahora son las 20:10:38.

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