提问如标题,我回答可以:
对于报表我始终提倡一种宗旨,那就是将更多的数据处理工作让数据库本身去完成,VBS只负责读取和显示。目的只有一个,简化脚本提高执行效率。
WinCC的变量记录在归档中使用很方便而且归档的种类和速度都比自己建立的数据库表要好很多。但是我们在用脚本向外部读取的时候,会遇到一个很棘手的问题,就是他的表格结构并不是我们常见的标准表格结构,而且读取语句也不是标准的T-SQL语言。如下:
TAG:R,('ProcessValueArchive\NewTag';'ProcessValueArchive\NewTag1'),'2019-12-19 8:00:00','2019-12-20 8:00:00'
因此导致我们的读取只能是先读取一列,填充完毕后再读取下一列,如此循环下去。或者用vbs统一读出来再进行拆分。数据量小还好说数据量大的时候相当慢。
其实WinCC的帮助文件里已经为我们做好了接口:
具体怎么的脚本思路如下(详细解释请参考更新视频)。
有三个变量,一次查询出每一个变量的所有数据,利用标准的SQL语言来进行拼接,并在这个过程中将时间的转换和小数点的位数一起处理完毕。
通过上述脚本可以直接查询出变量记录的所有实际值,并且记录集是我们常见的时间加数值的格式。
那么将上述脚本直接做成存储过程,再VBS中只需要一句SQL字符串就将所有的数据按照我们想要的格式显示出来了。测试项目是217条数据,一秒到账!
本帖只提供思路,因为每个项目的实际情况均不同,因此没有粘贴全部脚本,鼓励大家自主学习,看帮助文件。