签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
各位好,本人设置一个归档,通过online trend查看历史归档都是有数据的,通过如下脚本定时去生成xlsx文件时,总是说没有数据,怎么破?
Option Explicit
Function action
'此为查询按钮中的代码
'变量定义和初始化
Dim sPro,sDsn,sSer,sCon,conn,sSql,oRs,oCom
Dim tagDSNName
Dim m,i
Dim LocalBeginTime, LocalEndTime,UTCBeginTime, UTCEndTime,sVal ,UTCTime ,Localtime
Dim objExcelApp,objExcelBook,objExcelSheet,sheetname
On Error Resume Next
sheetname="Sheet1"
'打开Excel模板
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
objExcelApp.Workbooks.Open "C:\abc.xlsx"
objExcelApp.Worksheets(sheetname).Activate
'准备查询条件 Catalog、UTC开始时间、UTC结束时间、时间间隔
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
tagDSNName.Read
UTCBeginTime = CStr(Year(Now)) & "-" & CStr(Month(Now)) & "-" & CStr(Day(Now)-2) & " 16:00:00"
UTCEndTime = CStr(Year(Now)) & "-" & CStr(Month(Now)) & "-" & CStr(Day(Now)-1) & " 15:59:59"
'创建数据库联接
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=" &tagDSNName.Value& ";"
sSer = "Data Source=CDD-PC\WinCC"
sCon = sPro + sDsn + sSer
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
'定义查询的命令文本 SQL
sSql = "Tag:R,('PVArchive\a'),'" & UTCBeginTime & "','" & UTCEndTime & "',"
sSql=sSql+"'order by Timestamp ASC'"
MsgBox sSql
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = sSql
'填充数据NewPdl0NewPdl0NewPdl0NewPdl0NewPdl0到Excel中
Set oRs = oCom.Execute
m = oRs.RecordCount
If (m > 0) Then
objExcelApp.Worksheets(sheetname).cells(2,1).value=oRs.Fields(1).Name
objExcelApp.Worksheets(sheetname).cells(2,2).value=oRs.Fields(2).Name
oRs.MoveFirst
i=3
Do While Not oRs.EOF '是否到记录末尾,循环填写表格
objExcelApp.Worksheets(sheetname).cells(i,1).value= GetLocalDate(oRs.Fields(1).Value)
objExcelApp.Worksheets(sheetname).cells(i,2).value= oRs.Fields(2).Value
oRs.MoveNext
i=i+1
Loop
oRs.Close
Else
MsgBox "没有所需数据……"
Set oRs = Nothing
conn.Close
Set conn = Nothing
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp= Nothing
Exit Function
End If
'释放资源
'生成新的文件,关闭Excel
Dim patch,filename
filename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(Now))&CStr(Minute(Now))&CStr(Second(Now))
patch= "c:\elecRecord_"&filename&".xlsx"
objExcelApp.ActiveWorkbook.SaveAs patch
MsgBox "成功生成数据文件!"
End Function
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1372982&b_id=5&s_id=0&num=9
WinCC归档数据的时间是UTC时间,与北京时间相差8小时。查询前,系统当前时间要减去8小时。
用TRACE 或则msgbox把ssql和scon看一下对不对
s输出应该没问题啊,历史记录都查询到有数据,系统一直在跑的
好用了就行
正序排,我看着不用ASC也行~再慢慢试试吧
时间后面加毫秒试试
在这里帖一下,通过WinCC OLE DB的“TAG:R”查询归档的记录集数据结构:
另外,查询多个归档变量时,最大数目是20。就是说最多可以同时查询20个归档变量值。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录