环境
Win10
WinCC V7.5
SQL Server 2016
运行结果
流程
WinCC变量
全局VB脚本
(我设置的是每2秒存一次,因此周期性触发器设置1秒)
全局脚本
'全局动作--在控件中循环显示当前最新数据
Dim sCon,conn,oRs,n,i,s1,oCom,strcn,z
Dim riqi,mazhi,qxlx,qxwz,ok
Dim MSFlexGrid1 '对应表格控件名
Dim LocalBeginTime,LocalEndTime
Dim R_JC,Weight,R_FC,GBD
Dim J1
Set J1 = HMIRuntime.Tags("Z1") '一个二进制变量Z1
J1.Read
If J1.Read Then
J1.Write 0
Else
J1.Write 1
Set MSFlexGrid1 = HMIRuntime.Screens("Test SQL").ScreenItems("MyTable") '选择画面和画面中的控件
riqi = Now
Dim name
Set name = HMIRuntime.Tags("name1") 'name1源于内部内部变量SQLTest中定义
name.Read
Dim R1
Set R1 = HMIRuntime.Tags("L1")
R1.Read
Dim R2
Set R2 = HMIRuntime.Tags("L2")
R2.Read
Dim R3
Set R3 = HMIRuntime.Tags("L3")
R3.Read
Dim R4
Set R4 = HMIRuntime.Tags("L4")
R4.Read
Dim R5
Set R5 = HMIRuntime.Tags("L5")
R5.Read
'================================================
MsgBox"3"
'================================================
If name.Value = "" Then '如果输入的编号名称为空
'啥也没干
Else
sCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=GGHSDATABASE;Data Source=.\wincc"
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
s1 = "insert into Table_1 (Date,Name,L1,L2,L3,L4,L5) Values ( '"&riqi&"','"&name.Value&"','"&R1.Value&"','"&R2.Value&"','"&R3.Value&"','"&R4.Value&"','"&R5.Value&"')"
conn.Execute s1
conn.Close
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
n = MSFlexGrid1.Rows
MSFlexGrid1.TextMatrix(n-1,0) = n - 3
MSFlexGrid1.TextMatrix(n-1,1) = riqi
MSFlexGrid1.TextMatrix(n-1,2) = name.Value
MSFlexGrid1.TextMatrix(n-1,3) = R1.Value
MSFlexGrid1.TextMatrix(n-1,4) = R2.Value
MSFlexGrid1.TextMatrix(n-1,5) = R3.Value
MSFlexGrid1.TextMatrix(n-1,6) = R4.Value
MSFlexGrid1.TextMatrix(n-1,7) = R5.Value
MSFlexGrid1.TopRow = MSFlexGrid1.Rows - 1 '移动到最后一行,显示当前最新数据行
End If
End If
版权声明:本文为qq_41550190原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。