Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Cannot perform this operation on a closed dataset

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Cannot perform this operation on a closed dataset Responder citando

Hola,

estoy trabajando con unas tablas Paradox con Builder 1 (por favor, sin comentarios) y al ejecutar estas inocentes líneas



Código:


    //tarifas.............
    bActive = MainForm->TarifasTable->Active;

    if (!MainForm->TarifasTable->Active)
   MainForm->TarifasTable->Active = true;
 
    slTarifas->Clear();
    MainForm->TarifasTable->First();

    for (int i=0; !MainForm->TarifasTable->Eof; i++){
        slTarifas->Add(MainForm->TarifasTable->FieldValues["Detalle"]);
        MainForm->TarifasTable->Next();
    }
   
   MainForm->TarifasTable->Active = bActive;
    //tarifas.............



obtengo el error

Cita:

Cannot perform this operation on a closed dataset



Ya he buscado por todas partes he intentando de todo sin éxito.

¿alguna idea?
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

La base de datos está activa y abierta la conexión no ?
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Puede funcionar asi, tambien, y te evitas el for...
Código:

//tarifas.............
    bActive = MainForm->TarifasTable->Active;

    if (!MainForm->TarifasTable->Active)
        MainForm->TarifasTable->Active = true;

    slTarifas->Clear();
    MainForm->TarifasTable->First();

    while(!!MainForm->TarifasTable->Eof){  //quitando el for
        slTarifas->Add(MainForm->TarifasTable->FieldValues["Detalle"]);
        MainForm->TarifasTable->Next();
    }

   MainForm->TarifasTable->Active = bActive;
    //tarifas.............


y verifica tambien que tu tabla este abierta, es decir que tenga una tabla y un DataSource
Volver arriba
Mensaje    Asunto: Responder citando

Saludos Ikis, me parece recordar con Builder 1 en varias ocasiones no realizaba o evaluaba bien la sentencia if si no la escribia de un modo mas explicito, me explico:

Código:
//Fallaba

Table->Open();
if(Table->Active)
 ShowMessage("La Tabla esta Activa");

//No Fallaba

Table->Open();
if(Table->Active==true)
 ShowMessage("La Tabla esta Activa");




Ignoro por que, tal vez un bug. Haz la prueba sugerida a ver si es eso
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola,

les comento la solución.

Pese a que la tabla no tenía ninguna relación con otra, no me fije en sus eventos, y en el OnCalcFields, hacía referencia a otra tabla, con lo que con activarla previamente todo anduvo muy bien, con el mismo código de arriba.

Feliz año
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.