PDA

Ver la Versión Completa : dataset.free Error


Enan0
01-06-2005, 15:40:07
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.




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:


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



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

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
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.

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