環境
win10
SQL Server 2016
WinCC V7.5 SP2
功能
打開界面時,立即顯示資料庫中當天的資料
0 運作結果

1 安裝SQL Server 2016
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,kj8
Dim QR
Dim MSFlexGrid1 '對應表格控件名
Dim LocalBeginTime,LocalEndTime,riqi
Dim oRs,oRs1,n,n1,i,z,s1,s11,oCom,oCom1,strcn,conn,pj
Dim zxy1
'查詢當天全部資料,除了控件名稱要注意修改外,以上其他為标準
Set MSFlexGrid1 = ScreenItems("MyTable") 'MyTable
'目前時間Now
riqi=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 = strcn
conn.CursorLocation = 3
conn.Open
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection=conn
oCom.CommandText = s1'執行檢索功能
Set oRs = oCom.Execute'==========================================================
n=oRs.RecordCount '獲得檢索到的總數
'定義線上表格屬性
MSFlexGrid1.Clear
'MSFlexGrid1.Rows = oRs.RecordCount + 2 '=======================這句話有問題
MSFlexGrid1.ColWidth(0)=700 '第一列寬度設定
MSFlexGrid1.ColWidth(1)=2500
MSFlexGrid1.ColWidth(2)=2500
MSFlexGrid1.ColWidth(3)=2500
MSFlexGrid1.ColWidth(4)=2500
MSFlexGrid1.ColWidth(5)=25
MSFlexGrid1.ColWidth(6)=2500
MSFlexGrid1.ColWidth(7)=2500
MSFlexGrid1.RowHeight(0) = 600 '第一行高度設定
MSFlexGrid1.RowHeight(1) = 400
MSFlexGrid1.Row = 0
For z = 0 To 7 '根據上面的列數改變
MSFlexGrid1.CellFontSize = 12 '字型大小
MSFlexGrid1.Col = z
MSFlexGrid1.Text = "讀資料庫測試表"
Next
MSFlexGrid1.MergeCells = 4 '相同内容單元格合并(标題Text合并掉)
MSFlexGrid1.MergeRow(0) = True '合并單元格
MSFlexGrid1.Row = 1
For z = 0 To 7 '根據上面的列數改變
MSFlexGrid1.Col = z
MSFlexGrid1.CellBackColor = vbCyan '定義第二行顔色
Next
MSFlexGrid1.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) = 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
'查詢資料,插入線上表格對應位置
If(n>0)Then
oRs.MoveFirst '移動到資料庫據檢索結果的第一行
i=0
Do While Not oRs.EOF '是否到記錄末尾,循環填寫表格
n=n+1
MSFlexGrid1.TextMatrix(i+2,0) = i '序号
MSFlexGrid1.TextMatrix(i+2,1) = oRs.Fields(0).Value
MSFlexGrid1.TextMatrix(i+2,2) = oRs.Fields(1).Value
MSFlexGrid1.TextMatrix(i+2,3) = oRs.Fields(2).Value
MSFlexGrid1.TextMatrix(i+2,4) = oRs.Fields(3).Value
MSFlexGrid1.TextMatrix(i+2,5) = oRs.Fields(4).Value
MSFlexGrid1.TextMatrix(i+2,6) = oRs.Fields(5).Value
MSFlexGrid1.TextMatrix(i+2,7) = oRs.Fields(6).Value
i = i+1
oRs.MoveNext
Loop
conn.Close
MSFlexGrid1.TopRow = MSFlexGrid1.Row-1 '移動到最後一行
Else
MsgBox "您所查詢的時間段内沒有資料"
oRs.Requery
conn.Close
End If