将学籍管理系统的SQL数据库附加到本机服务器上,然后执行,
“ Set rst.ActiveConnection = cnn    '设置rst的ActiveConnection属性,指定与其关联的数据库连接”报实时错误3907,这个系统是从网上找的,想用来学习,请各位指点下,谢谢!!
原代码附下:
Public fMainForm As frmMain
Private IsConnect As Boolean    ' 标记数据库是否连接=
Private Connect_Num As Integer  ' 标记执行Connect()函数后,访问数据库的次数Private cnn As ADODB.Connection   '连接数据库的Connection对象
Private rs As ADODB.Recordset     '保存结果集的Recordset对象Public strSQL As String     '保存执行SQL语句的字符串
Public Conn As String   '连接字符串
Public UserName As String   '操作员名称
Public Right As Integer '操作员权限
Sub Main()
    Dim fLogin As New frmLogin
    Conn = "data source=.;initial catalog=student;user id=sa;password=;"    '数据库连接字符串
    
    fLogin.Show vbModal '显示登录窗体
    If Not fLogin.OK Then   '若登录失败
        End '退出应用程序
    End If
    
    Unload fLogin   '卸载登录窗体
    
    frmSplash.Show  '显示Splash窗体
    frmSplash.Refresh   '刷新Splash窗体
    Set fMainForm = New frmMain '生成主窗体
    Load fMainForm  '装载主窗体
    Unload frmSplash    '卸载Splash窗体
    
    fMainForm.Show  '显示主窗体
End SubPrivate Sub Connect() '连接数据库
    If IsConnect = True Then  '如果连接标记为真,则返回。否则会出错
        Exit Sub
    End If
'    Conn = "data source=.;initial catalog=student;user id=sa;password=;"
    
    On Error GoTo DbOpenErr
    Set cnn = New ADODB.Connection '关键New用于创建新对象cnn
    With cnn
        .Provider = "sqloledb"
        .ConnectionString = Conn
        .ConnectionTimeout = 10
        .Open
    End With
    IsConnect = True  '设置连接标记,表示已经连接到数据库
    Exit Sub
    
DbOpenErr:
    If Err = -2147467259 Then
        Set cnn = Nothing
        MsgBox "连接MS SQL Server数据库失败!" & vbCrLf & vbCrLf & "请检查配置是否完好,数据库Student是否存在?", vbOKOnly + vbInformation, "学籍管理系统"
        End
    End If
    
End SubPublic Sub Disconnect() '断开与数据库的连接
    Dim rc As Long
    If IsConnect = False Then Exit Sub '如果连接标记为假,标明已经断开连接,则直接返回
    cnn.Close  '关闭连接
    
    Set cnn = Nothing
    IsConnect = False
End SubPublic Sub DB_Connect() '使用Connect_Num控制数据库连接
    Connect_Num = Connect_Num + 1
    Connect
End Sub
Public Sub DB_Disconnect()
    If Connect_Num >= CONNECT_LOOP_MAX Then
        Connect_Num = 0
        Disconnect
    End If
End Sub
Public Sub DBapi_Disconnect() '强制关闭api方式访问的数据库,计数器复位
    Connect_Num = 0
    Disconnect
End SubPublic Sub SQLExt(ByVal TmpSQLstmt As String)   '执行数据库操作语句
    Dim cmd As New ADODB.Command  '创建Command对象cmd
    DB_Connect    '连接到数据库
    Set cmd.ActiveConnection = cnn  '设置cmd的ActiveConnection属性,指定与其关联的数据库连接
    cmd.CommandText = TmpSQLstmt  '设置要执行的命令文本
    cmd.Execute
    Set cmd = Nothing
    DB_Disconnect
End SubPublic Function QueryExt(ByVal TmpSQLstmt As String) As ADODB.Recordset '执行数据库查询语句
    Dim rst As New ADODB.Recordset
    DB_Connect    '连接到数据库
    
    Set rst.ActiveConnection = cnn    '设置rst的ActiveConnection属性,指定与其关联的数据库连接
    rst.CursorType = adOpenKeyset
    rst.LockType = adLockOptimistic   '设置锁定类型
    rst.Open TmpSQLstmt    '打开记录集
    Set QueryExt = rst    '返回记录集
End FunctionPublic Function MakeStr(ByVal Str As String) As String
    MakeStr = Trim(Replace(Str, "'", "''"))
End Function