wincc用VBS读取变量归档数据到excel,根据Excel文档操作总显示“没有所需数据”

1、按照提供的“在WinCC中如何使用VBS读取报警记录数据到EXCEL.pdf“中的文档操作,运行结果总是提示没有所需数据;
2、后来我从下载中心下载了标准项目,里面有写好的代码,我修改了代码中的模版路径,但是仍然提示没有所需数据;
3、仔细检查了语法和连接及查询命令,实在找不到原因,还请大神们指导,不胜感激。。
Sub OnClick(Byval Item)                                                                                 
‘变量定义和初始化                                                                                                                                                                                                                                                                  
Dim sPro,sDsn,sSer,sCon,conn,sSql,oRs,oCom
Dim tagDSNName
Dim m,i
Dim objExcelApp,objExcelBook,objExcelSheet,sheetname
Dim MySqlStr
Set MySqlStr = HMIRuntime.Tags("MySqlStr")
item.Enabled = False
 On Error Resume Next 
 sheetname="Sheet1"
‘打开Excel模板
 Set objExcelApp = CreateObject("Excel.Application")
  ‘objExcelApp.Visible = False
  objExcelApp.Workbooks.Open "D:\WinCC\Mode.xlsx"
  objExcelApp.Worksheets(sheetname).Activate
  ‘准备查询条件 Catalog
 Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
  tagDSNName.Read 
‘创建数据库联接
 sPro = "Provider=WinCCOLEDBProvider.1;"
 sDsn = "Catalog=" &tagDSNName.Value& ";"
 sSer = "Data Source=YELZ\WinCC"
 sCon = sPro + sDsn + sSer
 Set conn = CreateObject("ADODB.Connection")
 Msgbox sCon
  conn.ConnectionString = sCon
  conn.CursorLocation = 3
  conn.Open
‘定义查询的命令文本 SQL
 MySqlStr.Read 
 sSql = "ALARMVIEW:Select * FROM AlgViewCHT "&MySqlStr.Value 
  MsgBox sSql
 HMIRuntime.Trace "Sql is: " & sSql & vbCrLf
 Set oRs = CreateObject("ADODB.Recordset")
 Set oCom = CreateObject("ADODB.Command")
  oCom.CommandType = 1
 Set oCom.ActiveConnection = conn
  oCom.CommandText = sSql
‘填充数据到Excel中
 Set oRs = oCom.Execute
  m = oRs.RecordCount
 If (m > 0) Then
     oRs.MoveFirst  
     i=3  
     Do While Not oRs.EOF                           ‘是否到记录末尾,循环填写表格   
         objExcelApp.Worksheets(sheetname).cells(i,1).value= CStr(oRs.Fields(0).Value)
          objExcelApp.Worksheets(sheetname).cells(i,2).value= CStr(oRs.Fields(1).Value)
         objExcelApp.Worksheets(sheetname).cells(i,3).value= CStr(oRs.Fields(2).Value) 
         objExcelApp.Worksheets(sheetname).cells(i,4).value= CStr(oRs.Fields(37).Value)

         oRs.MoveNext
         i=i+1
     Loop
     oRs.Close
 Else
     MsgBox "没有所需数据……"
     item.Enabled = True
     Set oRs = Nothing
  conn.Close
     Set conn = Nothing
     objExcelApp.Workbooks.Close
     objExcelApp.Quit
     Set objExcelApp= Nothing
     Exit Sub
 End If
‘释放资源 
 Set oRs = Nothing
  conn.Close
 Set conn = Nothing
‘生成新的文件,关闭Excel
Dim patch,filename
 filename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(Now))+CStr(Minute(Now))&CStr(Second(Now))
 patch= "d:\Record\"&filename&"demo.xlsx" 
 objExcelApp.ActiveWorkbook.SaveAs patch
 objExcelApp.Workbooks.Close
 objExcelApp.Quit
 Set objExcelApp= Nothing
 MsgBox "成功生成数据文件!"
 item.Enabled = True
End Sub

问题补充:
现在程序应该只运行到判断m值处,因为m等于0,所以提示没有数据!不知道是哪儿的原因!

图片说明:

