1.先点VB许可注册MSFLEXGRID这个控件,然后再解压baobiao这个文件。
2.打开baobiao项目,将计算机名改为本机计算机名,就可以运行项目
3.在全局脚本里建立起与数据库的连接,通过定时整点触发脚本,把变量写到数据库。WINCC里全局脚本触发定时器设定是每小时整点触发。
4.在月,年,班月,班年报表画面属性里,定义了打开画面执行的VB程序,用于显示选择年月日,以及画面其他显示,比如记录的条数,系统时间
5.在主画面,第一次运行时要按“添加数据库”按钮,这样就在SQL2005里建立baobiao1数据库,打开SQL Server Management Studio,点Connect,在Databases目录下可以看到baobiao1数据库文件,在tables下面有建立好的ribao表,打开表,在Columns里可以看到在WINCC里建立的变量。如果不需要做报表记录,点“分离数据库”旋钮。

6.在日报表中,显示的列数为8列,编号0-7,显示的行数为oRs.Recordcount+6,也就是查询到的记录数+6,第一行用来显示报表标题,第二行显示“编号”,“日期”,一直到“速度”。

从第三行开始显示查询到的记录,包括记录的编号,记录时间,记录值。oRs.Recordcount+3行显示最大值,oRs.Recordcount+4行显示最小值,oRs.Recordcount+5显示平均值,oRs.Recordcount+2用来显示查到的每个记录总和,程序里注释掉了,就没显示。
7.统计查询记录最大值,最小值,平均值是在SQL数据库里完成的,通过max,min,avg函数完成的
8. 将第一行8列合为一列
MSFlexGrid1.Row = 0’选中第一行。注意第一行,或者是第一列都从0开始
For z = 0 To 7
MSFlexGrid1.Col = z
MSFlexGrid1.Text = “R980履带式布料机日报表"通过FOR,NEXT操作,将8列内容都显示为"R980履带式布料机日报表”

Next
MSFlexGrid1.MergeCells = 4设置一个值4表明如何及何时将有相同内容的记录进行合并
MSFlexGrid1.MergeRow(0) = True设置将0行内容合并
9. MSFlexGrid1.Rows = oRs.RecordCount + 6’显示的行数为查询到数据数目+6
MSFlexGrid1.ColWidth(0) = 800’第一列宽度
MSFlexGrid1.ColWidth(1) = 2100’第二列宽度
MSFlexGrid1.ColWidth(2) = 1000’第三列宽度
MSFlexGrid1.ColWidth(3) = 1000’第四列宽度
MSFlexGrid1.ColWidth(4) = 1000’第五列宽度
MSFlexGrid1.ColWidth(5) = 1000’第六列宽度
MSFlexGrid1.ColWidth(6) = 1000’第七列宽度
MSFlexGrid1.ColWidth(7) = 1000’第八列宽度
MSFlexGrid1.TextMatrix(1, 0) = "编号"设置某个选定行,列的单元的文本内容
MSFlexGrid1.ColAlignment(0) = 4设置当前列的对齐方式
MSFlexGrid1.ColAlignment(1) = 4
MSFlexGrid1.ColAlignment(2) = 4
MSFlexGrid1.ColAlignment(3) = 4
MSFlexGrid1.ColAlignment(4) = 4
MSFlexGrid1.ColAlignment(5) = 4
MSFlexGrid1.ColAlignment(6) = 4
MSFlexGrid1.ColAlignment(7) = 4设置当前列的对齐方式
For i = 1 To oRs.RecordCount第一列显示每条记录编号
MSFlexGrid1.TextMatrix(i + 1, 0) = i
Next
10. Sql = “SELECT CONVERT(char(19), riqi, 20) AS riqi, yali, wendu, liuliang, zhongliang, dianya, sudu FROM ribao WHERE riqi BETWEEN '” & BeginDate & “’ and’” & EndDate & “'ORDER BY riqi” SELECT CONVERT(char(19), riqi, 20) AS riqi,其中CONVERT(CHAR(19), CURRENT_TIMESTAMP, 20)为定义的显示日期格式,如2006-02-22 16:26:08。按照起始,结束时间查询记录。Select From,为查询语句标准格式,FROM后面是表名,本例表名为ribao

