数据库查询

Sub OnClick(ByVal Item)
  Dim sPro, sDsn, sSer,sCon, sSql
  Dim sVid, sStart, sStop, sVal,lRet,dVal, dGT
  Dim conn, oRs, oCom, oList, oItem
  Dim m,n,s, DSNName
  Dim objIOMinuten, objIOWert
  Set DSNName = HMIRuntime.Tags("ProjectDSN")
  ' 0.0 Get parameters from picture
  DSNName.Read 
  HMIRuntime.Trace "Value DSNName: " & DSNName.Read & vbCrLf
  sDsn = DSNName.Value
  HMIRuntime.Trace "Value DSNName.Value: " & sDsn & vbCrLf
  'sVid = CStr(13)
  sVid = CStr(106)'104 = ID of Archive\Achive variable "T01" 
     Set objIOMinuten = ScreenItems("Minuten")
  sStart=objIOMinuten.OutputValue
  sStop = "0000-00-00 00:00:00.000"
  Set objIOWert = ScreenItems("Wert")
  sVal  = objIOWert.OutputValue
  '"Provider=WinCCOLEDBProvider.1;Catalog=CC_V6_Demo3_03_02_04_16_19_15R;Data Source=.\WinCC"
  sPro = "Provider=WinCCOLEDBProvider.1;"
  sDsn = "Catalog=" & sDsn & ";"
  sSer = "Data Source=.\WinCC"
  sCon = sPro & sDsn & sSer
  'Trace mit Ausgabe in GlobalSkriptDiagnose-Fenster
  HMIRuntime.Trace "sCon: " & sCon & vbCrLf
  sSql = "Tag:R," & sVid & ",'0000-00-00 00:" & sStart & ":00.000','" & sStop & "'"

     lRet = MsgBox("Opened with " & vbCr & sCon & vbCr & sSql & vbCr & sVal, vbOKCancel)
 '    If lRet <> 1 Then Exit Sub

     'Trace mit Ausgabe in GlobalSkriptDiagnose-Fenster
     HMIRuntime.Trace "sSql: " & sSql & vbCrLf
      ' 2.1 Make connection
     Set conn = CreateObject("ADODB.Connection")
     conn.ConnectionString = sCon
     
     'Trace mit Ausgabe in GlobalSkriptDiagnose-Fenster
     HMIRuntime.Trace "conn.ConnectionString: " & conn.ConnectionString & vbCrLf
     
     conn.CursorLocation = 3 'adUseClient original'
     conn.Open
     
  ' 2.2 Use command text for query
     Set oRs = CreateObject("ADODB.Recordset")
     Set oCom = CreateObject("ADODB.Command")
     
     ' adCmdText  = 1
     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
     Set oList = ScreenItems("ListTable")
     oList.ListItems.Clear
     If(m>0) Then
      oRs.MoveFirst
      n = 0
      dGT = CDbl(sVal)
      Do While Not oRs.EOF
          n = n + 1
          dVal = oRs.Fields(2).Value
          If dVal > dGT  Then 
           s = Left(CStr(oRs.Fields(1).Value), 23)
           Set oItem = oList.ListItems.Add()
              oItem.Text = Left(CStr(oRs.Fields(1).Value), 23)
              oItem.SubItems(1) = FormatNumber(dVal, 4)
              oItem.SubItems(2) = Hex(oRs.Fields(4).Value)
             End If
             If (n > 100) Then Exit Do       
          oRs.MoveNext
      Loop
      oRs.Close
     Else
      
     End If
     Set oRs = Nothing
     Set conn = Nothing
  

 End Sub
 这是一段连接查询数据库到listview控件中的脚本,请问其中 Tags("ProjectDSN")是什么参数?要查询的变量不是T01吗?  另外想问下如何判断归档中的变量的ID号,例如:CStr(106)'104 = ID of Archive\Achive variable "T01"
 106从哪里读出的?
 希望高手帮帮忙

最佳答案

ProjectDSN应该是一个文本型的变量,保存的是本项目的运行数据库DSN名称,就是类似CC_V6_Demo3_03_02_04_16_19_15R的东西。

 归档变量的ID号需要通过SQL SERVER来获得。打开SQL Server Enterprise Manager,找到项目运行数据库(类似CC_V6_Demo3_03_02_04_16_19_15R),找到表格Archive,并通过Open Table->Return All Rows打开表格,找到对应的VALUE ID既是。

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

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

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

相关推荐

  • 写VBS脚本,为什么Write功能没有用?

    Option ExplicitFunction actionDim objTag,valSet objTag=HMIRuntime.Tags…

    SIMATIC WinCC 2021年7月5日
  • STEP 7-MicroWIN SMART通信中的网络接口卡消失了

    电脑上装的有STEP 7-MicroWIN SMART V2.2、S7-200 PC Access SMART、WINC…

    SIMATIC WinCC 2021年7月5日
  • 报警栏内出现乱码

    在新建的wincc项目中,当添加报警记录时,在报警栏中所有的汉字变成了乱码。另外,在历史曲线中同样如此。请问,是什么导致的乱码出现?该如何设置?谢谢! 问题补充:麻烦大家说详细一点…

    SIMATIC WinCC 2019年6月11日
  • C脚本有没有单独调试的工具

    WinCC 脚本诊断系列 – 如何快速诊断 WinCC 脚本错误 课程编号:V2746 您在使用WinCC时遇到脚本错误该如何应…. 点击这里,打开新窗口观看完整视频 该视频下…

    2021年7月5日
  • 如何在打开wincc画面的时候给变量赋值

    wincc中有一个画面,放置一个io域框,数据类型位8位文本,放置一个文本列表框,数据类型为8位文本  如何在打开画面的时候给io域和文本列表赋初始值 最佳答案…

    SIMATIC WinCC 2019年6月11日
  • wincc运行变慢

    wincc运行一个月左右,就出现电脑卡机现象,重新开机就好了,请问大侠这个现象碰到过没,怎么解决 最佳答案 系统存的报警记录太多,wincc项目太大,还有就是系统本身的一些系统垃圾…

    SIMATIC WinCC 2017年12月7日
  • wincc怎么实现两个页面不停的反复切换

    我的工程现在1个页面放不下了,需要2个页面来存放画面和数据。因为我需要实时的关注页面中的场景,手动切换太麻烦了,想搞一个自动的2页面来回切换,这样人做椅子上只有看就可以了 钻石用户…

    SIMATIC WinCC 2021年7月5日
  • 触摸屏与控件问题

    wincc  flexible打开报以下两个错误如何解决是什么问题 图片说明:       最佳答案 检查一下兼容性吧,…

    2020年11月1日
  • 报警声音集中确认问题

    操作室中一共有三台操作员站,三台操作员站的画面和程序都是一模一样的,我做了一个HORN编辑的声音报警,现在只有一个音响,连在了一台电脑上,报警一响,只有连接音响的那台电脑能确认声音…

    SIMATIC WinCC 2019年6月11日
  • MP277问题sd卡

    10分钟一次,30个变量,保存一个月不知道要多大的卡。我在电脑里仿真数据能保存,表格数据和屏数据一样。用佳能相机里的SD卡,第一次插入数据只能产生一EXCEL表格文件,里面是空的,…

    SIMATIC WinCC 2019年6月11日