vb中对象变量或with块变量未设置?

PrivateSubcmdsearch_Click()rsdata.MoveFirstDoWhileNotradata.EFOIfLCase(rsdata.Fields(... Private Sub cmdsearch_Click()
rsdata.MoveFirst
Do While Not radata.EFO
If LCase(rsdata.Fields(0).Value) = LCase(txtsearchfor.Text) Then
txt单元名称.Text = rsdata.Fields(0).Value
txt具体位置.Text = rsdata.Fields(1).Value
txt生产物质.Text = rsdata.Fields(2).Value
txt所在单位.Text = rsdata.Fields(3).Value
txt联系电话.Text = rsdata.Fields(4).Value
Exit Sub
End If
radata.MoveNext
Loop
ibleditstatus.Caption = "没有这个单位!"
End Sub

附:之前建立的模块。
Public db As Database
Public rsdata As Recordset
Sub main()
Set db = OpenDatabase(App.Path & "\重大危险源928.mdb")
Set rsdata = db.openrecord("生产场所数据表")
frmMain.Show
End Sub

点击运行后,“rsdata.MoveFirst”那里就出现问题,“实时错误91,对象变量或with块变量未设置”
展开
 我来答
chinaboyzyq
推荐于2016-01-25 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3438万
展开全部
对象变量或 With 块变量没有设置(错误 91)

创建对象变量有两个步骤。第一,必须先声明对象变量。然后必须用 Set 语句将一个正确的引用赋值给对象变量。同样地,With...End With 块必须先用 With 语句进入点来执行初始化。此错误有以下的原因和解决方法:

试图使用的对象变量,还没有用一个正确对象的引用来赋值。
给对象变量指定或再指定一个引用。例如,如果在下列的代码中省略 Set 语句的话,那么引用 MyObject 将会产生错误:

Dim MyObject As Object ' 创建对象变量。
Set MyObject = Sheets(1) ' 创建一个正确的对象引用。
MyCount = MyObject.Count ' 计数值赋给 MyCount。

试图用的对象变量已经被设为 Nothing。
Set MyObject = Nothing ' 释放此对象。
MyCount = MyObject.Count ' 引用了已释放的对象。

再指定引用给对象变量。例如,使用新的 Set 语句给对象设置新的引用。

此对象是正确的对象,但没有被设置,因为在对象库中,在 “引用” 对话框中没有被选取。
在 “添加引用” 对话框选择对象库。

在 With 块内GoTo 语句的去向。
不要跳进 With 块。确保块使用 With 语句进入点以执行初始化。

当选了 “设置下一条语句” 命令时,在 With 块内指定了一行。
With 块必须用 With 语句执行初始化。
网海1书生
科技发烧友

推荐于2018-02-27 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12315 获赞数:26246

向TA提问 私信TA
展开全部
1、你要在工程属性中设置启动对象为Sub Main
2、你要在工程中引用DAO
3、Set rsdata = db.openrecord("生产场所数据表")
要改为:Set rsdata = db.OpenRecordset("生产场所数据表")
4、Do While Not radata.EFO
要改为:Do While Not rsdata.EOF
5、radata.MoveNext
要改为:rsdata.MoveNext

好多错误啊,按理都是很容易发现的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者lrTiJPeBWK
2019-06-23 · TA获得超过3756个赞
知道大有可为答主
回答量:3179
采纳率:25%
帮助的人:204万
展开全部
实时错误'91'对象变量或With块变量未设置
我从图书馆借来的书带的光盘上拷下来一个系统,但是这个系统不完善,没有用户管理,我就做了添加用户和密码修改两个窗体添加到系统里,但是运行不了,
我点添加读者种类那项,没问题,后来点修改读者种类就出来这个错误。
实时错误'91'对象变量或With块变量未设置
点调试光标停留在Do
While
Not
mrc.EOF
这是错误的代码
Private
Sub
ShowData()
Dim
i
As
Integer
Set
mrc
=
ExecuteSQL(txtSQL,
MsgText)
With
msgList
.Rows
=
1
Do
While
Not
mrc.EOF
.Rows
=
.Rows
1
For
i
=
1
To
mrc.Fields.Count
Select
Case
mrc.Fields(i
-
1).Type
Case
adDBDate
.TextMatrix(.Rows
-
1,
i)
=
Format(mrc.Fields(i
-
1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不只火五
2010-01-05 · TA获得超过2616个赞
知道小有建树答主
回答量:1989
采纳率:20%
帮助的人:990万
展开全部
你运行到这里的时候 rsData 是一个空的 对象
也就是
Set db = OpenDatabase(App.Path & "\重大危险源928.mdb")
Set rsdata = db.openrecord("生产场所数据表")
这两句根本就没执行过去 . 你没有错误处理
自己用断点抓一下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luckyant2008
2010-01-05
知道答主
回答量:12
采纳率:0%
帮助的人:8万
展开全部
第三句错了吧?EOF
另外,强烈不推荐用中文命名,总有莫名其妙的错误
同时再仔细检查表名和文件名。
最好在opendatabase和openrecord时捕捉下error
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式