Dim sCon,sSql,oRs,conn,oCom,Con,data1,data2,data3,data4,data5,data6,data7,riqi,MSFlexGrid1,z,i,n,f
'往表格里面写数据
Set MSFlexGrid1 = HMIRuntime.Screens("设备管理画面").ScreenItems("MyTable")
Con="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=读写;Data Source=.\WINCC"
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = Con
conn.CursorLocation = 3
conn.Open
'Msgbox "hahahah"
sSql = "SELECT 日期,设备名称,设备代号,PLC_IP,开始运行时间,结束运行时间,设备状态,操作人员 FROM Persons1 order by 日期 asc "
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
Set oCom.ActiveConnection = conn
oCom.CommandType = 1
oCom.CommandText = sSql
Set oRs = oCom.Execute
n=oRs.RecordCount
'Msgbox n
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)=3000
MSFlexGrid1.ColWidth(6)=3000
MSFlexGrid1.ColWidth(7)=2500
MSFlexGrid1.ColWidth(8)=2500
MSFlexGrid1.RowHeight(0)=600
MSFlexGrid1.RowHeight(1)=400
MSFlexGrid1.Rows = n+2
MSFlexGrid1.FixedRows = 2
MSFlexGrid1.ColWidth(1)=2500
MSFlexGrid1.Row = 0
For z = 1 To 8 '根据上面的列数改变
MSFlexGrid1.CellFontSize = 20 '字体大小
MSFlexGrid1.Col = z
MSFlexGrid1.Text = "设备管理"
Next
MSFlexGrid1.MergeCells = 4 '相同内容单元格合并(标题Text合并掉)
MSFlexGrid1.MergeRow(0) = True '合并单元格
MSFlexGrid1.Row = 1
For z = 0 To 8 '根据上面的列数改变
MSFlexGrid1.Col = z
MSFlexGrid1.CellBackColor = vbCyan '定义第二行颜色
Next
MSFlexGrid1.TextMatrix(1,0) = "序号" '根据实际情况输入
MSFlexGrid1.TextMatrix(1,1) = "日期"
MSFlexGrid1.TextMatrix(1,2) = "设备名称"
MSFlexGrid1.TextMatrix(1,3) = "设备代号"
MSFlexGrid1.TextMatrix(1,4) = "PLC_IP"
MSFlexGrid1.TextMatrix(1,5) = "开始运行时间"
MSFlexGrid1.TextMatrix(1,6) = "结束运行时间"
MSFlexGrid1.TextMatrix(1,7) = "设备状态"
MSFlexGrid1.TextMatrix(1,8) = "操作人员"
'对齐方式
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
MSFlexGrid1.ColAlignment(8) = 4
'查询数据,插入在线表格对应位置
If(n>0) Then
oRs.MoveLast '移动到数据库据检索结果的第一行
' If (n>1) Then
' For f = 0 To 0
' oRs.MovePrevious
' Next
' Else
For f = 0 To n-2
oRs.MovePrevious
Next
' End If
i=0
Do While Not oRs.EOF '是否到记录末尾,循环填写表格
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
MSFlexGrid1.TextMatrix(i+2,8) = oRs.Fields(7).Value
i = i+1
oRs.MoveNext
Loop
conn.Close
MSFlexGrid1.TopRow = MSFlexGrid1.Row-1 '移动到最后一行
Else
MsgBox "您所查询的时间段内没有数据"
oRs.Requery
End If
Set oRs = Nothing
conn.Close
Set conn = Nothing
以上脚本可靠能用
另有一个问题咨询一下大神 Wincc自带数据库中存储的数据都是非明文的,如何用VB脚本把报警数据及设备运行记录记录到新建数据库中