以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求幅度时提示的错误。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89750)

--  作者:地瓜
--  发布时间:2016/8/29 11:05:00
--  求幅度时提示的错误。
在分析“排名进退幅度”时,提示如图的错误,如何解决呢?谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成绩管理平台.zip


图片点击可在新窗口打开查看此主题相关图片如下:进幅.jpg
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2016/8/29 11:18:00
--  
If e.DataRow.IsNull("科目")=False Then
    Select Case e.DataCol.name
        Case "届别","考试期数","年级","班别","科目"
            Dim dr As DataRow=e.DataRow
            Dim dt_StudentScore As DataTable=DataTables("StudentScore")
            Dim dt_pmsj As DataTable=DataTables("排名升降")
            Dim gjf As String=dt_pmsj.Compute("Max(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数] =\'" & dr("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\'")
            Dim djf As String=dt_pmsj.Compute("Min(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数] =\'" & dr("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\'")
            If gjf > "" AndAlso djf > "" Then
                e.DataRow("高幅度")=gjf.SubString(1,gjf.IndexOf("(")-1)
                e.DataRow("低幅度")=djf.SubString(1,djf.IndexOf("(")-1)
            End If
    End Select
End If

--  作者:地瓜
--  发布时间:2016/8/29 12:44:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:幅度.jpg
图片点击可在新窗口打开查看

最低进幅的分数与排名升降时的箭头所示的下降名次不对,谢谢!
这是代码:
If e.DataRow.IsNull("科目")=False Then
    Select Case e.DataCol.name
        Case "届别","考试期数","年级","班别","科目"
            Dim dr As DataRow=e.DataRow
            Dim dt_StudentScore As DataTable=DataTables("StudentScore")
            Dim dt_pmsj As DataTable=DataTables("排名升降")
            Dim gjf As String=dt_pmsj.Compute("Max(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数] =\'" & dr("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\'")
            Dim djf As String=dt_pmsj.Compute("Min(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数] =\'" & dr("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\'")
            If gjf > "" AndAlso djf > "" Then
                e.DataRow("高幅度")=gjf.SubString(1,gjf.IndexOf("(")-1)
                e.DataRow("低幅度")=djf.SubString(1,djf.IndexOf("(")-1)
                e.DataRow("高幅分")=dt_StudentScore.Compute("Max(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数]=\'" & e.DataRow("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\'")
                e.DataRow("低幅分")=dt_StudentScore.Compute("Min(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数]=\'" & e.DataRow("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\'")
                
            End If
    End Select
End If
[此贴子已经被作者于2016/8/29 12:46:20编辑过]

--  作者:大红袍
--  发布时间:2016/8/29 15:03:00
--  
If e.DataRow.IsNull("科目")=False Then
    Select Case e.DataCol.name
        Case "届别","考试期数","年级","班别","科目"
            Dim dr As DataRow=e.DataRow
            Dim dt_StudentScore As DataTable=DataTables("StudentScore")
            Dim dt_pmsj As DataTable=DataTables("排名升降")
            Dim filter As String = "[届别]=\'" & e.DataRow("届别") & "\' And [考试期数] =\'" & dr("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\' and " & dr("科目") & " like \'↑%\'"
            Dim dmax As DataRow = dt_pmsj.Find(filter, dr("科目") & " desc")
            Dim dmin As DataRow = dt_pmsj.Find(filter, dr("科目"))
           
            If dmax IsNot Nothing Then
                e.DataRow("高幅度")=dmax(dr("科目")).SubString(1,dmax(dr("科目")).IndexOf("(")-1)
                e.DataRow("低幅度")=dmin(dr("科目")).SubString(1,dmin(dr("科目")).IndexOf("(")-1)
                e.DataRow("高幅分")=dt_StudentScore.Compute("Max(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数]=\'" & e.DataRow("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\' and 姓名 = \'" & dmax("姓名") & "\'")
                e.DataRow("低幅分")=dt_StudentScore.Compute("Min(" & dr("科目") & ")","[届别]=\'" & e.DataRow("届别") & "\' And [考试期数]=\'" & e.DataRow("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\' and 姓名 = \'" & dmin("姓名") & "\'")
                e.DataRow("高姓名") = dmax("姓名")
                e.DataRow("低姓名") = dmin("姓名")
            End If
    End Select
End If

--  作者:地瓜
--  发布时间:2016/8/29 17:17:00
--  
谢谢!
--  作者:地瓜
--  发布时间:2016/8/30 16:45:00
--  
但是此处的Dim filter As String = "[届别]=\'" & e.DataRow("届别") & "\' And [考试期数] =\'" & dr("考试期数") & "\' And [年级]=\'" & dr("年级") & "\' And [班别]=\'" & dr("班别") & "\' and " & dr("科目") & " like \'↑%\'"有问题,比如一个是↑9,另一个是↑30.它获取的是↑9的值,即9,跟在“排名升降”中的显示的意思不一致。应该是要比较↑后面的数值大小,谢谢!
[此贴子已经被作者于2016/8/30 16:46:35编辑过]

--  作者:Hyphen
--  发布时间:2016/8/30 17:12:00
--  
字符的比较就是这样的。要么不要在科目中放其它字符,增加一列放“”,科目改成整型
--  作者:地瓜
--  发布时间:2016/8/30 17:19:00
--  
那能把字符型的数值转换成整型的数值吗?谢谢!
--  作者:地瓜
--  发布时间:2016/8/30 17:28:00
--  
那就要排名升降表中作比较是不要字符了,直接用整型数值了
--  作者:Hyphen
--  发布时间:2016/8/30 17:37:00
--  
回复8楼,排序的时候没有办法转换类型