加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

29.Wincc V7.3使用复选框和MSHFGrid定制表格显示字段

(2016-04-16 12:24:43)
标签:

wincc

vbs

复选框

定制mshfgrid字段

分类: 西门子软硬件

我们在显示数据表时,如果字段较多,有时候会希望能够让使用者自己选择显示/隐藏哪些字段,本文就介绍了利用复选框Checkbox和MSHFGrid控件事先这个功能。

一 准备工作

1.数据表准备

    假设SQL Server中有这样一张表格

29.Wincc <wbr>V7.3使用复选框和MSHFGrid定制表格显示字段

2. Wincc控件准备

在Wincc页面插入一个按钮,一个复选框,一个MSHFGrid控件,MSHFGrid控件默认不在控件列表,需要在ACtiveX添加/删除对话框勾选。复选框控件改名为checkbox,MSHFGrid控件改名为MSHFGrid。

29.Wincc <wbr>V7.3使用复选框和MSHFGrid定制表格显示字段

三 脚本

1. 页面打开初始化复选框控件

由于事先可能并不知道sql server表格中字段的名称数量,因此初始化复选框控件时候,需要连接数据表。

Sub OnOpen()

Dim checkbox
Dim conn,ssql,ors,scon,ocom,i
Dim PCName
PCName=HMIRuntime.Tags("@LocalMachineName").Read
scon="Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog =MyDB;Data Source = " &PCName & "\WINCC"
ssql="select name from syscolumns where id = object_id('ChartTable')" '查询表有哪些字段
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString=scon
conn.Cursorlocation=3
conn.open
Set ors=CreateObject("ADODB.RecordSet")
Set ocom=CreateObject("ADODB.Command")
ocom.commandtype=1
Set ocom.ActiveConnection=conn
ocom.CommandText=ssql
Set ors=ocom.Execute
ors.movefirst
Set checkbox=ScreenItems("checkbox")
checkbox.BoxCount  = ors.recordcount '让组合框的可选项数量与数据表记录数一样
For i=1 To ors.recordcount
  Checkbox.Index =i
  Checkbox.Text =ors.fields(0).value
  ors.movenext
Next

Set ors=Nothing
conn.close
Set conn=Nothing

End Sub

这个查询过程可能有点长,可以考虑在查询结束后,再把复选框的可见性设置为真。

2. 按钮点击的脚本

Sub OnClick(ByVal Item)          
Dim checkbox,MSHFGrid,fieldstring,process,boxcount
Dim i,index
Dim conn,ssql,ors,scon,ocom
Dim PCName
Set checkbox=ScreenItems("checkbox")
Set MSHFGrid=ScreenItems("MSHFGrid")
process=checkbox.process
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
fieldstring=Left(fieldstring,Len(fieldstring)-1)
'Msgbox "复选框勾选的是:" & fieldstring

PCName=HMIRuntime.Tags("@LocalMachineName").Read
scon="Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog =MyDB;Data Source = " &PCName & "\WINCC"
ssql="select " & fieldstring & " from ChartTable" '查询表有哪些字段
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString=scon
conn.Cursorlocation=3
conn.open
Set ors=CreateObject("ADODB.RecordSet")
Set ocom=CreateObject("ADODB.Command")
ocom.commandtype=1
Set ocom.ActiveConnection=conn
ocom.CommandText=ssql
Set ors=ocom.Execute
MSHFGrid.DataSource=ors
MSHFGrid.Refresh
MSHFGrid.colwidth(1)=2500
Set ors=Nothing
conn.close
Set conn=Nothing
End Sub

 

通过上述工作,我们在运行时,就可以选择哪些字段显示,哪些字段隐藏了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有