Foxtable(狐表)用户栏目专家坐堂 → [求助]代码出错,求助修改(已解决)


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

主题:[求助]代码出错,求助修改(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]代码出错,求助修改(已解决)  发帖心情 Post By:2012/9/17 10:40:00 [只看该作者]

一分厂根据考核分名次排定,二分厂根据一分厂的名次考核分来套取名次。
具体规则:二分厂考核分 >= 一分厂第三名的,名次均为第三名;
              二分厂考核分 >= 一分厂第五名的,名次均为第五名;
              二分厂考核分 < 一分厂第五名的,名次按 >= 一分厂的对应的考核分套取(低于一分厂最低考核分的套取一分厂的最低名次)。

 

 

如何用代码来实现上述要求,请各位老师指教,谢谢!

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:案例2.table

[此贴子已经被作者于2012-9-17 15:09:12编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/17 11:39:00 [只看该作者]

 代码如下

Dim drs As List(Of DataRow) = DataTables("考核名次").Select("厂家 = '一分厂'", "考核分 desc")

Dim count As Integer = 1
For Each dr As DataRow In drs
    dr("名次") = count
    count = count + 1
Next

Dim dr3 As DataRow = DataTables("考核名次").Find("名次 = 3 And 厂家 = '一分厂'")
Dim dr5 As DataRow = DataTables("考核名次").Find("名次 = 5 And 厂家 = '一分厂'")
Dim drMin As DataRow = DataTables("考核名次").Find("名次 = " & count - 1 & " And 厂家 = '一分厂'")
Dim odrs As List(Of DataRow) = DataTables("考核名次").Select("厂家 = '一分厂' And 名次 > 5", "考核分 desc")

drs = DataTables("考核名次").Select("厂家 = '二分厂'")
For Each dr As DataRow In drs
    If dr("考核分") >= dr3("考核分") Then
        dr("名次") = 3
    Else If dr("考核分") >= dr5("考核分") Then
        dr("名次") = 5
    Else If dr("考核分") >= drMin("考核分") Then
        For Each odr As DataRow In odrs
            If dr("考核分") >= odr("考核分") Then
                dr("名次") = odr("名次")
                Exit For
            End If
        Next
    Else
        dr("名次") = count - 1
    End If
Next

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/9/17 11:53:00 [只看该作者]

谢谢lin_hailun老师的回复,代码运行出错,提示如图:

 

 


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

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]代码出错,求助修改  发帖心情 Post By:2012/9/17 12:54:00 [只看该作者]

 

 

Dim drs As List(Of DataRow) = DataTables("考核名次").Select("厂家 = '一分厂'", "考核分 desc")
Dim count As Integer = 1

For Each dr As DataRow In drs
    dr("名次") = count
    count = count + 1
Next

 

将变量count的初始值改成 "0",代码可以通过,但是名次提升了一档。

 

如果再将代码"dr("名次") = count "改成"dr("名次") = count + 1 ",名次符合要求,但是出现出错提示:

 

 


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

 

 

如何修改代码,请各位老师指教,谢谢!!

 

再次感谢lin_hailun老师!!

[此贴子已经被作者于2012-9-17 12:56:36编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/17 14:23:00 [只看该作者]

 哦哦,忘记你第一行是空值了。

Dim drs As List(Of DataRow) = DataTables("考核名次").Select("厂家 = '一分厂'", "考核分 desc")

Dim count As Integer = 1
For Each dr As DataRow In drs
    dr("名次") = count
    count = count + 1
Next

Dim dr3 As DataRow = DataTables("考核名次").Find("名次 = '3' And 厂家 = '一分厂'")
Dim dr5 As DataRow = DataTables("考核名次").Find("名次 = '5' And 厂家 = '一分厂'")
Dim drMin As DataRow = DataTables("考核名次").Find("名次 = '" & count - 1 & "' And 厂家 = '一分厂'")
Dim odrs As List(Of DataRow) = DataTables("考核名次").Select("厂家 = '一分厂' And 名次 > 5", "考核分 desc")

drs = DataTables("考核名次").Select("厂家 = '二分厂'")
For Each dr As DataRow In drs
    If dr("考核分") >= dr3("考核分") Then
        dr("名次") = 3
    Else If dr("考核分") >= dr5("考核分") Then
        dr("名次") = 5
    Else If dr("考核分") >= drMin("考核分") Then
        For Each odr As DataRow In odrs
            If dr("考核分") >= odr("考核分") Then
                dr("名次") = odr("名次")
                Exit For
            End If
        Next
    Else If dr("厂家") <> "" Then
        dr("名次") = count - 1
    End If
Next


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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/9/17 15:09:00 [只看该作者]

谢谢lin_hailun老师的回复,问题解决了,再次衷心感谢!!

 回到顶部