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,
= 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有一个为真,或者当前的记录已被删除,所需的操作需要一个当前的记录。
急需高手帮忙解决。
看着就比较头疼啊,也没高手来回答啊。