wincc用VBS读取变量归档数据到excel,根据Excel文档操作总显示“没有所需数据”    wincc用VBS读取变量归档数据到excel,根据Excel文档操作总显示“没有所需数据”   

最佳答案

你这是查询报警记录。
第一步,先看看报警记录控件里产生了报警。
其次
问题出在查询语句上,也许是语言错误导致的没有数据。
sSql = "ALARMVIEW:Select * FROM AlgViewCHT "&MySqlStr.Value 
这一句,首先可以去掉后边的"&MySqlStr.Value ,他只是一个条件,先不添加条件,也许是条件错误。
再次,sSql = "ALARMVIEWEX:Select * FROM AlgViewEXENU ",好像是可以这样写的,因为中文字符的问题。
这两种方法都可以试试。
最后说一句。不要随便从网上找一个脚本就拿过来改,成功率很低的,官网的文档也都是人做的,也会出错。不要盲目信服。同一个脚本我能运行,你就报错,这种情况很常见。
2606352062欢迎交流。

提问者对于答案的评价:
换成英语报警消息归档数据后,解决。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc357040.html

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

相关推荐

  • WINCC换机问题

    我原来的WINCC画面装在一台19寸的电脑里,现在要改装在一台14寸的电脑里,WINCC画面哪里需要设置吗? 最佳答案 19寸的比14寸的显示器的分辨率高,如果你不改画面的话,画面…

    SIMATIC WinCC 2017年11月29日
  • 如何将趋势图关闭

    如何在趋势图上加一个类似于word右上角的关闭图标,点击之后关闭趋势图?谢谢! 专家建议 右键趋势控件选择属性,在“属性—控件属性”中找到“Closeable”属性,把…

    SIMATIC WinCC 2020年11月1日
  • wincc与300通信质量显示

    我要在界面上实时显示wincc与300通信状态,有没有相关的函数或变量可以反应通信质量。 最佳答案 连接状态一般是指通讯状态,代码为0时表示通讯正常,非0时就有问题,每一种可能的通…

    SIMATIC WinCC 2019年6月11日
  • wincc5.1画面问题

    从工控机上复制下来的wincc5.1画面文件,放到我的计算上。打开图形编辑器,画面中的静态文本,control和symbollibrary等不能显示出来,只是显示未知的对象 最佳答…

    SIMATIC WinCC 2019年6月11日
  • wincc 结构变量

    在wincc中利用一个画面控制若干个阀门电机,看到书上好多说在建立变量的时侯,"motor1.set",为什么我在实际操作的时候,中间小数点输入不上去呢?版本是…

    SIMATIC WinCC 2019年6月11日
  • 软件博途v14,硬件1515控制器配置web发布页面,求完整配置步骤!

    求高手解答博途软件的web发布制作步骤,使上位机wincc画面通过局域网在web浏览器正常显示为目的,求完整的文档或者视频,注:不要英文文档,谢谢! 最佳答案 WinCC&nbsp…

    SIMATIC WinCC 2020年11月1日
  • WINCC C脚本打不开

    我新到一个钢厂,厂子已经生产2年多了,这里的WINCC组态用了C脚本,主要是流量数据计算,现在领导要我修改流量记录曲线的显示比例,可是这个脚本已经加密码了,开始打开时提示要密码,可…

    SIMATIC WinCC 2019年6月11日
  • step7 5.4与v5.3区别

    请问STEP7 V5.3与V5.4啥区别? 我公司的S7-300plc用V5.4下的程序,我用V5.3读出后,cpu型号显示问号。是版本低的原因吗? …

    SIMATIC WinCC 2019年6月11日
  • 请教wincc flexible线条动画效果

    在画面上画一条平行线,线的左端头连接变量a,右端头连接变量b,左右端头随着变量a,b的变化沿着Y轴上下移动。假如说a变量值没有发生改变,b变量改变了,那么线的左端头不动,右端头在Y…

    SIMATIC WinCC 2018年12月9日
  • wincc 冗余读取组态数据时出错

    wincc新建项目后导航栏里,我右键单击冗余—打开,右侧提示“读取组态数据时出错”,难道是我们安装吗,,我安装的wincc7.0亚洲版,请问如何解决,我没有安装光盘,用…

    2018年12月9日

发表回复

登录后才能评论