以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  总分唯一排名代码问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=190016)

--  作者:jhxb8821
--  发布时间:2024/1/11 10:57:00
--  总分唯一排名代码问题

老师,窗口有“总分排名”代码,排名有重复的。我需要结果为:总分唯一排名。

总分唯一排名规则,总分相同的,按下列优先顺序确定排名顺序:1.总分相同的,语数英三科总分高的分数优先;2.总分相同的,且语数英三科总分相同的:语文高的优先,数学其次,英语最后。按照上述规则,希望按“总分唯一排名”按钮,自动生成“优
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:总分排名唯一2401.foxdb

先顺序号”和“总分唯一排名”两列数据。请教老师如何写这个代码?

--  作者:有点蓝
--  发布时间:2024/1/11 11:12:00
--  
这种更简单,直接排序就行了

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:总分排名唯一2401.zip



--  作者:jhxb8821
--  发布时间:2024/1/11 13:38:00
--  
非常感谢蓝老师,这样代码更加简洁、高效了
--  作者:hbfnmxb
--  发布时间:2024/1/11 13:47:00
--  
商业版无法看
--  作者:jhxb8821
--  发布时间:2024/1/18 14:33:00
--  代码问题
\'判断首字符是否为0,不为0则添加0
\'写法1:
Select Case e.DataCol.name
    Case "第八列"
        Dim dr1 As String = Left(e.DataRow("第八列"), 1)
        If dr1 <> 0 Then
            e.DataRow("第九列") = "0" & e.DataRow("第八列") 
        End If 
End Select
\'写法2:
Select Case e.DataCol.name
    Case "第八列"
        Dim Country As String = e.DataRow("第八列")
        Dim Val1 As Boolean
        Val1 = Country.StartsWith("0")
        If Val1 = True Then
            e.DataRow("第九列") = "0" & e.DataRow("第八列") 
        End If 
End Select
请老师帮忙看一下这两种方法有哪些问题

--  作者:有点蓝
--  发布时间:2024/1/18 15:18:00
--  
Select Case e.DataCol.name
    Case "第八列"
if e.DataRow.isnull("第八列") = false
        If e.DataRow("第八列").StartsWith("0") = false Then
            e.DataRow("第九列") = "0" & e.DataRow("第八列") 
        End If 
End If 
End Select

--  作者:jhxb8821
--  发布时间:2024/1/18 17:39:00
--  
完美,谢谢蓝老师
--  作者:jhxb8821
--  发布时间:2024/1/19 11:10:00
--  
\'此代码,金额列和元角分各列均为字符列,代码能用,若将金额列改成高精度小数,固定保留两位小数,元角分各列均为整数列,请教下列代码如何修改?
Select Case e.DataCol.Name 
    Case "分段提取数字5_金额"
        If e.NewValue > "" Then 
            \' Dim str As String = Format(e.NewValue, "0.00").Value \'格式化数据,保留2位小位。
            Dim ar() As String = e.NewValue.split(".") 
            e.DataRow("分段提取数字5_元") = ar(0) \'小数点前取值为元
            e.DataRow("分段提取数字5_角") = ar(1).SubString(0, 1) \'ar(1)表示小数点后两位(角分)
            e.DataRow("分段提取数字5_分") = ar(1).SubString(1, 1) 
        Else 
            e.DataRow("分段提取数字5_元") = Nothing 
            e.DataRow("分段提取数字5_角") = Nothing
            e.DataRow("分段提取数字5_分") = Nothing 
        End If 
End Select

--  作者:有点蓝
--  发布时间:2024/1/19 11:14:00
--  
    Case "分段提取数字5_金额"
        If e.DataRow.isnull("分段提取数字5_金额")=false Then 
            Dim ar() As String = Format(e.NewValue, "0.00").split(".")  \'格式化数据,保留2位小位。
            e.DataRow("分段提取数字5_元") = ar(0) \'小数点前取值为元

--  作者:jhxb8821
--  发布时间:2024/1/19 16:41:00
--  
谢谢老师,代码挺管用的!