Foxtable(狐表)用户栏目专家坐堂 → 求教:判断某列相同编号的最大值


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

主题:求教:判断某列相同编号的最大值

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


加好友 发短信
等级:小狐 帖子:359 积分:3403 威望:0 精华:0 注册:2011/8/2 20:53:00
求教:判断某列相同编号的最大值  发帖心情 Post By:2013/1/22 12:23:00 [只看该作者]

 
 
 
 

此主题相关图片如下:32.jpg
按此在新窗口浏览图片

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


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

 如此代码,测试有效,自己修改。

Dim ls As New List(Of String)
For Each dr As DataRow In DataTables("表A").DataRows
    Dim name As String = dr("第一列").substring(0, dr("第一列").indexof("-"))
    If ls.Contains(name) = False Then
        ls.Add(name)
        Dim fdr As DataRow = DataTables("表A").Find("第一列 like '" & name & "-*'", "第一列 desc")
        fdr("第二列") = "有效"
    End If
Next

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


加好友 发短信
等级:小狐 帖子:359 积分:3403 威望:0 精华:0 注册:2011/8/2 20:53:00
  发帖心情 Post By:2013/1/22 15:06:00 [只看该作者]

你好,谢谢你!

 

Dim ls As New List(Of String)
For Each dr As DataRow In DataTables("表A").DataRows
    Dim name As String = dr("第一列").substring(0, dr("第一列").indexof("-"))
    If ls.Contains(name) = False Then
        ls.Add(name)
        Dim fdr As DataRow = DataTables("表A").Find("第一列 like '" & name & "-*'", "第一列 desc")
        fdr("第二列") = "有效"
    End If
Next

 

这样还是不行,

例如,应该这样:

AA-001       [无效]

AA-002       [无效]

AA-003       [有效]

BB-001       [有效]

CC-001       [有效]

CC-002       [有效]

相同名称,有不同序号号时,小序号应该变为[无效],最大的那个应该为 [有效]

 


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


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

Dim ls As New List(Of String)
Dim idx As New List(Of Integer)
For Each dr As DataRow In DataTables("表A").DataRows
    Dim name As String = dr("第一列").substring(0, dr("第一列").indexof("-"))
    If ls.Contains(name) = False Then
        ls.Add(name)
        Dim fdr As DataRow = DataTables("表A").Find("第一列 like '" & name & "-*'", "第一列 desc")

        idx.Add(fdr("_Identify"))       
        fdr("第二列") = "有效"
    Else If idx.Contains(dr("_Identify")) = False Then
        dr("第二列") = "无效"
    End If
Next
[此贴子已经被作者于2013-1-22 17:06:00编辑过]

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


加好友 发短信
等级:幼狐 帖子:198 积分:1655 威望:0 精华:0 注册:2013/1/11 15:10:00
  发帖心情 Post By:2013/1/22 16:07:00 [只看该作者]

Dim ls As New List(Of String)
Dim name As String
Dim i As Integer
For Each dr As DataRow In DataTables("表A").DataRows
    i = dr("编号").indexof("-")
    name = dr("编号").substring(0,i )
    If ls.Contains(name) = False Then
          ls.Add(name)
          Dim cp1 As String ="SubString(编号,1," & i & ")  =   '" & name & "'"
          Dim maxid As String = Tables("表A").Compute("Max(编号)",Cp1)
          DataTables("表A").ReplaceFor("有效否","有效", "[编号] =  '" & MaxId & "'")
          DataTables("表A").ReplaceFor("有效否","无效", "[编号] <> '" & MaxId & "'and " & cp1 & "")
    End If
Next

 

也测试成功,呵呵 学林老师的思路


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


加好友 发短信
等级:幼狐 帖子:198 积分:1655 威望:0 精华:0 注册:2013/1/11 15:10:00
  发帖心情 Post By:2013/1/22 16:14:00 [只看该作者]

林老师的代码执行结果有错误!
图片点击可在新窗口打开查看此主题相关图片如下:未命名1.jpg
图片点击可在新窗口打开查看


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


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

 恩恩确实是写错了,没有注意之后的情况。已经修改。

 还有更好的方便,不过,够用就好了。

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


加好友 发短信
等级:幼狐 帖子:198 积分:1655 威望:0 精华:0 注册:2013/1/11 15:10:00
  发帖心情 Post By:2013/1/22 17:28:00 [只看该作者]

改了还是有问题呢,会出现空值


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


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

以下是引用dreamyuan在2013-1-22 17:28:00的发言:

改了还是有问题呢,会出现空值


呵呵,确实,这次可以了。

Dim ls As New List(Of String)
Dim idx As New List(Of Integer)
For Each dr As DataRow In DataTables("表A").DataRows
    Dim name As String = dr("第一列").substring(0, dr("第一列").indexof("-"))
    If ls.Contains(name) = False Then
        ls.Add(name)
        Dim fdr As DataRow = DataTables("表A").Find("第一列 like '" & name & "-*'", "第一列 desc")
        idx.Add(fdr("_Identify"))      
        dr("第二列") = "无效"
        fdr("第二列") = "有效"
    Else If idx.Contains(dr("_Identify")) = False Then
        dr("第二列") = "无效"
    End If
Next

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


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

 再精简一下代码就这样。

Dim prev As String = "-"
For Each dr As DataRow In DataTables("表A").Select("", "第一列 desc")
    If dr("第一列") Like prev.SubString(0, prev.IndexOf("-")) & "-*" = False Then
        dr("第二列") = "有效"
        prev = dr("第一列")
    Else
        dr("第二列") = "无效"
    End If
Next

 回到顶部