sql1 = “select avg(yali)as ylp,avg(wendu)as wdp,avg(liuliang)as llp,avg(zhongliang)as zlp,avg(dianya)as dyp,avg(sudu)as sdp,min(yali)as ylx,min(wendu)as wdx,min(liuliang)As llx,min(zhongliang)As zlx,min(dianya)As dyx,min(sudu)As sdx,max(yali)As yld,max(wendu)As wdd,max(liuliang)As lld,max(zhongliang)As zld,max(dianya)As dyd,max(sudu)As sdd from ribao where riqi between '” & BeginDate & “’ and’” & EndDate & "'"数据库支持SQL查询语言,用函数AVG,MIN,MAX对列求平均,最小,最大值。
11.从WINCC访问sql2005数据库步骤:
1) 创建一个到数据库的 ADO 连接
2) 打开数据库连接
3) 创建ADO记录集
4) 从记录集提取你想要的数据,在表格显示出来
5) 关闭记录集
6) 关闭连接
ADO有三个主要对象,connection,Recordset,Command,通过这三个对象完成对数据库操作
strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=baobiao1;Data Source=.\wincc"创建一个ADO连接,连接运行数据库baobiao1
Set conn = CreateObject(“ADODB.Connection”)创建ADO连接对象,对数据库操作
conn.ConnectionString = strcn
conn.CursorLocation = 3
conn.Open 打开数据库连接

Set oRs = CreateObject(“ADODB.Recordset”)读取数据库的数据,那么其中的数据必须首先被载入一个记录集中。ADO连接创立后,就可以创建一个ADO记录集了。

Set oCom = CreateObject("ADODB.Command")创建一个ADO.Command对象。该查询用于取回数据,此数据将以一个 RecordSet 对象返回。这意味着被取回的数据能够被 RecordSet 对象的属性、集合、方法或事件进行操作
oCom.CommandType = 1返回一个 Command 对象的类型
Set oCom.ActiveConnection = conn返回包含了定义连接或 Connection 对象的字符串。
oCom.CommandText = Sql设置或返回包含提供者(provider)命令的字符串

Set oRs = oCom.Execute Execute 是方法,执行 CommandText 属性定义的Sq1定义查询、SQL 语句或存储过程,是按时间条件查询到的riqi,yali,wendu, liuliang, zhongliang, dianya, sudu记录值
n = oRs.RecordCount’查询到的记录数目
Text2.Text = n
Set oCom1 = CreateObject(“ADODB.Command”)
oCom1.CommandType = 1’ors1是记录平均,最小,最大值
Set oCom1.ActiveConnection = conn
oCom1.CommandText = sql1
Set oRs1 = oCom1.Execute执行 CommandText 属性定义的Sq11定义查询、SQL 语句或存储过程,是按时间条件查询到的riqi,yali,wendu, liuliang, zhongliang, dianya, sudu的各个最大,最小,平均值记录值
n1 = oRs1.RecordCount n1为1,

ylp = oRs1(“ylp”): wdp = oRs1(“wdp”): llp = oRs1(“llp”): ylx = oRs1(“ylx”): wdx = oRs1(“wdx”): llx = oRs1(“llx”): yld = oRs1(“yld”): wdd = oRs1(“wdd”): lld = oRs1(“lld”)
zlp = oRs1(“zlp”): dyp = oRs1(“dyp”): sdp = oRs1(“sdp”): zlx = oRs1(“zlx”): dyx = oRs1(“dyx”): sdx = oRs1(“sdx”): zld = oRs1(“zld”): dyd = oRs1(“dyd”): sdd = oRs1(“sdd”)

