wincc 日报表(带注释)

您所在的位置:网站首页 wincc报表横向打印 wincc 日报表(带注释)

wincc 日报表(带注释)

2024-01-18 07:23| 来源: 网络整理| 查看: 265

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3