用VB脚本做全局子程序打开数据库打开数据库
后不关,本项目任何窗体任何地方不需在建立数据库连接和打开数据库,只需要根据需要打开数据表,进行数据查询,最后在程序结束时再调子程序关闭数据库.
Public cn
Set cn=CreateObject("ADODB.connection")
Sub nection()
cn.open"Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=gjh;Initial Catalog=CC_dhny_08_06_23_13_04_14;Data Source=xnc\WINCC"
End Sub
Sub closedata()
cn.close
Set cn=Nothing
End Sub
奇怪不能实现全局?!!!
问题补充:
上面这段程序我是建在VB全局脚本项目模块内的
动全局脚本已启动,不是这个原因,TIC 谢谢你的回答但不是这个原因
最佳答案
Public的作用域是有限的,仅限于本画面,切换画面后就失效了。另外打开一个连接所花费的时间要远比执行SQL语句要短,没有必要做成所谓的全局。如果非要这么做,可以在画面的Open Picture中进行初始化,然后本画面的VBS就可以不声明而直接使用它了。
补充:我用DataSet测试了一下,可以实现全局。在起始画面Open Picture中初始化。
Sub OnOpen()
Dim conn,rs
Set conn = CreateObject("ADODB.Connection")
conn.open "Test"
Set rs=CreateObject("ADODB.Recordset")
HMIRuntime.DataSet.Add "conn",conn
HMIRuntime.DataSet.Add "rs",rs
End Sub
在任意画面都可以使用已经打开和创建conn及rs
Dim conn,rs,strSQL
Set conn=HMIRuntime.DataSet("conn").Value
Set rs=HMIRuntime.DataSet("rs").Value
strSQL="SELECT * FROM USERNAME"
rs.open strSQL,conn,1,1
rs.MoveFirst
MsgBox rs("Username")
rs.Close
提问者对于答案的评价:
谢谢!我已收到你的邮件,又多学了的东西
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc276925.html