各位好!
背景:安装了connectivity pack安装包,授权成功,显示->正在使用;
想通过Tag:R读取变量值到CSV文件;
现在是 能够读取输出 归档的表dbo.Archive中 value ID和 valueName,但是值一直为空,因为 objRecordset.RecordCount 监控发现=0,导致无法执行写入。为什么是空?
我用的是内部变量+变量仿真器做的啊,点控件的导出CSV还能看到数据在里面,用VBS为什么我失败了。
Set objConnection = CreateObject("ADODB.Connection")
objConnection.ConnectionString=strConnection
objConnection.CursorLocation=3
objConnection.Open
If Err.Number <> 0 Then
GiveOut("DB_Connection_Error: "& Hex(Err.Number)& vbCrLf &"Descr: "& Err.Description)
Else
On Error Goto 0 ' allow exception
'===== command DB command ==============
Set objRecordset = CreateObject("ADODB.Recordset")
Set objCommand = CreateObject("ADODB.Command")
objCommand.CommandType = 1
Set objCommand.ActiveConnection = objConnection
'======= query ==========================
ndat = arrOrder(3) 'arrOrder3/4是 UTC时间,确认过了,da
'dat1 = Year(ndat)&"-"&Right("0"&Month(ndat),2)&"-"&Right("0"&Day(ndat),2)&" "&Right("0"& Hour(ndat),2)":"&Right("0"&Minute(ndat),2)":"&Right("0"&Second(ndat),2)
dat1 = Year(ndat)&"-"&Right("0"&Month(ndat),2)&"-"&Right("0"&Day(ndat),2)&" "&FormatDateTime(ndat,vbLongTime)
ndat = arrOrder(4)
dat2 = Year(ndat)&"-"&Right("0"&Month(ndat),2)&"-"&Right("0"&Day(ndat),2)&" "&FormatDateTime(ndat,vbLongTime)
strSqlQuery = "TAG:R,"&trendvar&",'"&dat1&".000','"&dat2&".000'"
objCommand.CommandText = strSqlQuery
'======= Fill the recordset ===============
Set objRecordset = objCommand.Execute
If Err.Number <> 0 Then
If Err.Number = &H80040E19 Then
GiveOut("Melde keine Daten gefunden")
Ord_exportTaglogToFile = 3 'keine taglogging Daten gefunden
Else
GiveOut("Taglogging, DB_Command_Error: "& Hex(Err.Number)&_
vbCrLf &"Descr: "& Err.Description)
Ord_exportTaglogToFile = 4 'error db request
End If
End If
nCols = objRecordset.Fields.Count
nRows = objRecordset.RecordCount
If nRows <> 0 Then
......
以上是主要代码,关键是 recordcount=0.。。访问WINCC OLEDB语句没问题,因为我已经通过函数得到了CCProjectNameR--表dbo.archive中的 valueID和valueName,
DateAdd("h",-8,arrOrder(3))这些已经转为utc时间了。
问题补充:
trendvar 是 valueid, 我读出来后,用在for 循环的,这样就读出很多然后写入csv的。我和表对过ID,没有问题。测试发现是 recordset.execute之后,err.Number不等于0。。。。
现在很郁闷不知道错在哪
最佳答案
trendvar这个变量的内容是啥
关于读取归档可以参考:
http://mp.weixin.qq.com/mp/homepage?__biz=MzIwNTUyNTIwNg==&hid=4&sn=e1f84810a1c0f90d2a8829be52f126c2&scene=18#wechat_redirect
还有官方文档,介绍的很详细,稍微一改就可以:
在WinCC中如何使用VBS读取变量归档数据到EXCEL
https://support.industry.siemens.com/cs/cn/zh/view/77940055
通过VBS脚本在ListView控件中显示WinCC的变量记录
https://support.industry.siemens.com/cs/cn/zh/view/74932765
WinCC、Excel、VBA、脚本、连通性软件包
https://support.industry.siemens.com/cs/cn/zh/view/71676391
提问者对于答案的评价:
最后发现是 项目问题,我这个项目是7.0移植7.3的。解决方法我在技术论坛里面分享了
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc362813.html