将可写虚拟字段添加到可更新的TClientDataset

Jak*_*ako 2 delphi tclientdataset delphi-7

我有一个数据库表,我需要在其中插入记录.我正在使用可更新的TClientDataset,一切正常.

现在,我需要添加一个虚拟字段; 不是计算的.我可以编写行状态的一个字段(我将在ApplyUpdates之前使用的一些信息),但这不是数据库表的一部分.

我已经看到了这个有启发性的帖子,但计算了添加的字段,无法更新并保留信息.对我来说不行.

我试图从数据库中添加一个"虚拟字段"并修复ProviderFlags以删除pfUpdate.

cds.CommandText := 'SELECT 1 AS DUMMY , CUSTOMERS.* FROM CUSTOMERS';
cds.Open;
cds.FieldByName('DUMMY').ProviderFlags := [];
Run Code Online (Sandbox Code Playgroud)

我在Provider.pas中看到,在构建插入sql之前,会检查ProviderFlags.这应该确实有效,问题是似乎ProviderFlags没有从我上面的语句更新.

请问,你知道如何动态添加一个Field,这是可写的但是后来被delphi数据库更新过程忽略了吗?

我正在使用delphi 7.

谢谢你的帮助.

Uwe*_*abe 6

将该字段设置为InternalCalc字段并将其ProviderFlags设置为[].这使得该字段可写入您的应用程序,但在更新底层数据库时会跳过该字段.