教程 | 冶炼行业熔铸车间特殊查询格式的实现-综合交流区论坛-低代码平台-本牛千智|专注WorkFine

教程 | 冶炼行业熔铸车间特殊查询格式的实现

在很多查询模板中,我们经常会直接在模板中输入excel公式,比如,查询出业务日期和当天日期后,可以用公式直接去计算间隔天数,但也有一些比较特殊的情况,无法在设计时输入excel公式,这时候就需要对excel计算表达式做预处理,再把处理好的excel公式填充到查询表的对应位置,

需求描述

如下图,这是冶炼厂熔铸车间的一个查询模板,需求见截图描述。

实现步骤:

1、如图中数据所示,区域、部位、总次数和不合格数是有记录数据的,而合格率和汇总需要计算显然在记录数据中是没有的,那就需要事先做好区域、部位、统计项的配置表,查询表新建时先把配置项内容先提取过来。

2、把统计数按行列匹配提取到表格中,这2步提取完成,应该就是上图中的样子。

3、在辅助表中利用提取公式拼接生成excel公式。

F列填充内容:

CASE
	WHEN 本报表.[示例1_扩展表].[no]%3 = 0 
	THEN '=round((F' + 
		cast(本报表.[示例1_扩展表].[no]-2 as varchar)+ '-F' + 
		cast(本报表.[示例1_扩展表].[no]-1 as varchar)+ ')/F' + 
		cast(本报表.[示例1_扩展表].[no]-2 as varchar)+ 
		'*100,2)&"%"'
END

G列填充内容:

CASE
	WHEN 本报表.[示例1_扩展表].[no]%3 = 0 
	THEN '=round((G' + 
	cast(本报表.[示例1_扩展表].[no]-2 as varchar)+ '-G' + 
	cast(本报表.[示例1_扩展表].[no]-1 as varchar)+ ')/G' + 
	cast(本报表.[示例1_扩展表].[no]-2 as varchar)+ 
	'*100,2)&"%"'
END

H列填充内容:

CASE
	WHEN 本报表.[示例1_扩展表].[no]%3 = 0 
	THEN '=round((H' + 
	cast(本报表.[示例1_扩展表].[no]-2 as varchar)+ '-H' + 
	cast(本报表.[示例1_扩展表].[no]-1 as varchar)+ ')/H' + 
	cast(本报表.[示例1_扩展表].[no]-2 as varchar)+ 
	'*100,2)&"%"'
	ELSE '=F' + 本报表.[示例1_扩展表].[no] + '+' + 'G' + 本报表.[示例1_扩展表].[no]
END

4、填充公式

统计数1填充内容:

CASE
	WHEN 本报表.[示例1_扩展表].[no]%3 = 0 
		THEN 本报表.[示例1公式_扩展表].[F列公式]
	ELSE 本报表.[示例1_扩展表].[统计数1]
END

统计数2填充内容:

CASE
	WHEN 本报表.[示例1_扩展表].[no]%3 = 0 
		THEN 本报表.[示例1公式_扩展表].[G列公式]
	ELSE 本报表.[示例1_扩展表].[统计数2]
END

辅助表提取结果截图:

需要注意的是no列中的序号需要和设计模板中的行号保持一致,所以这个no不是从1开始而是4

小结:

必要的时候,设计模板中需要辅助字段或是辅助表过渡处理,我们可以把辅助过渡的这些字段或表看成是编程中的变量,只是表现方式不同而已,本示例只是展示了该查询需求的其中一种解决方式,也可以用其他方式来处理,我们的目标无外乎是分析解决用户需求,如果您有更好的处理本案方式,可以去官网fine友分享中分享讨论。

以上就是本次的分享内容,如果您对我们的冶炼行业熔铸车间特殊查询格式的实现感兴趣,或希望了解更多其他应用技巧,欢迎留言告诉我们。

相关文章

请登录后发表评论

    请登录后查看回复内容