VB程序员博客

VB程序开发

Private Sub Command1_Click()
  Dim db As ADODB.Connection
  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 rs6 As ADODB.Recordset
    Dim rs7 As ADODB.Recordset
  Set db = New ADODB.Connection
 
    Set rs = New ADODB.Recordset
    Set rs1 = New ADODB.Recordset
    Set rs2 = New ADODB.Recordset
    Set rs3 = New ADODB.Recordset
    Set rs4 = New ADODB.Recordset
    Set rs5 = New ADODB.Recordset
    Set rs6 = New ADODB.Recordset
    Set rs7 = New ADODB.Recordset
  db.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=奖学金;Data Source=."
  db.Open
  Dim i, j, k, m As Integer
  rs.Open "select 年级 from  年级字典,专业字典 where 专业字典.专业代码 =年级字典.专业代码 ", _
  db, adOpenStatic, adLockReadOnly
      i = rs.RecordCount
      If i > 0 Then
          rs.MoveFirst
      Else
      MsgBox "无年级"
      rs.Close
      End If
  rs1.Open "select  班级 from  班级字典 ,年级字典 where 年级字典.年级 =班级字典.年级 ", _
  db, adOpenStatic, adLockReadOnly
      j = rs1.RecordCount
      If j > 0 Then
          rs1.MoveFirst
      Else
      MsgBox "无班级"
          rs1.Close
      End If
     
    rs2.Open "select 学号 from 学生信息表 ,班级字典 where  学生信息表.班级=班级字典.班级", _
    db, adOpenStatic, adLockReadOnly
        k = rs2.RecordCount
        If k > 0 Then
        rs2.MoveFirst
        Else
        MsgBox "无学号"
            rs2.Close
        End If
       
   
    Dim no As String
    Dim no1 As String
        Dim n As Integer
        Dim n1 As Integer
        Dim Y As Integer
        Dim X As Integer
        Dim a As Integer
        'Dim strsql As String
        'strsql =
    rs4.Open "select distinct 成绩表.学年度,成绩表.至学年度,成绩表.姓名,成绩表.学号,成绩表.班级 ,成绩表.考试成绩 ,附加德育分.德育分,附加德育分.附加分,体育分.体育分,课程信息表.学分 from 成绩表,课程信息表 ,专业字典 ,体育分 ,附加德育分,学年表  where  课程信息表.课程代码 =成绩表.课程代码 and 体育分.学号=成绩表.学号 and 附加德育分.学号=成绩表.学号 and 学年表.学年度= '" & Cobxnd.Text & "'and 成绩表.班级='" & Cobbj.Text & "' and 学年表.至学年度='" & Cobzxnd.Text & "'", db, adOpenStatic, adLockReadOnly
    rs5.Open "select avg(考试成绩),学号 from 成绩表 where  学年度= '" & rs4.Fields("学年度") & "' and 至学年度= '" & rs4.Fields("至学年度") & "' group by 学号", db, adOpenStatic, adLockReadOnly
    rs6.Open "select avg(体育分),学号 from 体育分  where 学年度= '" & rs4.Fields("学年度") & "' and 至学年度= '" & rs4.Fields("至学年度") & "' group by 学号", db, adOpenStatic, adLockReadOnly
rs7.Open "select sum(学分),学号 from 成绩表 where 学年度= '" & rs4.Fields("学年度") & "' and 至学年度= '" & rs4.Fields("至学年度") & "' group by 学号", db, adOpenStatic, adLockReadOnly
      n = rs4.RecordCount
     
     
      Set DataGrid1.DataSource = rs4
      rs4.MoveFirst
      no1 = rs4.Fields(0)
         
          j = 0
       
      For i = 1 To n
      If rs4.EOF Then
      MsgBox "该表为空", 48, "提示信息"
     
      Else
    If rs4.Fields("学号") = rs5.Fields("学号") And rs5.Fields("学号") = rs6.Fields("学号") And rs7.Fields("学号") = rs6.Fields("学号") Then       jxj.TextMatrix(i, 2) = rs4.Fields("学号")
        Y = rs5.Fields(0)
      jxj.TextMatrix(i, 4) = rs5.Fields(0) * 0.6
      jxj.TextMatrix(i, 3) = rs4.Fields("班级")
      jxj.TextMatrix(i, 5) = rs4.Fields("德育分") * 0.2
          X = rs6.Fields(0)
      jxj.TextMatrix(i, 6) = rs6.Fields(0) * 0.2
    jxj.TextMatrix(i, 1) = rs4.Fields("姓名")
      a = rs7.Fields(0)
      jxj.TextMatrix(i, 9) = rs7.Fields(0)
      jxj.TextMatrix(i, 7) = rs4.Fields("附加分")
      jxj.TextMatrix(i, 8) = rs5.Fields(0) * 0.6 + rs6.Fields(0) * 0.2 + rs4.Fields("附加分") + rs4.Fields("德育分") * 0.2
        rs4.MoveNext
        rs5.MoveNext
        rs6.MoveNext
        rs7.MoveNext
     
      End If
        End If
   
      rs4.MoveNext
       
     
      Next i
     
     
     
 
   
               
End Sub
运行时出3021错误,BOF 或EOF有一个为真,或者当前的记录已被删除,所需的操作需要一个当前的记录。
急需高手帮忙解决。

看着就比较头疼啊,也没高手来回答啊。


标签: