VB连接数据库时说“对象变量或with块变量未设置”

VB连接数据库时说“对象变量或with块变量未设置”,第1张

你的rs只是定义了一个记录集,但并没有把任何记录集赋于它,所以才会出现这样的错误。

你的程序最好增加二个自定义函数,把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 方法打开数据库中的一个表


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9973911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存