当前位置:编程学习 > C#/ASP.NET >>

很急啊!!!数据库连接不上···实时错误‘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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,