老师您好!
我想将下图中“卷1”表中的每个同学的两到题答案与“答案”表中对应的答案对比找到它们之间的不同点,例如,甲同学的“卷1”表中“题1答”列的录入结果是“abc”,而“答案”表中的“题1答案”列是“ab”,那么它们之间的不同点是c。然后,将这名学生姓名填到“统计”表中对应单元格中,例如甲同学作答结果和实际答案之间不同点是c,那么就在“统计”表中“试卷名”行为1、列名为C的的对应单元格中填入“甲”。又如,甲同学的“卷1”表中“题2答”列的录入结果是“b”,而“答案”表中的“题2答案”列是“c”,那么它们之间的不同点是bc。那么就在“统计”表中“试卷名”行为1、列名为b和c的两个单元格中都写入“甲”。如果在“卷1”表中乙同学的题1答”列的录入结果是“ac”,他作答结果和实际答案之间不同点是bc,应该在统计”表中“试卷名”行为1、列名为b、c两列的对应单元格中分别追加写入“乙”。但是由于我在看帮助时,没有找到相关语句,无法实现相关功能,请老师帮我看看如何实现这一功能。
此主题相关图片如下:整合.jpg
下面是我写的相关代码,但是执行后只能将甲同学的名字写入,如果到乙同学时,甲同学的数据都被覆盖了,请老师帮助看看,我应该改动代码才能达到目的。
Dim tjdr As DataRow = DataTables("统计").find("试卷号 = '" & DataTables("卷1").name.chars(1) & "'")
Dim kfdr As DataRow = DataTables("答案").find("试卷号 = '" & DataTables("卷1").name.chars(1) & "'")
Dim A1dr,B1dr,C1dr,D1dr,A2dr,B2dr,C2dr,D2dr As String
Dim kegtdr1 As String = e.DataRow("题1答")
Dim kegtdadr1 As String = kfdr("题1答案")
Dim kegtdr2 As String = e.DataRow("题2答")
Dim kegtdadr2 As String = kfdr("题2答案")
If kfdr("题1答案") IsNot Nothing Then '判断学生作答的试题答案中是否包括ABCD四个选项,如果包括就将相应学生的姓名添加到"统计"表中对应的单元格中
If kegtdr1.contains("a") = True And kegtdadr1.contains("a") = True
Else If kegtdr1.contains("a") = True Or kegtdadr1.contains("a") = True Then
A1dr = e.DataRow("姓名")
End If
End If
If kfdr("题2答案") IsNot Nothing Then
If kegtdr2.contains("a") = True And kegtdadr2.contains("a") = True
Else If kegtdr2.contains("a") = True Or kegtdadr2.contains("a") = True Then
A2dr = e.DataRow("姓名")
End If
End If
tjdr("A") = A1dr & ";" & A2dr
If kfdr("题1答案") IsNot Nothing Then
If kegtdr1.contains("b") = True And kegtdadr1.contains("b") = True
Else If kegtdr1.contains("b") = True Or kegtdadr1.contains("b") = True Then
B1dr = e.DataRow("姓名")
End If
End If
If kfdr("题2答案") IsNot Nothing Then
If kegtdr2.contains("b") = True And kegtdadr2.contains("b") = True
Else If kegtdr2.contains("b") = True Or kegtdadr2.contains("b") = True Then
B2dr = e.DataRow("姓名")
End If
End If
tjdr("B") = B1dr & ";" & B2dr
If kfdr("题1答案") IsNot Nothing Then
If kegtdr1.contains("c") = True And kegtdadr1.contains("c") = True
Else If kegtdr1.contains("c") = True Or kegtdadr1.contains("c") = True Then
C1dr = e.DataRow("姓名")
End If
End If
If kfdr("题2答案") IsNot Nothing Then
If kegtdr2.contains("c") = True And kegtdadr2.contains("c") = True
Else If kegtdr2.contains("c") = True Or kegtdadr2.contains("c") = True Then
C2dr = e.DataRow("姓名")
End If
End If
tjdr("C") = C1dr & ";" & C2dr
If kfdr("题1答案") IsNot Nothing Then
If kegtdr1.contains("d") = True And kegtdadr1.contains("d") = True
Else If kegtdr1.contains("d") = True Or kegtdadr1.contains("d") = True Then
D1dr = e.DataRow("姓名")
End If
End If
If kfdr("题2答案") IsNot Nothing Then
If kegtdr2.contains("d") = True And kegtdadr2.contains("d") = True
Else If kegtdr2.contains("d") = True Or kegtdadr2.contains("d") = True Then
D2dr = e.DataRow("姓名")
End If
End If
tjdr("D") = D1dr & ";" & D2dr
If e.DataRow.Isnull("题1答") And e.DataRow.Isnull("题2答") Then '如果学生没有作答,则"统计"表对应的单元格中为空
tjdr("A") = Nothing
tjdr("B") = Nothing
tjdr("C") = Nothing
tjdr("D") = Nothing
End If
这是我的源文件。
[此贴子已经被作者于2016/8/8 8:11:19编辑过]