Delphi:ResolveToDataset问题

时间:2011-06-02 19:17:53

标签: delphi tclientdataset

我正在使用TClientDataset以及提供商的以下选项:

ResolveToDataSet = True
Options = [poPropogateChanges, poUseQuoteChar]
UpdateMode = upWhereKeyOnly
AfterUpdateRecord = DataSetProvider1AfterUpdateRecord

提供程序连接到TIBCQuery,后者管理NO_INVOICE密钥的生成器。

在AfterUpdateRecord上完成以下代码(在组中的许多位置找到,以便在发布到数据库时真正传播密钥更改)

DeltaDS.FieldByName(ClientDataSet1NO_INVOICE.FieldName).NewValue 
  := SourceDS.FieldByName(ClientDataSet1NO_INVOICE.FieldName).NewValue

然后使用以下代码添加记录:

  ClientDataSet1.Params[0].AsInteger := -1;
  ClientDataSet1.Open;
  ClientDataSet1.Edit;
  ClientDataSet1NO_INVOICE.AsInteger := -1;
  ClientDataSet1NO_STORE.AsInteger := 1;
  ClientDataSet1.Post;
  ClientDataSet1.ApplyUpdates(-1);

如果我在ClientDataSet1.Refresh之后调用ApplyUpdate,则使用原始参数-1重新打开基础TIBCQuery,而不是使用新密钥...即使ClientDataSet1NO_INVOICE.AsInteger显示合并记录后分配的新值... 这里使用Refresh只是为了简化这个例子......当我们插入记录,应用更新并再次编辑记录时会出现问题。

我是否因使用ResolveToDataset选项而遗漏了某些内容,还是应该使用新参数明确重新打开查询?

在将ResolveToDataset = False用于其他项目之前,我从未遇到过这个问题...

0 个答案:

没有答案