SQL建了个表,然后在WINCC 7.5里面画面添加控件Date and Time 运行 VBS脚本报错。脚本编译正常。
VBS脚本:
Function Visible_Trigger(Byval Item)
Dim KJ1,KJ2,KJ3,KJ4,KJ5
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("sugar") '对应表格控件名称
Riqi = Now
LocalBeginTime = Year(riqi) & "-" & Month(riqi) & "-" & Day(riqi) & " " & "00:00:00"
LocalEndTime = Year(riqi) & "-" & Month(riqi) & "-" & Day(riqi) & " " & "23:59:59"
s1 = "SELECT DT,Name,B1,B2,B3,B4,B5 FROM chengzhong WHERE DT BSTWEEN '" & LocalBeginTime & "'And'" & LocalEndTime & "'ORDER BY DT"
'S1 后面的内容要对应数据库中列的内容,后面的DT与前面的DT要名称一致,biao要对应数据库列表名称dbo后面的名称
Strcn = "Providor=SQLOLEDB.1;lntegrated Security=SSPI;Persist Security lnfo=False; lnitial Catalog=WEIHUABING; 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 '获得检索到的总数
'HMIRuntime.Tags("13").Write n
'定义在线表格属性
MSFlexGrid1.Clear
MSFlexGrid1.Rows = oRs.RecordCount+2
MSFlexGrid1.ColWidth(0) = 700 '第一列宽度设置 序号
MSFlexGrid1.ColWidth(1) = 2500 '第二列宽度设置 编号
MSFlexGrid1.ColWidth(2) = 1200 '第二列宽度设置 时间
MSFlexGrid1.ColWidth(3) = 1200
MSFlexGrid1.ColWidth(4) = 1200
MSFlexGrid1.ColWidth(5) = 1200 '第6列宽度设置,如果列数多则继续添加
MSFlexGrid1.ColWidth(6) = 1200
MSFlexGrid1.ColWidth(7) = 1200
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 '相同内容合并单元格
MSFlexGrid1.MergeRow(0) = True '合并单元格
MSFlexGrid1.Row = 1
For z = 0 To 5 '根据上面的列数改变
MSFlexGrid1.Col = z
MSFlexGrid1.CellBackColor = vbCyan '定义第二行颜色
Next
MSFlexGrid1.TextMatrix(1,0) = "序号" '根据实际情况输入
MSFlexGrid1.TextMatrix(1,1) = "日期"
MSFlexGrid1.TextMatrix(1,2) = "名称"
MSFlexGrid1.TextMatrix(1,3) = "位置1(mm)"
MSFlexGrid1.TextMatrix(1,4) = "位置2(mm)"
MSFlexGrid1.TextMatrix(1,5) = "位置3(mm)"
MSFlexGrid1.TextMatrix(1,6) = "位置4(mm)"
MSFlexGrid1.TextMatrix(1,7) = "位置5(mm)"
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.Field(0).Value
MSFlexGrid1.TextMatrix(i+2,2) = oRs.Field(1).Value
MSFlexGrid1.TextMatrix(i+2,3) = oRs.Field(2).Value
MSFlexGrid1.TextMatrix(i+2,4) = oRs.Field(3).Value
MSFlexGrid1.TextMatrix(i+2,5) = oRs.Field(4).Value
MSFlexGrid1.TextMatrix(i+2,6) = oRs.Field(5).Value
MSFlexGrid1.TextMatrix(i+2,7) = oRs.Field(6).Value
i = i+1
oRs.MoveNext
Loop
conn.Close
MSFlexGrid1.TopRow = MSFlexGrid1.Rows - 1 '移动到最后一行
Else
MsgBox "您所查询的时间段内没有数据....."
oRs.Requery
conn.Close
End If
End Function
运行的时候出现错误。
script debugger could not be started!
脚本调试器无法启动!
出现ODBC也有问题!
我去检查ODBC!
还是出现上面的错误!!!!!
再去检查SQL SERVER
发现WINCC的没有打开!
然后打开WINCC的服务。
还是报上面的错误!!
求助!!!!!!!!!
s1 = "SELECT DT,Name,B1,B2,B3,B4,B5FROM Table_1 WHERE DT BETWEEN '" &LocalBeginTime& "' and'" &LocalEndTime& "'ORDER BY DT"
'S1 后面的内容要对应数据库中列的内容,后面的 DT 与前面的 DT 要名称一致,biao 要对应数据库列表名称 dbo.后面的名称
'这里要与数据库表名称一致,服务器一致
这部分改了以后,没有出现上面的报错。
Strcn = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=false;Data Source=DESKTOP-RP8EOKV\WINCC>;Initial Catalog = test"
又出现SQL SERVER不存在或拒绝访问!
怎么解决??