Foxtable(狐表)用户栏目专家坐堂 → 令人目瞪口呆的效率差别(有修正)


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

主题:令人目瞪口呆的效率差别(有修正)

帅哥哟,离线,有人找我吗?
易服
  91楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/14 11:26:00 [只看该作者]

以下是引用狐狸爸爸在2010-12-14 9:35:00的发言:

 

你完全可以参照48楼的代码来改写8楼的代码。


图片点击可在新窗口打开查看此主题相关图片如下:2010-12-14 11-19-07.png
图片点击可在新窗口打开查看
Dim s As Date = Date.Now()
Dim dic As New Dictionary(of DataRow, String)
Dim drs  As List(of DataRow)
For Each dr As DataRow In DataTables("申请表").DataRows
    drs = DataTables("申请表").Select("[乡名] = '" & dr("乡名") & "'And [村名] = '" & dr("村名") & "' And [组别] = '" & dr("组别")  & "'And [单位(个人)] = '" & dr("单位(个人)") & "'And  [法定代表人] = '" & dr("法定代表人") & "'", "[_Identify] Desc")
    For i As Integer = 0 To drs.Count - 1
        If drs(i)("_Identify") < dr("_Identify") Then
            dic.Add(dr,drs.count - i)
            Exit For
        Elseif i = drs.count -1 Then
            dic.add(dr,0)
        End If
    Next
Next
For Each dr As DataRow In dic.Keys
    dr("宗地序号") = dic(dr)
Next
Tables("申请表").Sort = "法定代表人 DESC" '降序排列
Output.show((Date.Now -s).TotalSeconds)
只可惜从“0”开始,从“1”开始就完美了

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/14 14:40:00 [只看该作者]

以下是引用易服在2010-12-14 11:26:00的发言:
只可惜从“0”开始,从“1”开始就完美了

 

呵呵,代码是你写的,要从1开始还不容易吗:

 

Dim dic As New Dictionary(of DataRow, String)
Dim drs  As List(of DataRow)
For Each dr As DataRow In DataTables("申请表").DataRows
    drs = DataTables("申请表").Select("[乡名] = '" & dr("乡名") & "'And [村名] = '" & dr("村名") & "' And [组别] = '" & dr("组别")  & "'And [单位(个人)] = '" & dr("单位(个人)") & "'And  [法定代表人] = '" & dr("法定代表人") & "'", "[_Identify] Desc")
    For i As Integer = 0 To drs.Count - 1
        If drs(i)("_Identify") < dr("_Identify") Then
            dic.Add(dr,drs.count - i)
            Exit For
        Elseif i = drs.count -1 Then
            dic.add(dr,0)
        End If
    Next
Next
For Each dr As DataRow In dic.Keys
    dr("宗地序号") = dic(dr) + 1
Next

 

也可以:

 

Dim dic As New Dictionary(of DataRow, String)
Dim drs  As List(of DataRow)
For Each dr As DataRow In DataTables("申请表").DataRows
    drs = DataTables("申请表").Select("[乡名] = '" & dr("乡名") & "'And [村名] = '" & dr("村名") & "' And [组别] = '" & dr("组别")  & "'And [单位(个人)] = '" & dr("单位(个人)") & "'And  [法定代表人] = '" & dr("法定代表人") & "'", "[_Identify] Desc")
    For i As Integer = 0 To drs.Count - 1
        If drs(i)("_Identify") <= dr("_Identify") Then
            dic.Add(dr,drs.count - i)
            Exit For
        Elseif i = drs.count -1 Then
            dic.add(dr,0)
        End If
    Next
Next
For Each dr As DataRow In dic.Keys
    dr("宗地序号") = dic(dr)
Next

 

关键要理解代码,否则会很被动,不是玩代码,而是被代码玩。


[此贴子已经被作者于2010-12-14 15:42:28编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/14 17:26:00 [只看该作者]

.........

dr("宗地序号") = Format(dic(dr)+1,"00")

.........


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/15 9:10:00 [只看该作者]

以下是引用狐狸爸爸在2010-12-14 14:40:00的发言:

 

        If drs(i)("_Identify") <= dr("_Identify") Then

不能用“<=”只能用“<”,否则宗地序号从“2”开始

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/15 9:18:00 [只看该作者]

用<=的话,后面就不用加1的

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/15 9:25:00 [只看该作者]

以下是引用狐狸爸爸在2010-12-15 9:18:00的发言:
用<=的话,后面就不用加1的

试过了,宗地序号列全为“0”。不用Format是可以的

[此贴子已经被作者于2010-12-15 9:30:36编辑过]

 回到顶部
总数 96 上一页 1 2 3 4 5 6 7 8 9 10