用VB脚本做全局子程序打开数据库

用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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 下午12:47
下一篇 2019年6月11日 下午12:47

相关推荐