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 haciendo una segunda consulta (https://www.clubdelphi.com/foros/showthread.php?t=82140)

aggg63 31-01-2013 14:10:46

Error haciendo una segunda consulta
 
Hola.

Tengo una base de datos generada con SQLite. Trabajo con los componentes ZEOS 6 y Delphi 2006. No soy muy experto en el tema de base de datos.
Realizo una consulta para extraer un codigo y a continuacion realizo otra consulta para obtener mas datos. La primera funciona sin problemas, pero la segunda, cuando intento visualizar el numero de registros, me sale un error diciendo que 'Cannot perform this operation in a closed dataset'. He probado con ZConsultaBD.Close; activado y desactivado, el problema es el mismo. ¿Como se pueden realizar varias consultas en una misma base de datos? Gracias.


Código Delphi [-]
      
        if ZConexionBD.Connected then ZConexionBD.Disconnect;
        ZConexionBD.Database:=directorioBaseDatos+'Historico.sql';
        ZConexionBD.Protocol:='sqlite-3';
        ZConexionBD.Connected:=TRUE;
        ZConsultaBD.Connection:=ZConexionBD;
        comSQL:='SELECT CodigoTemporada'
               +' FROM Temporadas'
               +' WHERE Temporada="'+inttostr(t)+'-'+inttostr(t+1)+'"';
        ZConsultaBD.SQL.Text:=comSQL;
        ZConsultaBD.ExecSQL;
        ZConsultaBD.Open;
        ct:=ZConsultaBD0.FieldByName('CodigoTemporada').AsInteger;
        //ZConsultaBD.Close;
        //ZConsultaBD.SQL.Clear;
        comSQL:='SELECT CodigoArticulo'
               +' FROM ArticuloTemporada'
               +' WHERE CodigoTemporada='+inttostr(ct);
        ZConsultaBD.SQL.Text:=comSQL;
        ZConsultaBD.ExecSQL;
        ZConsultaBD.RecordCount; <-- ERROR

Casimiro Notevi 31-01-2013 15:55:37

Más o menos...

Código Delphi [-]
  if ZConexionBD.Connected then ZConexionBD.Disconnect;
        ZConexionBD.Database:=directorioBaseDatos+'Historico.sql';
        ZConexionBD.Protocol:='sqlite-3';
        // cambiar de orden estas líneas
        ZConsultaBD.Connection:=ZConexionBD;
        ZConexionBD.Connected:=TRUE;
        //
        comSQL:='SELECT CodigoTemporada'
               +' FROM Temporadas'
               +' WHERE Temporada="'+inttostr(t)+'-'+inttostr(t+1)+'"';
        ZConsultaBD.SQL.Text:=comSQL;
        // ZConsultaBD.ExecSQL;  esta línea sobra
        ZConsultaBD.Open;
        ct:=ZConsultaBD0.FieldByName('CodigoTemporada').AsInteger;
        ZConsultaBD.Close;
        // ZConsultaBD.SQL.Clear;  no hace falta esta línea
        comSQL:='SELECT CodigoArticulo'
               +' FROM ArticuloTemporada'
               +' WHERE CodigoTemporada='+inttostr(ct);
        ZConsultaBD.SQL.Text:=comSQL;
        // ZConsultaBD.ExecSQL;  tampoco vale
        // es igual que la de arriba, con open :
        ZConsultaBD.Open;  // esta es la que debe ser        
        ZConsultaBD.RecordCount; <-- ERROR

Al González 31-01-2013 16:16:28

Hola. Sobre los cambios que te sugiere Casimiro, mira esta información: http://www.clubdelphi.com/foros/show...48&postcount=6

Saludos. :)

aggg63 31-01-2013 17:23:23

Gracias por los comentarios y sugerencias. Ha funcionado sin problemas.


La franja horaria es GMT +2. Ahora son las 15:08: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