2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > WinCC 7.5 读取 SQL server 中的表格数据

WinCC 7.5 读取 SQL server 中的表格数据

时间:2021-08-23 04:02:11

相关推荐

WinCC 7.5 读取 SQL server 中的表格数据

环境

win10

SQL Server

WinCC V7.5 SP2

功能

打开界面时,立即显示数据库中当天的数据

0 运行结果

1 安装SQL Server

2 打开 SQL Server Management Studio 选择服务器名称 .\WINCC(没有的话,自己敲进去 )

3 建数据库、建表

三个重要数据:

4 WinCC设置

双击计算机,勾选全局脚本系统+图形运行系统

由于需要用到VB脚本,因此需要开启VBS调试

7 WinCC控件设置

找不到控件时,添加控件:

控件设置:

希望在打开画面的时候显示数据:【右击画面 > 属性>事件>其他>打开画面> 右击>VBS】

8 VB 脚本(不包括头尾模板)

'Dim 声明变量Dim kj1,kj2,kj3,kj4,kj5,kj6,kj7,kj8Dim QRDim MSFlexGrid1 '对应表格控件名Dim LocalBeginTime,LocalEndTime,riqiDim oRs,oRs1,n,n1,i,z,s1,s11,oCom,oCom1,strcn,conn,pjDim zxy1'查询当天全部数据,除了控件名称要注意修改外,以上其他为标准Set MSFlexGrid1 = ScreenItems("MyTable") 'MyTable'当前时间Nowriqi=Now'设置开始时间和结束时间LocalBeginTime = Year(riqi)&"-"&Month(riqi)&"-"&Day(riqi)&" "&"00:00:00"LocalEndTime = Year(riqi)&"-"&Month(riqi)&"-"&Day(riqi)&" "&"23:59:59"s1="SELECT Date,Name,L1,L2,L3,L4,L5 FROM Table_1 WHERE Date BETWEEN'"&LocalBeginTime&"'and '"&LocalEndTime&"'ORDER BY Date"'s1后面的内容要对应数控中 列的内容,后面的Date和前面的Date要名称一直,Table_1要对应数据库列表名称dbo.后面的名称strcn = "Provider=SQLOLEDB.1; Integrated Security=SSPI; Persist Security Info=False; Initial Catalog=GGHSDATABASE; Data Source=.\WINCC"Set conn = CreateObject("ADODB.Connection")conn.ConnectionString = strcnconn.CursorLocation = 3conn.OpenSet oRs = CreateObject("ADODB.Recordset")Set oCom = CreateObject("mand")mandType = 1Set oCom.ActiveConnection=mandText = s1'执行检索功能Set oRs = oCom.Execute'==========================================================n=oRs.RecordCount '获得检索到的总数'定义在线表格属性MSFlexGrid1.Clear'MSFlexGrid1.Rows = oRs.RecordCount + 2 '=======================这句话有问题MSFlexGrid1.ColWidth(0)=700'第一列宽度设置MSFlexGrid1.ColWidth(1)=2500MSFlexGrid1.ColWidth(2)=2500MSFlexGrid1.ColWidth(3)=2500MSFlexGrid1.ColWidth(4)=2500MSFlexGrid1.ColWidth(5)=25MSFlexGrid1.ColWidth(6)=2500MSFlexGrid1.ColWidth(7)=2500MSFlexGrid1.RowHeight(0) = 600 '第一行高度设置MSFlexGrid1.RowHeight(1) = 400MSFlexGrid1.Row = 0For z = 0 To 7'根据上面的列数改变MSFlexGrid1.CellFontSize = 12 '字体大小MSFlexGrid1.Col = zMSFlexGrid1.Text = "读数据库测试表"NextMSFlexGrid1.MergeCells = 4 '相同内容单元格合并(标题Text合并掉)MSFlexGrid1.MergeRow(0) = True '合并单元格MSFlexGrid1.Row = 1For z = 0 To 7 '根据上面的列数改变MSFlexGrid1.Col = zMSFlexGrid1.CellBackColor = vbCyan '定义第二行颜色NextMSFlexGrid1.TextMatrix(1,0) = "序号" '根据实际情况输入MSFlexGrid1.TextMatrix(1,1) = "日期"MSFlexGrid1.TextMatrix(1,2) = "名称"MSFlexGrid1.TextMatrix(1,3) = "L1"MSFlexGrid1.TextMatrix(1,4) = "L2"MSFlexGrid1.TextMatrix(1,5) = "L3"MSFlexGrid1.TextMatrix(1,6) = "L4"MSFlexGrid1.TextMatrix(1,7) = "L5"'对齐方式MSFlexGrid1.ColAlignment(0) = 4MSFlexGrid1.ColAlignment(1) = 4MSFlexGrid1.ColAlignment(2) = 4MSFlexGrid1.ColAlignment(3) = 4MSFlexGrid1.ColAlignment(4) = 4MSFlexGrid1.ColAlignment(5) = 4MSFlexGrid1.ColAlignment(6) = 4MSFlexGrid1.ColAlignment(7) = 4'查询数据,插入在线表格对应位置If(n>0)ThenoRs.MoveFirst'移动到数据库据检索结果的第一行i=0Do While Not oRs.EOF '是否到记录末尾,循环填写表格n=n+1MSFlexGrid1.TextMatrix(i+2,0) = i '序号MSFlexGrid1.TextMatrix(i+2,1) = oRs.Fields(0).ValueMSFlexGrid1.TextMatrix(i+2,2) = oRs.Fields(1).ValueMSFlexGrid1.TextMatrix(i+2,3) = oRs.Fields(2).ValueMSFlexGrid1.TextMatrix(i+2,4) = oRs.Fields(3).ValueMSFlexGrid1.TextMatrix(i+2,5) = oRs.Fields(4).ValueMSFlexGrid1.TextMatrix(i+2,6) = oRs.Fields(5).ValueMSFlexGrid1.TextMatrix(i+2,7) = oRs.Fields(6).Valuei = i+1oRs.MoveNextLoopconn.CloseMSFlexGrid1.TopRow = MSFlexGrid1.Row-1 '移动到最后一行ElseMsgBox "您所查询的时间段内没有数据"oRs.Requeryconn.CloseEnd If

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。