Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   dataset.free Error (https://www.clubdelphi.com/foros/showthread.php?t=21925)

Enan0 01-06-2005 15:40:07

dataset.free Error
 
Tengo el Siguiente error.. Cuando Quiero hacer el FREE del objeto Adataset (del tipo TADODataset)..

el error es..

El valor EOF o BOF es True, o el actual registro se elimino; la operacion solicitada requiere de un registro actual.



Código Delphi [-]
           Adataset:=TAdodataset.create(nil);
           SelectTodo(ADataSet,TIPO);
           If adataset.Eof and adataset.bof then
             exit
           else
             While not Adataset.Recordset.Eof  do
               BEGIN
                 Application.ProcessMessages;
                 aux.MsgID:=ADataSet.Recordset.Fields.Item['MsgID'].value;
 
  //Aca hago varios tonterias pero nada del otro mundo
 //recorro el record.
 
                   ADataSet.Recordset.MoveNext;
               end;
           if ADataSet.Eof and Adataset.bof then
             ADataSet.Recordset.EOF;
 
           Adataset.Free;
           EscribirAuditoria('Fin EliminarRecordGW RecAppoint');

hermes_32 01-06-2005 16:06:26

Hola Enan0,

te he quitado algunas cosas que veo que no son necesarias. Prueba con esto:

Código Delphi [-]
   Adataset := TAdodataset.create(Application);
   SelectTodo(ADataSet,TIPO);
   While not Adataset.Recordset.Eof  do BEGIN
     Application.ProcessMessages;
     aux.MsgID := ADataSet.Recordset.Fields.Item['MsgID'].value;
     ... 
     ADataSet.Recordset.MoveNext;
   end;
   try
     Adataset.Free;
   except
   end;
   EscribirAuditoria('Fin EliminarRecordGW RecAppoint');

Enan0 01-06-2005 16:30:50

Hola Hermes_32

Código Delphi [-]
 
 if ADataSet.Eof and Adataset.bof then
           ADataSet.Recordset.EOF;
:D
eso no estaba.. fue un error en el copy and paste..
pero el error lo sigue generando con lo que me pasaste!!
Y la primer comparacion
Código Delphi [-]
If adataset.Eof and adataset.bof then
es simplemente para verificar que el Recordset no este vacio :D

delphi.com.ar 01-06-2005 17:00:50

Cita:

Empezado por Enan0
Código Delphi [-]
If adataset.Eof and adataset.bof then
es simplemente para verificar que el Recordset no este vacio :D

Para eso puedes utilizar ADataSet.IsEmpty

Saludos!

hermes_32 01-06-2005 17:13:44

¿Qué hace esta función? Mira a ver si tiene el dataset bloqueado y por eso te da el error al intentar liberar memoria.
Código Delphi [-]
  SelectTodo(ADataSet,TIPO);

Intenta con FreeAndNil(ADataSet).

Enan0 01-06-2005 17:25:33

Gracias.. FEDE.. con el DAto del isempty

Hermest_32, lo unico que hace esa funcion es hacer un select * ....
y nada le asigna el recodrset ahi.. listo.. la funcion se finaliza ok.. no queda nada blockeado...
voy a intentar con el ultimo dato a ver que onda.!!!!
:D


La franja horaria es GMT +2. Ahora son las 22:11:19.

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