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日 下午1:43
下一篇 2019年6月11日 下午1:43

相关推荐

  • WINCC V6.2 的内外部变量名称可以为中文么

    WINCC V6.2 的内外部变量名称可以为中文么? 最佳答案 中文版WinCC支持中文变量名,但我还是建议你不要使用中文变量名。一个原因是输入名称时麻烦,另一…

    SIMATIC WinCC 2018年3月6日
  • wincc7.4报警器没声音?

    用布尔型变量来触发报警器,第一次激活系统,报警器可以正常发出声音,可是退出系统后,什么也没更改,在激活系统,报警器就没有声音发出了。重启电脑,在进入系统又可以报警了,可是在退出系统…

    SIMATIC WinCC 2020年11月1日
  • C脚本解读

    我写了下面脚本,不过还有一个警告,请专家帮忙改改,谢谢! #include "apdefap.h" int gscAct…

    SIMATIC WinCC 2019年6月11日
  • sqlncli不能安装

    想试下(集成SP2的上海市*版免激活XP)这个系统,在VM安装好后安装sqlncli时提示“无法通过windows installer服务安装此安全程序包,您必须安装带有…

    SIMATIC WinCC 2019年6月11日
  • windows10 能安装step 7 v5.5 和wincc fexible 么

    windows10 能安装step 7 v5.5 和wincc fexible 么 钻石用户推荐最佳答案 windows…

    2020年11月1日
  • Wincc7.2,用户归档控件显示没有连接?

    Wincc7.2,用户归档控件显示没有连接?已经安装了授权。授权检查显示:OK:   1license key(s)Used:0 …

    SIMATIC WinCC 2021年7月5日
  • WINCC screen.pdl起始画面修改问题

    如图,screen画面为起始画面 ,我另存了一份screen11画面想自己编辑一个起始画面,但是screen11为起始画面运行起来后导航栏按钮点了后没有反应弹不出画面,请…

    2021年7月5日
  • 请问ktp900触摸屏怎么储存数据在内存里

    读取plc变量,将数据储存起来,触摸屏增加搜索栏搜索查看数据,请问能实现吗 最佳答案 KTP900触摸屏可以组态历史数据,不过需要插U盘,且历史数据只能以曲线的方式显示,无法以表格…

    SIMATIC WinCC 2021年7月5日
  • WINCC 变量归档疑问

    利用WINCC 采集一个速度和4个压力信号,做了变量归档,采用在线趋势控件进行曲线显示。在调试过程中发现四个压力信号在WINCC关闭时也在进行记录。而速度信号在WINCC…

    SIMATIC WinCC 2017年12月9日
  • WINCC7.2移植7.3失败

    wincc7.2移植到7.3版本时出现  运行系统数据库的移植失败,这个要这么解决啊?求大神指点!!! 图片说明:    最佳答案 你直接用…

    2020年11月1日