通过ConnectivityPack读取过程值归档

我在WinCC中写了段程序,代码如下:
 Sub OnClick(Byval Item)                                                                                                                                          

 Dim strcn
 Dim cn
 Dim is_SQL
 Dim com
 Dim com_SQL
 Dim rds

 Set cn = CreateObject ("ADODB.Connection")
 strcn = "Provider = WINCCOLEDBProvider.1; Catalog = CC_TEST_08_05_21_15_03_52R; Data Source = .\WINCC"
 cn.ConnectionString = strcn

 cn.open

 ‘com_SQL = "TAG:R,’ProcessValueArchive\AnalogTag’,’2008-07-08 01:00:00.000′,’0000-00-00 00:00:00.000’"
 com_SQL = "TAG:R,1,’0000-00-00 01:00:00.000′,’0000-00-00 00:00:00.000’"
 Set rds = CreateObject ("ADODB.Recordset") Set com = CreateObject ("ADODB.Command")
 com.ActiveConnection = strcn
 com.CommandText = com_SQL

 Set rds = com.Execute 

 Dim ListView1
 Dim Litem

 Set ListView1 = ScreenItems ("ListView1") 
 ListView1.ListItems.Clear ()
 ListView1.ColumnHeaders.Clear ()
 ListView1.GridLines = True
 ListView1.ColumnHeaders.Add , , CStr(rds.Fields(0).Name), 50 ListView1.ColumnHeaders.Add , , CStr(rds.Fields(1).Name), 50
 ListView1.ColumnHeaders.Add , , CStr(rds.Fields(2).Name), 50
 ListView1.ColumnHeaders.Add , , CStr(rds.Fields(3).Name), 50
 ListView1.ColumnHeaders.Add , , CStr(rds.Fields(4).Name), 50

 Set Litem = ListView1.ListItems.Add () ‘object.Add(index, key, text, icon, smallIcon) 
 Litem.Text = CStr(rds.EOF)
 Litem.SubItems (1) = CStr(rds.Fields(1).Value)
 End Sub

 运行后.EOF显示True,死活就是读不出那个过程值来,各位看看问题出在哪里?我一直没有找到问题。谢谢了!!

问题补充:
我能返回Name,但是返回不了Value。问题是,如果这个表存在,但是里面没有值的话,也是可以返回Name的。但是我又看不到那个表里面的实际内容,所以只能通过EOF来判断到底有没有数据被读上来。

最佳答案

你是不是没有设置数据库打开时的游标。导致指针到了最后一条记录上了。
  参考一下手册上提供的例子
  Example Script
  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
  ‘1.1 Make connection string for ADODB
  sPro = "Provider=WinCCOLEDBProvider.1;"
  sDsn = "Catalog=CC_OpenArch_03_05_27_14_11_46R;"
  sSer = "Data Source=.\WinCC"
  sCon = sPro + sDsn + sSer
  ‘ 1.2 Define command text in sSql (relative time)
  sSql = "TAG:R,’PVArchive\Tag1′,’0000-00-00 00:10:00.000′,’0000-00-00
  00:00:00.000’"
  ‘sSql = "TAG:R,1,’0000-00-00 00:10:00.000’,’0000-00-00 00:00:00.000’"
  MsgBox "Open with:" & vbCr & sCon & vbCr & sSql & vbCr
  ‘ 2.1 Make connection
  Set conn = CreateObject("ADODB.Connection")
  conn.ConnectionString = sCon
  conn.CursorLocation = 3
  conn.Open
  ‘ 2.2 Use command text for query
  Set oRs = CreateObject("ADODB.Recordset")
  Set oCom = CreateObject("ADODB.Command")
  oCom.CommandType = 1
  Set oCom.ActiveConnection = conn
  oCom.CommandText = sSql
  ‘ 2.3 Fill the recordset
  Set oRs = oCom.Execute
  m = oRs.Fields.Count
  ‘ 3.0 Fill standard listview object with recordset
  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

提问者对于答案的评价:
说的不错,就是没有设置游标属性,谢谢回答!

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

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

相关推荐

  • wincc 历史趋势

    wincc里历史曲线 怎么做成和INTOUCH里的一样  点击不同的按钮 在同一画面出现不的变量趋势阿 最佳答案 可以通过脚本的方式,首先将…

    SIMATIC WinCC 2019年6月11日
  • 学习WINCC时遇到的几个问题

    因为项目需要,小弟最近刚接触WINCC,在书的时候遇到几个问题,想请各位老师给与解答1.变量的归档和报警记录的归档的数据都存储在哪了?是存储在WINCC自带的SQL2000里面了吗…

    SIMATIC WinCC 2019年6月11日
  • wincc 用C语言控制控件

    请教:wincc 用C语言控制List控件。我是想在一个List控件中填加加元素。用VBS很好做。可是用C脚本如何做? 最佳答案 #define GetObje…

    SIMATIC WinCC 2019年6月11日
  • 装完WINCC重启后,开不了机

    我的笔记本在装完WINCC重启后,开不了机,点“确定”后出现“加载个人……….",   "正在…

    SIMATIC WinCC 2019年6月11日
  • 无法运行WINCC

    双击WINCC图标时,出现一个对话框“WINCCEXPLORER.EXE-无法找到入口” 无法定位程序输入点CcGetFirstLevelProviderByName&n…

    SIMATIC WinCC 2019年6月11日
  • 热键禁止后5.1的运行最小化

    5.1的WCC运行画面最小化怎么搞啊,这里的答案用在6.0是很好用,明白人支持一下,谢谢大哥了。要不在按钮上调用ALT+ESC也行啊 问题补充:要不在按钮上调用ALT+ESC也行啊…

    SIMATIC WinCC 2019年6月11日
  • Wincc软件打不开

    我的Wincc软件打开后关闭,再打开就不行了,要电脑重启后才能打开,请问怎么解决啊 最佳答案 1.重装WINCC 2.重装不行的话,你只能电脑系统重装,再重装WINCC …

    SIMATIC WinCC 2019年6月11日
  • plc与组态软件,如何用个标志位来表示2者通讯成功

    plc与组态软件,如何用个标志位来表示2者通讯成功比如WINCC上引用PLC200SMART/1200/300中哪个特殊点来表示成功或失败。通信可能为DP,NET,MODBUS等等…

    SIMATIC WinCC 2021年7月5日
  • wincc报警记录 状态文本疑问

    请问大家,wincc报警记录在有报警时会输出一条报警“已进入”状态的消息,当报警消失后会显示“已离开”状态的消息,但有时会出现“已进入和已离开”状态的消息,这个“已进入和已离开”状…

    2021年7月5日
  • wincc6.0 图片不能编辑,每次点击都弹出警告,如图

    打开原来的项目,进入到图行编辑画面,点击后弹出窗口,如图所示。以前好像也有,但是确认过后就不会再弹出来。现在是重启后还是如此,求解决 图片说明:    最佳答案…

    2019年6月10日