VB访问WINCC过程值归档数据库

VB连接WINCC数据库,运行提示无效的类别字符串,以下是代码,大家帮忙看看是哪里的问题:
 Dim sPro As String
 Dim sDsn As String
 Dim sSer As String
 Dim sCon As String
 Dim sSql As String
 Dim conn As Object
 Dim oRs As Object
 Dim oCom As Object
 Dim oItem As ListItem
 Dim m, n, s

 ''#为ADODB创建connection string
 sPro = "Provider = WinCCOLEDBProvider.1;"
 sDsn = "Catalog = CC_test_08_01_20_22_27_54R;"
 sSer = "Data Source = .\WinCC"
 sCon = sPro + sDsn + sSer

 ''#在sSql定义命令文本(相对时间)
 sSql = "TAG:R,''PVArchive1\Tag1'',''0000-00-00 00:00:00.000'',''0000-00-00 00:00:00.000''"
 ''sSql = "TAG:R,1,''0000-00-00 00:00:00.000'',''0000-00-01 00:00:00.000''"
 MsgBox "Open with:" & vbCr & sCon & vbCr & sSq1 & vbCr

 ''#建立连接
 Set conn = CreateObject("ADODB.Connection")
 conn.ConnectionString = sCon
 conn.CursorLocation = 3
 conn.Open

 ''#使用命令文本进行查询
 Set oRs = CreateObject("ADODB.RecordSet")
 Set oCom = CreateObject("ADODB.Command")
 oCom.CommandType = 1
 Set oCom.ActiveConnection = conn
 oCom.CommandText = sSql

 ''#填充记录集
 Set oRs = oCom.execute
 m = oRs.Fields.Count

 ''#用记录集填充标准listview对象
 ListView1.ColumnHeaders.Clear
 ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(1).Name), 140
 ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(2).Name), 70
 ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(3).Name), 70
 If (m > 0) Then
 oRs.MoveFirst
 n = 0
 Do While Not oRs.EOF
 n = n + 1
 s = Left(CStr(oRs.Fields(1).Value), 23)
 Set oItem = ListView1.ListItems.Add()
 oItem.Text = Left(CStr(oRs.Fields(1).Value), 23)
 oItem.SubItems(1) = FormatNumber(oRs.Fields(2).Value, 4)
 oItem.SubItems(2) = Hex(oRs.Fields(3).Value)
 If (n > 1000) Then Exit Do
 oRs.MoveNext
 Loop
 oRs.Close
 Else
 End If
 Set oRs = Nothing
 conn.Close
 Set conn = Nothing

问题补充:
============Provider============
  Application : PDLRT
  Picture  : NewPdl0.pdl_Events
  Function  : Sub 按钮1
  Line  : 1
  Error  : 无效的类别字符串
  ============Provider============

 谢谢城外之人,谢谢大家,代码中是单引号,但不知道为什么贴上来就变成双引号了,连注释部分都自动变化了

最佳答案

你这段代码应该是WINCC的一个按钮事件的VBS脚本吧。是看到你的问题补充得出的结论,这段代码是纯VB代码,而WINCC的vb是VBS,只是VBA的一个子集,他不支持Dim sPro As String这样的定义,应该写成这样Dim sPro 

 还有:
 sDsn = "Catalog = CC_test_08_01_20_22_27_54R;"
  这句话要和你的wincc的RT数据库一致
 如果我写的话就不用OLEDB了直接这么写sDsn="PROVIDER=MSDASQL;dsn=CC_test_08_01_20_22_27_54R;uid=;pwd=;"

 然后你只是处理了读数据的操作,直接用Connection的EXECUTE方法就可以了,不用再打开Command和RecordSet对象了,这样对系统的开销要小一点。

提问者对于答案的评价:
谢谢!!!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • 谁给写个c动作

    wincc全局数据库c动作,想写一个动作,一个变量大于一个值后,延时5秒钟,让一个二进制变量动作,试了两次,总是编译不过去,求助。 问题补充:最好给我写一个,变量a大于50后,延时…

    2020年11月1日
  • 寻找MP277程序案例

    哪位大侠有MP277的程序案例,或者别的型号的也行,发一份给小弟学学。以前没有接触过西门子的屏,现在想学学,已备不时之需。    &nbsp…

    SIMATIC WinCC 2019年6月11日
  • wincc web发布显示

    现在客户机分辨率为1600X1200运行wincc能全屏显示但是用浏览器登陆时在浏览器中就不能全屏显示 画面 需要拖动滚动条(该登陆浏览器的电脑分辨率设置160…

    2021年7月5日
  • wincc7.3/7.3se/7.4安装包

    请求wincc7.3,wincc7.3se,wincc7.4安装包,谢谢 最佳答案 请见技术论坛RENHQ版主的资料大全 参考资料:http://www.ad.siemens.co…

    SIMATIC WinCC 2020年11月1日
  • wincc 5.X中如何用C脚本改变图形颜色?

    我单位wincc版本为5.X(是5.0还是5.2我忘了)。有一个点DB3.DBX12.0代表某台风机的运行状态。运行时为1,停止为0。wincc里对应的变量为“fengji2.ru…

    SIMATIC WinCC 2017年12月9日
  • wincc 脚本调试用啥窗口

    我用wincc 7.4调试程序,在vbs 调试用 那个脚本调试窗口,但报错一般提示都很简单,比方说逗号问题,也不知道提示哪行的逗号,不好排查问题,除了…

    SIMATIC WinCC 2020年11月1日
  • WinCC脚本问题

    在WinCC中,我想读取一个文本文件的内容,然后加到画面上的组合框里面。 我现在能在C脚本中读取文件,也能在VB里面往组合框里添加选项,但是还是没有办法实现以上功能,想问…

    SIMATIC WinCC 2019年6月11日
  • 究竟WINCC与第三方支持Profibus-DP的控制器进行通信时要不要走OPC方式?

    第三方的PLC或其它带DP通信功能的控制仪表通信时,是可以直接通信吗?还是需要走OPC服务器方式通信?我想得出的结论是:凡是所有的设备带DP通信功能,与咱们的WINCC通信都是可以…

    SIMATIC WinCC 2017年11月23日
  • 各位师傅能否帮我看下这是怎么回事?

    wincc在运行过程中出现这个画面,在激活的时候出现另一个画面是什么原因造成的呢 希望师傅指点 图片说明:       最佳答案 …

    2021年7月5日
  • 西门子下载中心网页无法登录

    现在scout tia 5.3安装包时,网站提示用户登录,修改密码后还是无法登录,要么密码不正确,要么是登录页面,要求输入登录名和密码,无法下载软件安装包 问题…

    2020年11月1日