搬家第五天-111.Wincc V7.3 TreeView 控件初步使用4-连接数据库显示数据表信息

前面的博客使用ListView显示过sql数据表,TreeView也可以实现这样的功能。在画面上放置一个TreeView控件,名字修改为TV,用于显示前面使用过的用户归档那一张表的内容,有一个项目模块GetSqlData就是前面博客介绍的那个全局脚本。在画面上增加一个按钮,在按钮的鼠标点击事件添加以下vbs脚本:

 

Sub OnClick(ByVal Item)                                                 
Dim TV,NodeIndex,Count,DateCount,DateText(),TimeText()
Dim Children1Count
Dim DBName,ssql,rs,ssql1,rs1
Dim RsCount,RsCount1
Dim NodeTxt
Dim i,j
Set TV=ScreenItems("TV")
TV.Nodes.Clear '先清空
TV.Style=6 '6.直线、+/-和文本;
TV.LineStyle =1
Set DBName=HMIRuntime.Tags("@DatasourceNameRT")
Set rs=Createobject("ADODB.RecordSet")
ssql="select Curdate from UA#UA Group by CurDate"
'获取记录集
getSqlData rs,DBName.Read ,ssql
RsCount=rs.RecordCount
'添加第一级节点,按照日期
Set NodeIndex=TV.Nodes.Add(,,"Class0","用户归档数据")
For i=1 To RsCount
  Set NodeIndex=TV.Nodes.Add("Class0",4,"Class" & CStr(i),Rs.Fields(0).value)
  NodeIndex.Sorted=True
  Rs.moveNext
Next
'获取所有的日期字符串,存入DateText数组
DateCount=0
count=TV.nodes.count
'统计日期型节点的数量
For i=1 To count
   If IsDate(TV.nodes.item(i).text) Then
    DateCount=DateCount+1
   End If
Next
'定义数组
Redim DateText(DateCount)
j=0
'把日期数据放到数组中
For i=1 To count
   If IsDate(TV.nodes.item(i).text) Then
    j=j+1
    DateText(j)=TV.nodes.item(i).text 
   End If
Next
'添加第二级节点,按照时间
For i=1 To DateCount
    ssql="select CurTime from UA#UA Where CurDate='" & CStr(DateText(i)) & "'"
    getSqlData rs,DBName.Read ,ssql
   RsCount=rs.RecordCount   
    Redim TimeText(RsCount)
    For j=1 To RsCount
      Set NodeIndex=TV.Nodes.Add("Class" & CStr(i),4,"Class" & CStr(i) & CStr(j),"时间:" & Rs.Fields(0).value)
      TimeText(j)=Rs.Fields(0).value
      NodeIndex.Sorted=False
      '插入第三级数据:流量1、流量2、流量3
      ssql1="select FT101,FT102,FT103 from UA#UA Where CurDate='" & DateText(i) & "' and CurTime='" & TimeText(j) & "'"
      getSqlData Rs1,DBName.Read ,ssql1      
      Set NodeIndex=TV.Nodes.Add("Class" & CStr(i) & CStr(j),4,"Class_" & CStr(i) & CStr(j) & "1","流量1:" & Rs1.Fields(0).value)
      NodeIndex.Sorted=False
      Set NodeIndex=TV.Nodes.Add("Class" & CStr(i) & CStr(j),4,"Class_" & CStr(i) & CStr(j) & "2","流量2:" & Rs1.Fields(1).value)
      NodeIndex.Sorted=False
      Set NodeIndex=TV.Nodes.Add("Class" & CStr(i) & CStr(j),4,"Class_" & CStr(i) & CStr(j) & "3","流量3:" & Rs1.Fields(2).value)
      NodeIndex.Sorted=False
      Rs.moveNext
   Next   
Next
End Sub

Sql表格数据如下:

运行后,TreeView是这个样子:

posted @ 2021-02-02 11:14  来自金沙江的小鱼  阅读(929)  评论(0编辑  收藏  举报