oRs.Requery Requery的作用是:通过重新执行对象所基于的查询语句,更新Recordset[记录集]对象中的数据。

提示:适用这个方法可以刷新记录集的所有内容。
Do While Not oRs.EOF
'n = n + 1这句我给删掉了,程序可以运行

ylp = Int(ylp * 10 ^ 3 + 0.5) / (10 ^ 3)
wdp = Int(wdp * 10 ^ 3 + 0.5) / (10 ^ 3)
llp = Int(llp * 10 ^ 3 + 0.5) / (10 ^ 3)
zlp = Int(zlp * 10 ^ 3 + 0.5) / (10 ^ 3)
dyp = Int(dyp * 10 ^ 3 + 0.5) / (10 ^ 3)
sdp = Int(sdp * 10 ^ 3 + 0.5) / (10 ^ 3)

a1 = CStr(oRs.Fields(1).Value)取第一条记录的值。ADO Field 对象包含有关 Recordset 对象中某一列的信息。Recordset 中的每一列对应一个 Field 对象
b1 = CStr(oRs.Fields(2).Value)
c1 = CStr(oRs.Fields(3).Value)
d1 = CStr(oRs.Fields(4).Value)
e1 = CStr(oRs.Fields(5).Value)
f1 = CStr(oRs.Fields(6).Value)
a1 = Int(a1 * 10 ^ 3 + 0.5) / (10 ^ 3)
b1 = Int(b1 * 10 ^ 3 + 0.5) / (10 ^ 3)
c1 = Int(c1 * 10 ^ 3 + 0.5) / (10 ^ 3)
d1 = Int(d1 * 10 ^ 3 + 0.5) / (10 ^ 3)
e1 = Int(e1 * 10 ^ 3 + 0.5) / (10 ^ 3)
f1 = Int(f1 * 10 ^ 3 + 0.5) / (10 ^ 3)
MSFlexGrid1.TextMatrix(i + 1, 2) = a1’第三行开始显示第一条记录值
MSFlexGrid1.TextMatrix(i + 1, 3) = b1
MSFlexGrid1.TextMatrix(i + 1, 4) = c1
MSFlexGrid1.TextMatrix(i + 1, 5) = d1
MSFlexGrid1.TextMatrix(i + 1, 6) = e1
MSFlexGrid1.TextMatrix(i + 1, 7) = f1

oRs.MoveNext
Loop
oRs.close’这是后加的,退出程序前,关闭与数据库,记录集的连接
ors1.close’这是后加的
conn.close’这是后加的

注意,所有报表源码执行完,最后都添加关掉连接的代码,即
oRs.close
ors1.close
conn.close

