vb实时错误‘91’对象变量或WITH 块变量未设置问题

运行的时候录入了正确的名和密码后,在Ifmrc.EOF=TrueThen处,出现“实时错误‘91’对象变量或WITH块变量未设置”OptionExplicitPublic... 运行的时候录入了正确的名和密码后,在If mrc.EOF = True Then处,出现“实时错误‘91’对象变量或WITH 块变量未设置”

Option Explicit

Public OK As Boolean
'记录确定次数
Dim miCount As Integer

Private Sub cmdCancel_Click()
OK = False
Me.Hide
End Sub

Private Sub cmdOK_Click()
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
'ToDo: create test for correct password
'check for correct password

UserName = ""
If Trim(txtUserName.Text = "") Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
txtSQL = "select * from 管理员 where username = '" & txtUserName.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
' MsgBox MsgText
If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If

miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub
展开
 我来答
chinaboyzyq
2013-04-27 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3267万
展开全部
对象变量或 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 语句执行初始化。
zdingyun
推荐于2016-01-09 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48176
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

对象变量或 With 块变量没有设置(错误 91)

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

1.试图使用的对象变量,还没有用一个正确对象的引用来赋值。

给对象变量指定或再指定一个引用。例如,如果在下列的代码中省略 Set
语句的话,那么引用 MyObject 将会产生错误:

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

2.试图用的对象变量已经被设为 Nothing。

Set MyObject = Nothing    ' 释放此对象。
MyCount = MyObject.Count    ' 引用了已释放的对象。

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

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

在 “添加引用” 对话框选择对象库。

4.在 With 块内GoTo 语句的去向。

不要跳进 With 块。确保块使用 With
语句进入点以执行初始化。

5.当选了 “设置下一条语句” 命令时,在 With 块内指定了一行。

With 块必须用 With
语句执行初始化。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Null_bd
推荐于2017-12-15 · TA获得超过503个赞
知道大有可为答主
回答量:583
采纳率:0%
帮助的人:0
展开全部
这一句有问题,需要检查一下:Set mrc = ExecuteSQL(txtSQL, MsgText)
记录集未打开或已关闭或者没能正确传递出来
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kabc189
2009-05-12 · 超过28用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:56.6万
展开全部
Dim mrc As ADODB.Recordset
这句只是声明了这样的一个对象,没有为这个变量生成实体,没有分配内存空间
可以使用隐式声明
dim mrc as new adodb.recordset
或者显示声明
Dim mrc As ADODB.Record
Set mrc = New ADODB.Recordset
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式