wincc7.3与MYSQL_搬家第二天-29.Wincc V7.3使用复选框和MSHFGrid定制表格显示字段

本文介绍如何在Wincc V7.3中使用复选框和MSHFGrid控件来实现用户自定义显示MySQL表格的字段。通过在Wincc页面设置按钮、复选框和MSHFGrid,动态查询SQL Server表格字段并根据复选框状态决定显示哪些字段。
摘要由CSDN通过智能技术生成

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

一 准备工作

1.数据表准备

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

06b5150ff544f8d98752a3da5b7b551d.png

2. Wincc控件准备

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

d08a199ae10f8661de80c97ae0f05350.png

三 脚本

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值