你的程序最好增加二个自定义函数,把conn,Rs的加载与缷载单独出来。否则,你会发现程序运行越来越慢,内存占用越用越多。
比如说:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim ExlApp As Excel.Application
public sub CrOBJ()
set conn = new ADodb.connection
set rs = new adodb.recordset
set ExlApp = new Excel.Application
end sub
public sub killOBJ()
set conn = nothing
set rs = nothing
set ExlApp = nothing
end sub
第一个函数可以在Form_load()中加载而后一个函数可以在Form_unload()中加载。这样做的好处就是打开页面就调用,关闭页面就缷载。可以减小内存占用!
其实两句可用合而为一:Private cnn As New ADODB.Connection
一下是对set的解释:
Set 语句
语法:
Set objectvar = {[New] objectexpression | Nothing}
说明:
Dim、Private、Public、ReDim以及 Static 语句都只声明了引用对象的变量。在用 Set 语句将变量赋为特定对象之前,该变量并没有引用任何实际的对象。
下面的示例说明了如何使用 Dim 来声明 Form1 类型的数组。Form1 实际上还没有实例。然后使用 Set 将新创建的 Form1 的实例的引用赋给 myChildForms 变量。在 MDI 应用程序中可以使用这些代码来创建子窗体。
Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1
通常,当使用 Set 将一个对象引用赋给变量时,并不是为该变量创建该对象的一份副本,而是创建该对象的一个引用。可以有多个对象变量引用同一个对象。因为这些变量只是该对象的引用,而不是对象的副本,因此对该对象的任何改动都会反应到所有引用该对象的变量。不过,如果在 Set 语句中使用 New 关键字,那么实际上就会新建一个该对象的实例。
使用ADODB对象,要先引用:Microsoft ActiveX Data Objects 2.X Library
方法:
通过VB菜单:[工程] -- [引用] -- 勾选:Microsoft ActiveX Data Objects 2.X Library
其中:2.X 看具体计算机安装情况,尽量选版本高的。
然后在代码中使用ADODB对象有两个步骤:
1.连接到数据库文件
'创建一个 Connection 实例:
Dim conn As ADODB.Connection‘声明对象变量
Set conn = New ADODB.Connection‘对象实例化
Conn.Open = "PROVIDER=microsoft.jet.oledb.3.51persist security info =falsedata source=" & App.Path &“\数据库文件名.Mdb” &"Jet OLEDB:Database Password="‘连接到数据库文件
2.连接到数据表(Recordset集合的常用方法)
'创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,没必要这里使用New
Dim rs As ADODB.Recordset‘声明对象变量
Set rs = New ADODB.Recordset '新建一个实例
rs.Open "select * from 表名", conn1,3'使用 Open 方法打开数据库中的一个表
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)