我在Delphi中使用查询获取数据,并希望在运行之前向查询添加计算字段.计算字段使用代码中的值以及查询,因此我不能仅在sql中计算它.
我知道我可以附加一个OnCalcFields事件来实际进行计算,但问题是在添加计算字段后查询中没有其他字段…
我做了一些挖掘,发现所有的场定义都是创建的,但实际的字段只是创建的
if DefaultFields then CreateFields
指定了默认字段
procedure TDataSet.DoInternalOpen; begin FDefaultFields := FieldCount = 0; ... end;
这是可能的还是我必须添加我正在使用的所有字段?
解决方法
Delphi现在可以选择组合自动生成的字段和计算字段:
Data.DB.TFieldOptions.AutoCreateMode类型为
TFieldsAutoCreationMode的枚举.这样,您可以在运行时添加计算字段.弗朗索瓦在他的回答中写道如何在运行时添加一个字段.
TFieldsAutoCreationMode的不同模式:
> acExclusive
如果根本没有持久字段,则会创建自动字段.这是默认模式.
> acCombineComputed
当数据集没有持久字段或只有计算的持久字段时,将创建自动字段.这是在设计时创建持久计算字段并让数据集创建自动数据字段的便捷方式.
> acCombine总是