2009-12-07 14 views
0

Je reçois cette erreur lors de la résolution d'opération de suppression de ClientDatset à TAdoDataset (qui lié à la table d'accès). J'utilise Delphi 2010."soit bof ou eof est vrai ou l'enregistrement en cours a été supprimé .." erreur sur applyupdates qui contient une opération de suppression

Mon DataSetProvider entre TClientDataset et TADODataSet:

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

Une erreur se produit dans cette fonction qui est appelée par TDataSetResolver.EndUpdate();

procedure TCustomADODataSet.InternalGotoBookmark(Bookmark: Pointer); 
begin 
    Recordset.Bookmark := POleVariant(Bookmark)^; 
end; 

Répondre

0

je devais contourner le fournisseur et appliquer l'opération de suppression manuellement. il conserve les erreurs en mode Debug, mais je peux vivre avec ça.

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; 
+0

Note de côté: dm.qryTarifeler est passé sur le paramètre SourceDS. –

0

J'ai rencontré le même problème avec TAdoDataset. N'a pas trouvé ce qui ne va pas avec, donc j'ai juste substitué la méthode dans try except block.

Essayez ceci:

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; 
+0

Merci pour la réponse. Cela ne termine pas le travail. L'erreur de masquage ne fonctionne pas. Connais-tu un moyen de le cacher? – Serguzest

+0

Je ne considère pas de changer la source de vcl, bien que je doute que cela fonctionne parce que, le cacher sans correction cause d'autres erreurs. Merci quand même .. – Serguzest

0

Pour une cause inexplicable que je ne peux pas deviner, je crois que, après la suppression du paramètre de signet de InternalGotoBookmark va la position d'enregistrement supprimé ...

Ainsi, la solution Linas ferait la chose travail ...

Mais je suis d'accord avec les autres, en avalant l'exception est mauvais ....

0

Essayez de mettre

ResolveToDataSet = False