WinCC笔记:02.MSHFlex控件 —— (4) 使用复选框选择显示字段

目录

一、从数据库中导出数据到MSHFlex控件

1.插入MSHFlex控件

2.插入复选框

3.在打开画面中写脚本

4.效果如下

二、根据复选框中内容进行选择

1.插入选择按钮

2.对按钮的单击事件编写脚本

3.效果如下


一、从数据库中导出数据到MSHFlex控件

1.插入MSHFlex控件

2.插入复选框

3.在打开画面中写脚本

Sub OnOpen()                                                                                                                                              
Dim Grid,row,checkbox,i
Dim conn,oRs1,oCom1,oRs2,oCom2
Set Grid=ScreenItems("Grid")
Set checkbox=ScreenItems("checkbox")
Set conn=Createobject("ADODB.Connection")
conn.Connectionstring="Driver={SQL Server};Server=WINCC\WINCC;database=GCS_WINCC;UID=;PWD=;"
conn.Cursorlocation=3
conn.open
Set oRs1=Createobject("ADODB.Recordset")
Set oCom1=Createobject("ADODB.Command")
oCom1.Commandtype=1
oCom1.Commandtext="select * from TagLog"
Set oCom1.Activeconnection=conn
Set oRs1=oCom1.execute
Set Grid.DataSource=oRs1

Set oRs2=Createobject("ADODB.Recordset")
Set oCom2=Createobject("ADODB.Command")
oCom2.Commandtype=1
oCom2.Commandtext="select name from syscolumns where id = object_id('TagLog')"  '查询表格中的字段
Set oCom2.Activeconnection=conn
Set oRs2=oCom2.execute
checkbox.BoxCount=oRs2.recordcount

With Grid
   .Colwidth(0)=100
   .Colwidth(2)=1600
   .Colwidth(4)=1000
   .Colwidth(5)=1000
   .Colwidth(6)=1000
   .Colwidth(7)=1000
   .Colwidth(9)=1600
   .Colwidth(10)=1600
End With

'以下将字段写入复选框
If Not oRs2.EOF Then
   oRs2.Movefirst
   Do While Not oRs2.EOF
      For i=1 To oRs2.recordcount 
         checkbox.Index=i
         checkbox.text=oRs2.fields(0).value
         oRs2.Movenext
      Next
   Loop
End If

Set oRs1=Nothing
Set oCom1=Nothing
Set oRs2=Nothing
Set oCom2=Nothing
conn.close
Set conn=Nothing


End Sub

4.效果如下

二、根据复选框中内容进行选择

1.插入选择按钮

2.对按钮的单击事件编写脚本

Sub OnClick(ByVal Item)                                                     
Dim checkbox,Grid,process,boxcount,i,index,fieldstring
Dim conn,oRs,oCom
Set Grid=ScreenItems("Grid")
Set checkbox=ScreenItems("checkbox")
process=checkbox.process   
'属性Process即可知道哪几个index被选中了,对应关系为1,2,4......2^(n-1);
'勾选第1个 process=1,勾选第1~第2个 process=1+2,勾选第1~第3个 process=1+2+4;勾选第5个 process=16......
boxcount=checkbox.BoxCount
For i=1 To checkbox.Boxcount
  If process Mod 2 =1 Then
    index=i
    checkbox.Index =index
    fieldstring=fieldstring & checkbox.text & ","
  End If
  process=process\2
Next
If fieldstring<> "" Then
   fieldstring=Left(fieldstring,Len(fieldstring)-1) '删除字符串最后的逗号
   
   Set conn=Createobject("ADODB.Connection")
   conn.Connectionstring="Driver={SQL Server};Server=WINCC\WINCC;database=GCS_WINCC;UID=;PWD=;"
   conn.Cursorlocation=3
   conn.open
   Set oRs=Createobject("ADODB.Recordset")
   Set oCom=Createobject("ADODB.Command")
   oCom.Commandtype=1
   oCom.Commandtext="select " & fieldstring & " from TagLog" 
   '查询表有哪些字段 这里注意select后面和from前面都有空格,不能遗漏!
   Set oCom.Activeconnection=conn
   Set oRs=oCom.execute
   Grid.DataSource=oRs
   Grid.Refresh
Else
   Msgbox "未勾选"
Set oRs=Nothing
End If
conn.close
Set conn=Nothing
End Sub

3.效果如下

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值