数据库查询

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

相关推荐

  • WINCC 手动卸载

    首先WINCC是安装在D盘,系统盘是C盘。后来WINCC卸载了,并且回复了以前的系统。   问题就是以前的系统里是安装了WINCC的,可是D盘里的卸载…

    SIMATIC WinCC 2019年6月11日
  • web navigator

    两台电脑配置固定ip地址直接连接已实验成功,现在想在局域网内实现是否可行?我们单位的局域网都是自动分配地址的。直接在IE键入ipconfig得来的地址打不开。但是可以互相ping通…

    SIMATIC WinCC 2019年6月11日
  • WinCC、Excel、VBA、脚本、连通性软件包?

    西门子有做个WinCC、Excel、VBA、脚本、连通性软件包的例子,也就是在EXCEL宏指令做日报表,现在测试通了,选择日期会有数据出来,关键是有两个问题:一是WINCC中变量数…

    2017年6月7日
  • 曲线与归档文件

    请教通过项目复制器复制的项目如何读取源WINCC项目的曲线和归档数据,先感谢了! 最佳答案 补充一点,除了将项目文件夹下的ArchiveManager目录全部拷贝过来,还需要将原项…

    SIMATIC WinCC 2019年6月11日
  • WINCC与三菱PLC通讯问题

    目前有个项目,上位机采用的是WINCC,PLC选的是三菱的,他们之间的通讯方式是如何实现的呢?有用过的前辈指点下吧 最佳答案 走OPC方式。 OPC服务器可以访问PLC,…

    SIMATIC WinCC 2019年6月11日
  • WINCC 中事件响应

    比如说当按钮按下我要让某个tag为1 我先新建一个按钮 然后再按钮属性中 events中进入press action然后出来direct&n…

    SIMATIC WinCC 2019年6月11日
  • wincc按钮颜色属性怎么定义

    我在wincc里做了开关,开的按钮要在按下去之后由原来的灰色变成绿色,怎么做?还有就是我在了一个显示灯,就是当一个变量大于设定值的时候会亮,怎么做,谢谢 最佳答案 1、按钮背景色-…

    SIMATIC WinCC 2017年11月23日
  • 如何将一个数组的中的数赋值给另一个数组

    求大神教教:wincc中,从OPC接收到的一组不确定具体个数的数据怎么样单个提出来给另一个数组处理(可能还要对数据的个数进行计算),因为我要把接收的数据的数据类型全转换成统一的形式…

    SIMATIC WinCC 2021年7月5日
  • 博途V11 添加硬件中没有PLC选择

    请教关于添加硬件中没有PLC选择,重新安装软件也不行,在项目视图的设备网络中也无法拖进去。这是软件设置问题吗?谢谢! 问题补充:图片补充 图片说明:    最佳…

    2017年12月1日
  • 求西门子KTP 700触摸屏编程软件

    求西门子KTP 700触摸屏编程软件 最佳答案 博图啊各版本官方下载地址:西门子官方资料大全 之 S7-1500 & TI…

    2021年7月5日