Foxtable(狐表)用户栏目专家坐堂 → [求助]如何分类统计答题错误信息


  共有2277人关注过本帖树形打印复制链接

主题:[求助]如何分类统计答题错误信息

帅哥哟,离线,有人找我吗?
33chyh
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:124 积分:1202 威望:0 精华:0 注册:2015/12/27 21:01:00
  发帖心情 Post By:2016/8/14 19:42:00 [只看该作者]

谢谢大红袍老师在休息时间也能帮助我解决问题!!!

经过运行代码后发现有两个问题需要您帮助解决:1、如果在“卷1答”表中改变某些同学的一些作答结果后,在“卷1统”表中对应项没有改变。例如将李雷的“卷1答”的“客观题1”原答案“a”改成“ab”,那么“卷1统”中"1B"中就不能出现字符“李雷”,而实际是"1B”中字符“李雷”没有消失。2、如果将“卷1答”表中“客观题1”~“主观题7”所有数据清空后,“卷1统”中“错误人数”和“错误学生”两列数据也没有清空。


 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/15 9:32:00 [只看该作者]

“卷1答”DataColChanged事件

Dim dr As Row = Tables("客观题答案").Rows(0)
    Dim name = e.DataRow("姓名")
If e.DataCol.Name.StartsWith("客观题") Then
    Dim lst1 As new List(of String)
    Dim lst2 As new List(of String)
    Dim filter = " ','+ [错误学生] +',' like '%," & name & ",%' and 统计号 like '" & e.DataCol.Name.Replace("客观题","")  & "%'"
    Dim drs As List(Of DataRow) = DataTables("卷1统").Select(filter)
    For Each r As DataRow In drs
        r("错误人数") = r("错误人数")-1
        r("错误学生") = r("错误学生").replace(name,"").replace(",,",",").trim(",")
    Next
    Dim v As String
    If e.NewValue > "" Then
        v = e.NewValue
        For i As Integer = 0 To v.Length-1
            lst1.Add(v(i))
        Next
        v = dr(e.DataCol.Name)
        For j As Integer = 0 To v.Length-1
            If lst1.Contains(v(j)) Then
                lst1.Remove(v(j))
            Else
                lst2.Add(v(j))
            End If
        Next
        lst1.AddRange(lst2.ToArray())
        
        For Each s As String In lst1
            filter = "统计号 = '" & e.DataCol.Name.Replace("客观题","") & s.ToUpper() & "'"
            Dim drt As DataRow = DataTables("卷1统").Find(filter)
            drt("错误人数") = drt("错误人数")+1
            drt("错误学生") = (drt("错误学生") & "," & e.DataRow("姓名")).trimstart(",")
        Next
        
    End If
ElseIf e.DataCol.Name.StartsWith("主观题") Then
    Dim filter = " ','+ [错误学生] +',' like '%," & name & ",%' and 统计号 = '" & e.DataCol.Name.Replace("观题","") & "'"
    Dim drs As List(Of DataRow) = DataTables("卷1统").Select(filter)
    For Each r As DataRow In drs
        r("错误人数") = r("错误人数")-1
        r("错误学生") = r("错误学生").replace(name,"").replace(",,",",").trim(",")
    Next
    If e.NewValue = "f" Then
        filter = "统计号 = '" & e.DataCol.Name.Replace("观题","") &  "'"
        Dim drt As DataRow = DataTables("卷1统").Find(filter)
        drt("错误人数") = drt("错误人数")+1
        drt("错误学生") = (drt("错误学生") & "," & name).trimstart(",")
    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
33chyh
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:124 积分:1202 威望:0 精华:0 注册:2015/12/27 21:01:00
  发帖心情 Post By:2016/8/15 11:05:00 [只看该作者]

谢谢Hyphen老师,经过测试您的代码已经满足我的想法。谢谢您的帮助!!!


 回到顶部
帅哥哟,离线,有人找我吗?
33chyh
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:124 积分:1202 威望:0 精华:0 注册:2015/12/27 21:01:00
  发帖心情 Post By:2016/8/16 8:29:00 [只看该作者]

老师您好,在阅读您写的代码时,下面这段代码没有看明白,其中符号“+”和“%”在这段代码中表示的含义是什么?请您给我讲解!!!
Dim filter = " ','+ [错误学生] +',' like '%," & name & ",%' and 统计号 like '" & e.DataCol.Name.Replace("客观题","")  & "%'"

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/16 8:48:00 [只看该作者]

查找某个客观题下是否有包含指定名称的条件,

如判断",a,ab,c,d,"是否包含a,可能把ab也找出来,判断是否包含“,a,”就不会找出ab


 回到顶部
帅哥哟,离线,有人找我吗?
33chyh
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:124 积分:1202 威望:0 精华:0 注册:2015/12/27 21:01:00
  发帖心情 Post By:2016/8/19 9:14:00 [只看该作者]

老师您好!通过输入数据能得到正确结果。如果想重新计算,必须通过重新输入数据才行。若数据输入后想通过重置列按钮进行重新计算时,只有个别数据参与运算。这是什么原因造成的?
[此贴子已经被作者于2016/8/19 9:15:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/19 10:14:00 [只看该作者]

重置列只对选定的列有效

这种类型的统计本就不应该在DataColChanged事件中做,应该输入完成所有数据后一个按钮进行全表统计

 回到顶部
帅哥哟,离线,有人找我吗?
33chyh
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:124 积分:1202 威望:0 精华:0 注册:2015/12/27 21:01:00
  发帖心情 Post By:2016/8/19 12:39:00 [只看该作者]

谢谢老师

 回到顶部
总数 18 上一页 1 2