目录
一、从数据库中导出数据到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