2

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

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

我看过这篇很有启发性的帖子,但是添加的字段是计算出来的,无法更新和保留信息。这对我来说不好。

我试图从数据库选择中添加一个“虚拟字段”并修复 ProviderFlags 以删除 pfUpdate。

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

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

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

我正在使用德尔福 7。

谢谢你的帮助。

4

1 回答 1

6

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

于 2012-04-25T10:13:11.653 回答