vb 运行时出现3704错误 对象关闭时不允许操作 30

OptionExplicitPublicOKAsBoolean'记录确定次数DimmiCountAsIntegerPrivateSubcmdCancel_Click()O... 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 New ADODB.Recordset
Dim MsgText As String
Set mrc = New ADODB.Recordset

'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
If mrc.EOF = True Then 这句变黄
展开
 我来答
无纸之图
2012-05-19 · 超过17用户采纳过TA的回答
知道答主
回答量:57
采纳率:100%
帮助的人:24.7万
展开全部
你好,我说几句,希望帮到你。
在 If mrc.EOF = True Then 这句变黄,说明 ExecuteSQL 的子函数已经存在。
能够通过 ExecuteSQL 这个函数,可以说数据库也连接了。
If mrc.EOF = True Then ‘ 就是 这里出问题
主要是数据查询时未能得到记录集 mrc,没有记录集何来 EOF。
建议
把 If mrc.EOF = True Then
改为 If mrc= Nothing Then
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ba88284
推荐于2018-03-26 · TA获得超过1521个赞
知道大有可为答主
回答量:1822
采纳率:73%
帮助的人:575万
展开全部
我还是把这儿给你吧
Function OpenTable(ByVal txtPath As String) '【功能:建立数据库连接;状态:完成】
Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & txtPath & ";"
Set res = New ADODB.Recordset
End Function
Function CloseTable() '【功能:关闭数据库连接;状态:完成】
conn.Close
End Function
你连连接都没有建立,当然会有问题,qq656972278
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zx001z7d53
2012-05-11 · TA获得超过2万个赞
知道大有可为答主
回答量:2.4万
采纳率:52%
帮助的人:5620万
展开全部
If mrc.EOF = True Then
改为
If mrc.RecordCount = 0 Then 试试
更多追问追答
追问
我这样改了,但运行后出现 "编译错误,未找到方法或数据成员"
追答
RecordCount 属性 (ADO)

指示 Recordset 对象中记录的当前数目。

返回值

返回长整型值。

说明

使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。

如果 Recordset 对象支持近似定位或书签(即 Supports (adApproxPosition) 或 Supports (adBookmark) 各自返回 True),不管是否完全填充该值,该值将为 Recordset 中记录的精确数目。如果 Recordset 对象不支持近似定位,该属性可能由于必须对所有记录进行检索和计数以返回精确 RecordCount 值而严重消耗资源。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式