wincc 日报表(带注释)相关推荐

  1. Wincc 7.5 SP1使用VBS创建Excel日报表并显示在画面

    目录 1 <概述> 2 <创建模板> 3 < Wincc变量> 4 <创建全局动作> 4.1 动作1脚本:创建文件及拷贝报表 4.2 全局动作2:整点存 ...

  2. wincc报表 日报表 月报表 年报表 时段报表:可自由选择时间段查询

    wincc报表 功能如下: 日报表:每日24点数据,如果设置的是累计值,计算每小时的差值,和最终汇总一日总累计 月报表:每日0点数据显示,如果设置的是累计值,计算每日的差值,和最终汇总一月总累计 年报 ...

  3. wincc报表 日报表 月报表 年报表 时段报表 报表表格 宽度可以自由配置,报表界面大小可以自由拖动大小,报表参数方便配置,不需要任何编程,适用wincc任何版本

    wincc报表 功能如下: 日报表:每日24点数据,如果设置的是累计值,计算每小时的差值,和最终汇总一日总累计 月报表:每日0点数据显示,如果设置的是累计值,计算每日的差值,和最终汇总一月总累计 年报 ...

  4. wincc报表日报表实例_工作系统二次开发二Python加工原膜切割日报表数据实例

    #工作系统二次开发二Python加工原膜切割日报表数据实例 #当查询一个或多个工作令后在表格展示数据前按要求对数据进行二次处理,处理要求看如下 #1.加工单号和母卷物料编号相同则把除第一行外的领料有关 ...

  5. 使用Excel连接WINCC生成报表的实现方法

    WINCC自带的报表功能,在工程应用上不太适合国人的风格,所以就想借用强大的excel表格功能来制作灵活多变的丰富的报表.使用Excel的VBA功能实现和WINCC的变量建立连接,实现数据查询,可实现 ...

  6. 项目开发日报表——第二天

    项目开发日报表--第二天 项目名称 [苏嵌实训-嵌入式 linuxC 第 2 天] 今日进度以及任务 学习编译器gcc.调试器gdb,工程管理器make,并写相关的代码熟悉掌握这些开发工具. 本日任务 ...

  7. Silverlight——施工计划日报表(一)

    前一段时间,客户需要一个施工计划报表,要求能够直观的看到各个计划的实施时间,而且能够修改.琢磨着,决定用Silverlight搞定好了.效果如下: 用户可以通过右键菜单的[完成]选项来标记完成,左键选 ...

  8. WinCC智能报表(代替热风炉岗位工手抄日志)

    MSFlexGrid控件.DTPicker控件.Text控件.按钮控件等. WinCC项目文件夹下新建"sql"文件夹,"sql"文件夹内新建HBISCT.md ...

  9. 物联网实践实习日报表

    物联网实践实习日报表 项目名称 [苏嵌实训-嵌入式 linuxC 第1天] 今日进度以及任务 今天老师带着我们学习了嵌入式开发概述及嵌入式开发环境安装及使用熟悉相关命令,另外进行了C语言的训练 1.嵌 ...

  10. 项目开发日报表(第四天 )

                                       项目开发日报表 项目名称 苏嵌实训-嵌入式LinuxC第n天 今日进度以及任务 1:编译器三级优化分别优化了哪些? 2:总结gcc ...

最新文章

  1. linux c 线程属性 pthread_attr_t 简介
  2. python如何读取excel数据-python怎么从excel中读取数据?
  3. 深度学习性能提升的诀窍
  4. Java及Android开发环境搭建
  5. ExtJs+php学习长连接comet技术开端。
  6. CML更新 | 新增百度小程序、支付宝小程序
  7. Java的位运算符——与()、非(~)、或(|)、异或(^)
  8. HAOI2018 简要题解
  9. 收藏的一些github开源项目,在这里记录一下
  10. Android studio 三大模拟器比较
  11. 计算机系统无法启动 错误恢复怎么办,win7系统无法启动 安全模式也进入不了怎么办-win7启动失败,win7错误恢复无法开机...
  12. 石头科技的“现实”和“远方”
  13. 记2017莫名其妙的美团校招安卓岗
  14. 养猫日记之如何获得一只喵
  15. DS树--找出直系亲属
  16. SWF文件格式详解(1)
  17. busboy中文文件名乱码问题
  18. c语言makecode头文件,cmake 添加头文件目录,链接动态、静态库
  19. error: can‘t create transaction lock on /var/lib/rpm/.rpm.lock (Permission denied)
  20. 如何使用phpunit运行单一测试方法?

热门文章

  1. monitor java_Java中的monitor机制
  2. PUN☀️七、网络同步:Object Synchronization
  3. 计算机主板上的纽扣电池型号是,主板上的纽扣电池是什么
  4. 我的ThinkPad T410i 安装 Mac10.9 Mavericks 过程记录
  5. 面试题之__ 星际穿越(java实现)
  6. linux音频设备接口,OSS--跨平台的音频接口简介
  7. 内核ppp编制和错误分析
  8. 怎么用python骂人_人生苦短我用Python,本文助你快速入门
  9. Docker与Dragonfly详细多机部署
  10. Html+css仿淘宝页面练习