大家好,我的系统在登入时变出现91错误(对象变量或with变量未设置)
请大家帮我看看是怎么回事,如何修改谢谢了。
Dim msg As String
Dim SQL As String
Private Sub CmdOK_Click()
Dim rst As ADODB.Recordset
Dim password As String
'判断密码是否正确
Sys_UserID = Trim(txtUserId.Text)
SQL = " select userID,password from 用户信息表 where userID='" & Sys_UserID & "'"
Set rst = SelectSQL(SQL, msg)
If rst.RecordCount > 0 Then '如果存在该用户
password = Trim(rst.Fields(1))
rst.Close
Else
If InsertUserInfo Then '如果输入的是读者号,且用户是第一次登陆
MsgBox ("欢迎读者使用,请你修改密码!")
Else
MsgBox ("用户ID或密码错误!")
End If
Exit Sub
End If
If password = Trim(txtPassword.Text) Then
Sys_LoginSucceeded = True
LibInfoSerSys.Show
Unload Me
Else
MsgBox ("密码错误!")
Sys_LoginSucceeded = False
End If
End Sub
Private Function InsertUserInfo() As Boolean
'如果输入的是读者号,且用户是第一次登陆,自动添加到用户列表
'返回true,如果不是读者号,返回false
Dim rst As ADODB.Recordset
SQL = " select * from 读者信息表 where readerID='" & Sys_UserID & "'"
Set rst = SelectSQL(SQL, msg)
If rst.RecordCount > 0 Then '如果存在该读者
SQL = "insert into" & _
"用户信息表(userID,userName,userType,password,competence,identificationU,addressU,telephoneU,emailU) "
SQL = SQL & " select readerID,readerName, userType,"
SQL = SQL & " '借书管理 : 还书管理 : 检索统计 :' as competence,identificationU,addressU,telephoneU,emailU "
SQL = SQL & " from 用户信息表 where readerID='" & Sys_UserID & "'"
Call ExecuteSQL(SQL, msg)
InsertUserInfo = True
Else
InsertUserInfo = False
End If
rst.Close
End Function点击调试后问题出在 If rst.RecordCount > 0 Then '如果存在该用户 这一句
我曾经尝试过将
Dim rst As ADODB.Recordset
改为 Dim rst As new ADODB.Recordset
但出现了 (3704)对象关闭时,不允许操作 的错误
实在不理解是什么原因
恳请各位高手指导指教
请大家帮我看看是怎么回事,如何修改谢谢了。
Dim msg As String
Dim SQL As String
Private Sub CmdOK_Click()
Dim rst As ADODB.Recordset
Dim password As String
'判断密码是否正确
Sys_UserID = Trim(txtUserId.Text)
SQL = " select userID,password from 用户信息表 where userID='" & Sys_UserID & "'"
Set rst = SelectSQL(SQL, msg)
If rst.RecordCount > 0 Then '如果存在该用户
password = Trim(rst.Fields(1))
rst.Close
Else
If InsertUserInfo Then '如果输入的是读者号,且用户是第一次登陆
MsgBox ("欢迎读者使用,请你修改密码!")
Else
MsgBox ("用户ID或密码错误!")
End If
Exit Sub
End If
If password = Trim(txtPassword.Text) Then
Sys_LoginSucceeded = True
LibInfoSerSys.Show
Unload Me
Else
MsgBox ("密码错误!")
Sys_LoginSucceeded = False
End If
End Sub
Private Function InsertUserInfo() As Boolean
'如果输入的是读者号,且用户是第一次登陆,自动添加到用户列表
'返回true,如果不是读者号,返回false
Dim rst As ADODB.Recordset
SQL = " select * from 读者信息表 where readerID='" & Sys_UserID & "'"
Set rst = SelectSQL(SQL, msg)
If rst.RecordCount > 0 Then '如果存在该读者
SQL = "insert into" & _
"用户信息表(userID,userName,userType,password,competence,identificationU,addressU,telephoneU,emailU) "
SQL = SQL & " select readerID,readerName, userType,"
SQL = SQL & " '借书管理 : 还书管理 : 检索统计 :' as competence,identificationU,addressU,telephoneU,emailU "
SQL = SQL & " from 用户信息表 where readerID='" & Sys_UserID & "'"
Call ExecuteSQL(SQL, msg)
InsertUserInfo = True
Else
InsertUserInfo = False
End If
rst.Close
End Function点击调试后问题出在 If rst.RecordCount > 0 Then '如果存在该用户 这一句
我曾经尝试过将
Dim rst As ADODB.Recordset
改为 Dim rst As new ADODB.Recordset
但出现了 (3704)对象关闭时,不允许操作 的错误
实在不理解是什么原因
恳请各位高手指导指教
new代表实例化,没有加这个,所以代码出现了91的错误2,并没有看见SelectSQL这个函数,所以无法判断过程,实际,一个简单的rs.open select语句就可以了,并不需要用一个专门的函数去处理.
3,用了中文去处理sql表名,要避免
4,声明是dim strsql as string,但是下面却变成了sql="select ...."但出现了 (3704)对象关闭时,不允许操作 的错误
//这个问题就更简单了,当然由于你的selectsql这个函数并没有帖出来,所以没办法知道你自己怎么处理
最简单的办法是在open recordset前先关闭掉例如:
Dim rst As ADODB.Recordset
Dim strPassword As String
Set rst = New ADODB.Recordset
'判断密码是否正确
Sys_UserID = Trim(txtUserId.Text)
strSQL = " select userID,password from 用户信息表 where userID='" & Sys_UserID & "'"
If rst.State <> adStateClosed Then rst.Close '加上这一句
rst.Open strSQL, conn, adOpenStatic, adLockOptimistic