【发布时间】:2015-02-10 11:23:19
【问题描述】:
我有一个 FM13 数据库,其中有一个表“机器”及其相关的表“消费”与 ID 相连。 我的布局显示了机器数据和带有相关消费条目的门户。 现在我想将“fuelType”为“diesel”且“year”为“2015”的所有相关条目的字段“amount”汇总到机器表中的一个计算字段中。
谁能告诉我怎么做?
谢谢 丹
【问题讨论】:
我有一个 FM13 数据库,其中有一个表“机器”及其相关的表“消费”与 ID 相连。 我的布局显示了机器数据和带有相关消费条目的门户。 现在我想将“fuelType”为“diesel”且“year”为“2015”的所有相关条目的字段“amount”汇总到机器表中的一个计算字段中。
谁能告诉我怎么做?
谢谢 丹
【问题讨论】:
除了 Michael 建议的方式外,FM13 还引入了ExecuteSQL 命令,可以在计算字段中使用。计算如下所示:
ExecuteSQL (
"SELECT SUM(amount)" & ¶ &
"FROM consumption" & ¶ &
"WHERE FuelType = 'diesel' AND \"Year\" = 2015" ;
"" ; ""
)
【讨论】:
基于连接字段的两个表中的计算字段创建另一个关系:
id_fueltype_year: 12345_diesel_2015
然后您可以在包含 Sum(newrelation: amount) 的机器中创建一个计算字段
如果您在 calc 字段机器表中对燃料类型进行硬编码,则结果将始终是指定的燃料类型(例如柴油)。因此,您需要为每种字段类型创建多个字段。或者您可以创建一个燃料类型字段,当您更改它时,汇总计算字段将在选择时更新。
【讨论】:
如果这只是为了显示,您可以简单地基于现有关系创建一个单行门户并对其进行过滤以仅显示 = 的记录
Consumption::FuelType = "diesel" and Consumption::Year = 2015
或(最好是恕我直言)=
Consumption::FuelType = Machines::gFuelType
and
Consumption::Year = Machines::gYear
Machines::gFuelType 和 Machines::gYear 是全局字段,您可以在其中选择任何类型/年份进行汇总。
在过滤后的门户中放置一个定义为(在消耗表中)为 [Amount] 总计的汇总字段。
如果您需要将结果作为数据进行进一步处理,那么您需要添加一个专用关系(使用消耗表的另一个实例):
Machines::MachineID = Consumption 2::MachineID
AND
Machines::gFuelType = Consumption 2::FuelType
AND
Machines::gYear = Consumption 2::Year
并使用Sum ( Consumption 2::Amount )总结相关条目。
【讨论】: