Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 德尔福XE4&x2B;Firebird 2.1-如何在ClientDataSet中使用TFloatField而不是od TingleField_Delphi_Delphi Xe4_Tclientdataset_Firebird2.1 - Fatal编程技术网

Delphi 德尔福XE4&x2B;Firebird 2.1-如何在ClientDataSet中使用TFloatField而不是od TingleField

Delphi 德尔福XE4&x2B;Firebird 2.1-如何在ClientDataSet中使用TFloatField而不是od TingleField,delphi,delphi-xe4,tclientdataset,firebird2.1,Delphi,Delphi Xe4,Tclientdataset,Firebird2.1,我正在将应用程序的版本从Delphi 2007迁移到Delphi XE4,而TClientDataSet中的TSingleField有问题 我的应用程序使用SQL将数据加载到TClientDataSet,如果我使用 CAST(TABLE.FIELD AS FLOAT) AS FIELD 该字段作为字段进入ClientDataSet 当字段作为TFloatField进入ClientDataSet时,是否有一种方法可以改变这一点,就像它在delphi 2007中一样 我正在使用Delphi XE4

我正在将应用程序的版本从Delphi 2007迁移到Delphi XE4,而TClientDataSet中的TSingleField有问题

我的应用程序使用SQL将数据加载到TClientDataSet,如果我使用

CAST(TABLE.FIELD AS FLOAT) AS FIELD
该字段作为字段进入ClientDataSet

当字段作为TFloatField进入ClientDataSet时,是否有一种方法可以改变这一点,就像它在delphi 2007中一样

我正在使用Delphi XE4驱动程序连接firebird

谢谢

---编辑---

如果无法更改,是否有人知道如何为clientDataSet创建聚合字段以计算字段?
问题是我不太可能做到这一点,如果我手动将fieldtype从TSingleField更改为TFloatField,聚合效果会非常好。

我自己在将Delphi 7应用程序更新为Delphi 10.1时遇到了这个问题。一种解决方案是将浮点字段转换为双精度。这样,ClientDataSet的xml中的字段类型将以“r8”(TFloatField)而不是“r4”(TSingleField)结束


另一种解决方案是在应用程序中重新创建TField(和/或TFieldSDEF),以便预期的字段类型是TingleField,而不是像以前一样的TFloatField。

有趣的是,刚刚在XE2和FB2.5.2中遇到了一种情况,SimpleDataSet(内部使用MIDAS)无法通过DBX使用浮点字段。Typecaste o DOUBLE可以工作,但随后该列变成只读…UPD:这是由于Delphi 2006的midas.dll靠近exe文件造成的。我的坏…/您尝试检测实际加载的midas.dll