归档变量,查询值为空

各位好!
背景:安装了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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午12:32
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论