和wincc学习时一样,我想把access数据表中的内容写入msflexgrid控件,这一次联系CitectVBA方式。main画面上msflegrid控件编码是AN7,在access数据库myaccess有一个表table1,有这样的内容:
在编辑器中写入下面的代码:
Sub ConnAccessDB()
Dim conn As Object
Dim strcon As string
Dim ors As Object
Dim ocom As Object
Dim ssql As string
Dim i As Integer
Dim j As Integer
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Citect_OPC_Prj\ExcelTest\myaccess.mdb; Jet OLEDB:Database Password="
ssql="select * from table1"
Set conn=CreateObject("ADODB.Connection")
conn.connectionstring=strcon
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
main_AN7.clear
main_AN7.rows=ors.recordcount+1
main_AN7.cols=ors.fields.count+1
'以下代码初始化字段名
main_AN7.row=0
For j=0 To ors.fields.count-1
main_AN7.col=j+1
main_AN7.text=ors.fields(j).name
Next
'以下开始将ors数据逐项写入msflexgrid
Ors.movefirst
For i= 1 To Ors.recordcount
main_AN7.row=i
For j= 0 To ors.fields.count-1
main_AN7.col=j+1
main_AN7.text=ors.fields(j).value
Next
Ors.movenext
Next
Set ors=Nothing
conn.close
Set conn=Nothing
End Sub
前面连接数据库的代码和昨晚练习的一样,后面添加了写字段名和字段值的代码。我尝试把ors赋值给msflexgrid的datasource属性,但是不成功,才用了VBA循环语句逐个写数值的方式。
在按钮的鼠标点击事件中civba call ConnAccessDB()保存编译运行,点击按钮就能够把数据写入控件了。