技术论坛

 完全基于数据库查询的WINCC报表

返回主题列表
作者 主题
西北望射天狼
游民

经验值:81
发帖数:9
精华帖:2
楼主    2010-01-26 20:11:38
主题:完全基于数据库查询的WINCC报表
报表一直是做工控的人遇到的一个很棘手的问题,有些好用的报表是需要用户单独购买,WINCC自带的报表在功能上是有很大的局限性,对于复杂的报表来说用WINCC的报表编辑器是难以实现的,本人利用WINCC脚本语言的灵活性和开放的接口特地做了一套完全基于数据库查询的WINCC报表系统,能满足复杂报表的需求。
一、报表优点:
1、数据写入SQL数据表,数据不容易丢失,保存时间长,数据库容量大;
2、数据从数据库里面查询和统计,冗余少,速度快,具有直接性、可靠性和稳定性。
3、查询方便灵活,依靠SQL强大的查询和统计功能,想怎么查询就怎么查询,并依靠MSFlexGrid控件做显示,做出来的不仅报表美观大方。而且还可根据需求做出很复杂的报表。
二、报表制作流程
1、创建SQL数据库,打开Microsoft SQL Server2005,选择SQL Server Manage Studio,点击Connect
2、在Databases,右键选择New Database,在Database Name处输入数据库名称,如peifang
3、点击Databases,此时可以看到刚才新建的数据库peifang,点击该数据库,右击Tables,选择New Table,在Column Name、Data Type处输入变量并选择数据类型,输入完成后,保存并输入表格名称,如baobiao
4、在WINCC的VBS全局脚本中编写用于写入SQL报表的脚本程序,关键连接字符串脚本如下:
strcn="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=peifang;Data Source=.\wincc"
在全局脚本里面设置好时间触发器,日报表一般是每个小时整点触发一次,脚本正常运行后,打开Databases---peifang---Tables---baobiao会看到记录的数据
二、 WINCC报表画面组态
在组态报表画面时,需要用到MSFlexGrid控件、DT Picker控件,ComboBox控件。选定ActiveX Controls,右键选择Add/Remove,从弹出菜单中选择Microsoft FLexGrid Control,Version 6.0和Microsoft Date and Time Picker Control 6.0(SP4),ComboBox控件。
从ActiveX Controls中将这两个控件拖到日报表画面,可以在其属性中更改控件的名称,设置MSFlexGrid控件属性。
注意:通常情况下,直接选择Microsoft FLexGrid Control,Version 6.0控件时,需要注册。如果电脑上安装有Microsoft Visual Basic V6 这个软件时,就可以直接选择该控件。没有装VB的可以来找我要注册控件的小工具。
三、VBS脚本程序编写

1、编写查询日报表画面的脚本

该脚本通过ADO方式访问数据库,关键的查询代码如下:Sql = "select convert(char(7),[riqi],120) ,avg(yali) ,avg(wendu) ,avg(liuliang),avg(zhongliang),avg(dianya),avg(sudu) from (select convert(char(10),[riqi],120) as riqi ,avg(yali) as yali, avg(wendu) as wendu, avg(liuliang) as liuliang, avg(zhongliang) as zhongliang,avg(dianya) as dianya,avg(sudu) as sudu from ribao where convert(char(4),[riqi],120) between '" & BeginDate & "' and'" & EndDate & "' group by convert(char(10),[riqi],120) ) a group by convert(char(7),[riqi],120)"数据查询出来显示在MSFlexGrid控件上
2、“打印”按钮鼠标单击的脚本
该脚本用于执行打印查询到的数据记录,即将MSFlexGrid控件中的数据转存到EXCEL并进行打印,可实现全自动无人值守打印。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。