0

ClientDatset から TAdoDataset (アクセス テーブルにバインドされている) への削除操作を解決しているときに、このエラーが発生します。Delphi 2010 を使用しています。

TClientDataset と TAdoDataset の間の私の DatasetProvider :

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

TDataSetResolver.EndUpdate() によって呼び出されるこの関数でエラーが発生します。

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

4 に答える 4

0

推測できない原因については、削除後、InternalGotoBookmarkのブックマークパラメータが削除されたレコードの位置に移動すると思います...

したがって、Linasソリューションは物事を機能させるでしょう...

しかし、私は他の人に同意します、例外を飲み込むことは悪いです....

于 2010-01-18T15:25:13.850 に答える
0

プロバイダーをバイパスして、削除操作を手動で適用する必要がありました。デバッグモードでエラーが発生しますが、それで問題ありません。

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;
于 2009-12-14T00:30:44.567 に答える
0

TAdoDataset でも同じ問題が発生しました。何が問題なのかわからないので、メソッドを try except ブロックでオーバーライドしました。

これを試して:

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;
于 2009-12-07T16:59:31.863 に答える
0

設定してみる

ResolveToDataSet = False
于 2010-05-02T23:44:19.133 に答える