“BOF o EOF es verdadero o el registro actual ha sido eliminado ..” error en ApplyUpdates que contiene una operación de eliminación

StackOverflow https://stackoverflow.com/questions/1859609

Pregunta

Estoy consiguiendo este error al resolver operación de eliminación de ClientDatset a TAdoDataset (que une acceder a la tabla). Estoy utilizando Delphi 2010.

Mi DataSetProvider entre TClientDataset y TAdoDataset:

object dspTarifeler: TDataSetProvider
  DataSet = DM.qryTarifeler    
  ResolveToDataSet = True
  Options = [poPropogateChanges, poUseQuoteChar]
end

Error se produce en esta función que es llamada por TDataSetResolver.EndUpdate ();

procedure TCustomADODataSet.InternalGotoBookmark(Bookmark: Pointer);
begin
  Recordset.Bookmark := POleVariant(Bookmark)^;
end;
¿Fue útil?

Solución 2

he tenido que pasar por alto el proveedor y aplicar operación de eliminación manual. se mantiene en modo de depuración de errores, pero puedo vivir con eso.

procedure Tfrm.dspTarifelerBeforeUpdateRecord(Sender: TObject;
  SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind;
  var Applied: Boolean);
begin
  if updatekind = ukDelete then
  begin
   if dm.qryTarifeler.Locate('Prefix',DeltaDs['Prefix'],[]) then
      dm.qryTarifeler.Delete;
   applied := true;
  end;
end;

Otros consejos

He tenido el mismo problema con TAdoDataset. No puede encontrar lo que está mal con él, por lo que sólo overrided el método de prueba, excepto bloque.

Prueba esto:

TADODataset = class(ADODB.TADODataSet)
  public
    procedure InternalGotoBookmark(Bookmark: Pointer); override;
  end;

{ TADODataset }

procedure TADODataset.InternalGotoBookmark(Bookmark: Pointer);
begin
  try
    inherited InternalGotoBookmark(Bookmark);
  except

  end;
end;

Por alguna causa inexplicable que no puedo adivinar, yo creo que después de que el eliminar el parámetro marcador de InternalGotoBookmark va a la posición de registro eliminado ...

Por lo tanto, la solución de Linas haría que el trabajo de la cosa ...

Pero estoy de acuerdo con otros, tragando la excepción es malo ....

Trate de establecer

ResolveToDataSet = False
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top