回复:execel 宏vbs 通过 OLE DB读取WinCC V7.3变量归档记录

无此闲人

  • 帖子

    2
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2012-02-24

普通 普通 如何晋级?

发布于 2017-04-01 14:54:30

4楼

由于没有你的代码,查找了网上的教程脚本

 

'查询启止时间

    sStart = Year(DTPicker1.Value) & "-" & Month(DTPicker1.Value) & "-" & Day(DTPicker1.Value) & " " & Hour(DTPicker1.Value) & ":" & Minute(DTPicker1.Value) & ":" & Second(DTPicker1.Value)

     sStop = Year(DTPicker2.Value) & "-" & Month(DTPicker2.Value) & "-" & Day(DTPicker2.Value) & " " & Hour(DTPicker2.Value) & ":" & Minute(DTPicker2.Value) & ":" & Second(DTPicker2.Value)

'转为UTC时间

     sStart = DateAdd("h", -8, CDate(sStart))

      sStop = DateAdd("h", -8, CDate(sStop))


调试过程中发现:查询时间得到的变量sStart和sStop 输出值为2017-04-01 08:08:08,但在转换为UTC时间时sStart和sStop变量经过DateAdd函数转换后,输出值为2017/04/01 00:08:08,并且之后无法查询到变量值。但如果屏蔽转换步骤,直接输入修正后的查询时间仍然可以获得数据库中的变量值。


因此怀疑:在使用sSql = "Tag:R,('ProcessValueArchive\" & AAA & "'),'" & sStart & "','" & sStop & "' order by datetime"指令时由于时间样式不符合要求而不能正确查询。


通过尝试发现:更改区域和语言中的日期和时间格式为yyyy-mm-dd后(更改之前日期格式为yyyy/M/d),DateAdd函数转换后就可以输出正确的时间样式,进而可以查询到数据了。在这个更改之前也尝试了更改WinCC的显示语言,不确定是不是由于语言不同导致WinCC使用不同国家的日期时间样式对变量进行归档,对详细的数据库原理还是不太懂。


希望可以帮助到你哈。



评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32934条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。