以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=140130)

--  作者:long086
--  发布时间:2019/8/29 23:00:00
--  求助


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20190829224852.png
图片点击可在新窗口打开查看

有一种答案对照表 学生的答案和标准答案对比,如何正确评分列显示t,错误显示f ,现在实现了标准答案是a,c  学生答案也是a,c 评分显示t  ,现在想实现标准答案是a,c  学生答案是c,a 也是正确的,意思只要答案正确顺序不对,就是正确,请问怎么实现

 

 

DataColChanged事件代码
If e.DataCol.Name = "学生答案" Or e.DataCol.Name = "多选题答案" Then 
    If Tables("表A").Current("多选题答案") = Tables("表A").Current("学生答案")
        e.DataRow("评分") = "T"
    Else
        e.DataRow("评分") = "F"
    End If
End If
 
 
[此贴子已经被作者于2019/8/29 23:00:52编辑过]

--  作者:y2287958
--  发布时间:2019/8/30 7:59:00
--  
转成数组,数组排序后比较
--  作者:有点蓝
--  发布时间:2019/8/30 10:22:00
--  
试试

If e.DataCol.Name = "学生答案" Or e.DataCol.Name = "多选题答案" Then
    If e.DataRow.IsNull("多选题答案") OrElse e.DataRow.IsNull("学生答案") Then
        e.DataRow("评分") = "F"
    Else
        Dim Isright As Boolean
        Isright = e.DataRow("多选题答案") = e.DataRow("学生答案")
        If not Isright Then
            Dim a1() As String = e.DataRow("多选题答案").split(",")
            Dim a2() As String = e.DataRow("学生答案").split(",")
            For Each a As String In a1 Then
                If Array.IndexOf(a2,a) = -1 Then
                    Isright = False
                    Exit For
                End If
            Next
            Isright  = True
        End If
        e.DataRow("评分") = IIF(Isright ,"T","F")
    End If
End If