很急啊!!!数据库连接不上···实时错误‘91’,对象变量或with块变量未设
代码如下大家帮忙看一下,谢啦!!!
Private Sub Form_Load()
Dim rst As ADODB.Recordset
Dim SQL As String
Dim msg As String
Dim rights As String
'查找权限
SQL = "select UPower from UI where UID='" & Text1 & "'"
Set rst = SelectSQL(SQL, msg)
If rst.RecordCount > 0 Then rights = Trim(rst.Fields(0))
rst.Close
Else
MsgBox ("没有用户信息!")
Exit Sub
End If
'设置权限
If InStr(rights, "职能设置") Then
职能设置.Enabled = True
Me.Toolbar1.Buttons(1).Enabled = True
Me.Toolbar1.Buttons(3).Enabled = True
Else
职能设置.Enabled = False
Me.Toolbar1.Buttons(3).Enabled = False
Me.Toolbar1.Buttons(1).Enabled = False
End If
If InStr(rights, "员工信息管理") Then
员工信息管理.Enabled = True
Me.Toolbar1.Buttons(5).Enabled = True
Me.Toolbar1.Buttons(7).Enabled = True
Else
员工信息管理.Enabled = False
Me.Toolbar1.Buttons(5).Enabled = False
Me.Toolbar1.Buttons(7).Enabled = False
End If
If InStr(rights, "工资管理") Then
工资管理.Enabled = True
Me.Toolbar1.Buttons(9).Enabled = True
Me.Toolbar1.Buttons(11).Enabled = True
Else
工资管理.Enabled = False
Me.Toolbar1.Buttons(9).Enabled = False
Me.Toolbar1.Buttons(11).Enabled = False
End If
If InStr(rights, "员工考勤管理") Then
员工考勤管理.Enabled = True
Me.Toolbar1.Buttons(13).Enabled = True
Else
员工考勤管理.Enabled = False
Me.Toolbar1.Buttons(13).Enabled = False
End If
If InStr(rights, "工作考核管理") Then
工作考核管理.Enabled = True
Me.Toolbar1.Buttons(15).Enabled = True
Else
工作考核管理.Enabled = False
Me.Toolbar1.Buttons(15).Enabled = False
End If
用户管理.Enabled = InStr(rights, "用户管理")
End Sub
类模块中的代码;
Public Function GetConnStr() As String
'得到数据库连接字符串,用户可以在此处设置连接字符串
'User ID是数据库用户ID,PassWord是登录密码
GetConnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;PassWord=111;Initial Catalog=人事管理系统;Data Source=LBWIN7"
End Function
Public Function OpenConn(ByRef Conn As ADODB.Connection) As Boolean
'打开数据库连接,链接成功返回true,出错返回false
Set Conn = New ADODB.Connection
On Error GoTo ErrorHandle '出错处理
Conn.Open GetConnStr '打开数据库连接
OpenConn = True
Exit Function
ErrorHandle: '如果出错,则进行错误处理
MsgBox "连接数据库失败!请重新连接!"
OpenConn = False
Exit Function
End Function
Public Function SelectSQL(ByVal SQL As String, ByRef msg As String) As ADODB.Recordset
'执行SQL语句,返回ADODB.Recordset
Dim Conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ErrorHandle '出错处理
'判断SQL语句
sTokens = Split(SQL) '调用Split函数拆分SQL语句
If InStr("SELECT", UCase((sTokens(0)))) Then '如果是Select语句
'打开数据库连接
If OpenConn(Conn) Then '如果打开连接成功,就进行查询操作
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
'执行查询操作
rst.Open Trim$(SQL), Conn, adOpenDynamic, adLockBatchOptimistic
Set SelectSQL = rst '返回函数值
msg = "查询到" & rst.RecordCount & "条记录!"
End If
Else
msg = "SQL语句有误:" & SQL
End If
Finally_Exit: '程序结束的时候进行对象销毁工作
Set rst = Nothing
Set Conn = Nothing
Exit Function
ErrorHandle: '如果SQL语句执行出错,则提示出错信息并转到Finally_Exit
msgString = "查询错误:" & Err.Description
Resume Finally_Exit
End Function
Public Function BatchSelectSQL(ByVal SQL As String, ByRef msg As String) As ADODB.Recordset
'执行SQL语句,返回批处理的ADODB.Recordset
Dim Conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ErrorHandle '出错处理
'判断SQL语句
sTokens = Split(SQL) '调用Split函数拆分SQL语句
If InStr("SELECT", UCase((sTokens(0)))) Then '如果是Select语句
'打开数据库连接
If OpenConn(Conn) Then '如果打开连接成功,就进行批查询操作
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
'执行批查询操作
rst.Open Trim$(SQL), Conn, adOpenDynamic, adLockBatchOptimistic
Set SelectSQL = rst '返回函数值
msg = "查询到" & rst.RecordCount & "条记录!"
End If
Else
msg = "SQL语句有误:" & SQL
End If
Finally_Exit: '程序结束的时候进行对象销毁工作
Set rst = Nothing
Set Conn = Nothing
Exit Function
ErrorHandle: '如果SQL语句执行出错,则提示出错信息并转到Finally_Exit
msgString = "批查询错误:" & Err.Description
Resume Finally_Exit
End Function
--------------------编程问答-------------------- Public Function SelectSQL(ByVal SQL As String, ByRef msg As String) As ADODB.Recordset
'执行SQL语句,返回ADODB.Recordset
Dim Conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ErrorHandle '出错处理
'判断SQL语句
sTokens = Split(SQL) '调用Split函数拆分SQL语句
If InStr("SELECT", UCase((sTokens(0)))) Then '如果是Select语句
'打开数据库连接
If OpenConn(Conn) Then '如果打开连接成功,就进行查询操作
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
'执行查询操作
rst.Open Trim$(SQL), Conn, adOpenDynamic, adLockBatchOptimistic
Set SelectSQL = rst '返回函数值
msg = "查询到" & rst.RecordCount & "条记录!"
End If
Else
msg = "SQL语句有误:" & SQL
End If
Finally_Exit: '程序结束的时候进行对象销毁工作
Set rst = Nothing
Set Conn = Nothing
Exit Function
ErrorHandle: '如果SQL语句执行出错,则提示出错信息并转到Finally_Exit
msgString = "查询错误:" & Err.Description
Resume Finally_Exit
End Function
这个函数内部出错,导致返回了空的结果集。
检查连接字符串、SQL。
或者删除掉 On Error GoTo ErrorHandle,看看报什么错。 --------------------编程问答-------------------- GetConnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;PassWord=111;Initial Catalog=人事管理系统;Data Source=LBWIN7"
看提示是数据库未连接. 查有个正文分号问题,改成英文的即可
GetConnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;PassWord=111;Initial Catalog=人事管理系统;Data Source=LBWIN7"
补充:.NET技术 , ASP.NET