想用Mschart做一个饼图:
 Option Explicit 
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim rs3 As ADODB.Recordset
Dim rs4 As ADODB.Recordset
Dim rs5 As ADODB.Recordset
Dim SelectedSeries As Integer '自定义变量
Dim rs() As String '提取记录集用的字符串数组
Dim objRs As ADODB.Recordset
Private Sub Form_Load()
'On Error GoTo DealError
    Dim objCn As New Connection
    '建立数据库连接
      objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source=" & App.Path & "\数据库\Score.mdb"
     
     objCn.Open
       Set rs5 = New ADODB.Recordset
       Set rs1 = New ADODB.Recordset
       Set rs2 = New ADODB.Recordset
       Set rs3 = New ADODB.Recordset
       Set rs4 = New ADODB.Recordset
    '创建RecordSet对象,获取学生成绩信息
    Set objRs = New Recordset
    Set objRs.ActiveConnection = objCn
     objRs.Open "SELECT * FROM 学生成绩"
   rs5.Open "select * from 学生成绩 order by 成绩", objRs, adOpenStatic, adLockOptimistic
    Do While Not rs5.EOF
    rs5.MoveNext
    Loop
   rs1.Open "select * from 学生成绩 where 成绩 =" + Chr(39) + "优" + Chr(39) + "order by 成绩", objRs, adOpenStatic, adLockOptimistic
    Do While Not rs1.EOF
     rs1.MoveNext
      Loop
rs2.Open "select * from 学生成绩 where 成绩 =" + Chr(39) + "良" + Chr(39) + "order by 成绩", objRs, adOpenStatic, adLockOptimistic
Do While Not rs2.EOF
rs2.MoveNext
Looprs3.Open "select * from 学生成绩 where 成绩 =" + Chr(39) + "中" + Chr(39) + "order by 成绩", objRs, adOpenStatic, adLockOptimistic
Do While Not rs3.EOF
rs3.MoveNext
Looprs4.Open "select* from 学生成绩 where 成绩=" + Chr(39) + "差" + Chr(39) + "order by 成绩", objRs, adOpenStatic, adLockOptimistic
Do While Not rs4.EOF
rs4.MoveNext
Loop
objRs.ActiveConnection = Nothing    '取消数据库连接
    objCn.Close                         '关闭数据库连接
    Set objCn = Nothing                 '释放连接
    Exit Sub
'DealError:
    'ShowError = "程序执行出错,错误信息如下:" & vbCrLf & Err.Description
    
    End SubPrivate Sub McScore_SeriesSelected(Series As Integer, MouseFlags As Integer, Cancel As Integer)
Set DataGrid1.DataSource = rs5
SelectedSeries = Series
End Sub
Private Sub McScore_PointSelected(Series As Integer, DataPoint As Integer, MouseFlags As Integer, Cancel As Integer)
SelectedSeries = Series
End Sub
Private Sub McScore_Db1Click()
'改变ADO控件的记录源并刷新
Adoc1.RecordSource = rs(SeletedSeries)
Adoc1.Refresh
End Sub在rs5.Open "select * from 学生成绩 order by 成绩", objRs, adOpenStatic, adLockOptimistic 总是出现如题错误,把objRs定义成Public也不能解决,初学很不明白怎么改。希望大家帮助。

解决方案 »

  1.   

    rs5.Open "select * from 学生成绩 order by 成绩", objRs, adOpenStatic, adLockOptimisticobjRs是你声明的记录集,应该是连接发对象   rs5.Open "select * from 学生成绩 order by 成绩", objCn, adOpenStatic, adLockOptimistic
      

  2.   

    谢谢vbman2003(家人)。现在那个问题没了,可是在objRs.ActiveConnection = Nothing 行
    出现对象打开时不允许操作,这是怎么回事。谢谢你们
      

  3.   

    貌似objRs没用,它只打开了objRs.Open "SELECT * FROM 学生成绩"这个记录集,可是又没见有什么用,去掉与其相关的代码。或者直接objRs=nothing