公共模块中的代码:
Public Function GetConnStr() As String
'得到数据库连接字符串,用户可以在此处设置连接字符串
'User ID 是数据库用户ID,Password是登陆密码
'Initial Catalog是数据库名,Data Source是服务器名称
    GetConnStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & "User ID=sa;Password=123;Initial Catalog=成绩分析;Data Source=LocalServer"
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
在成绩录入窗体中的代码:(出错后调试的出错行在此代码中)
Dim SQL As String
Dim msg As String
Dim rs As ADODB.Recordset
Private Sub Form_Load()
'首先需要初始化学院ComboBox、系ComboBox、班级ComboBox和班级课程ComboBox
    Dim rst As ADODB.Recordset
    Dim strItem As String
    '初始化学院ComboBox
    SQL = " select 学院号,学院 from 学生成绩信息表 order by 学院号"
    
    Set rst = SelectSQL(SQL, msg)
    If rst.RecordCount > 0 Then            //此行显示出错
        Do While Not rst.EOF
            strItem = rst.Fields(0) & " " & rst.Fields(1)
            CboQuery(0).AddItem (strItem)
            rst.MoveNext
        Loop
        rst.Close
        CboQuery(0).ListIndex = 0
    Else                                    '如果不存在学院信息
        MsgBox ("请先创建院信息!")          '如果没有院信息不能使用
        CboQuery(0).Enabled = False
        CboQuery(1).Enabled = False
        CboQuery(2).Enabled = False
        Exit Sub
    End If
    Call SelectData(0)                      '得到系列表
    If CboQuery(1).ListCount > 0 Then
        Call SelectData(1)                  '得到班级列表
    End If
End Sub毕业设计在急,希望高手多帮助,小妹感激不尽。

解决方案 »

  1.   

    猜测SelectSQL是一个根据SQL语句返回一个recordset的函数,但未能正确返回的记录集。最好把SelectSQL也贴出来。
      

  2.   

    Dim rst As New ADODB.Recordset
    Dim rs  As New ADODB.Recordset
      

  3.   

    同意VBToy(无证编程),SelectSQL应该是返回Recordset对象的函数。
      

  4.   

    我也遇到过这种情况,
    有3个方面的原因,
    1 数据库连接字串是否正确,
    2 SelectSQL(SQL, msg)是否为recordset类型
    3 使用的库有问题
      

  5.   

    Set rst = SelectSQL(SQL, msg)    具体涵数在那里??