我有一个数据库表,我需要在其中插入记录。 我正在使用可更新的TClientDataset,一切正常。
现在,我需要添加一个虚拟字段;不是计算的。 我可以编写行状态的一个字段(我将在ApplyUpdates之前使用的一些信息),但这不是数据库表的一部分。
我见过this illuminating post,但是计算了添加的字段,无法更新并保留信息。 对我来说不行。
我尝试从数据库中添加'虚拟字段'并修复ProviderFlags以删除pfUpdate。
cds.CommandText := 'SELECT 1 AS DUMMY , CUSTOMERS.* FROM CUSTOMERS';
cds.Open;
cds.FieldByName('DUMMY').ProviderFlags := [];
我在Provider.pas中看到,在构建插入sql之前,会检查ProviderFlags。这应该确实有效,问题是似乎ProviderFlags没有从我上面的声明中更新。
请问,你知道如何动态添加一个Field,它是可写的,但后来被delphi数据库更新过程忽略了吗?
我正在使用delphi 7。
谢谢你的帮助。
答案 0 :(得分:6)
将该字段设为 InternalCalc 字段,并将其 ProviderFlags 设置为 [] 。这使得该字段可写入您的应用程序,但在更新底层数据库时会跳过该字段。