Foxtable(狐表)用户栏目专家坐堂 → 检测一列的重复值,这些代码哪里有错?


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

主题:检测一列的重复值,这些代码哪里有错?

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
检测一列的重复值,这些代码哪里有错?  发帖心情 Post By:2020/6/19 15:31:00 [显示全部帖子]

以下内容为程序代码:

1 For i As Integer = 0 To Cot
2 Dim cfList As New List (of String)
3 Dim djID = CurrentTable.Rows(i)("物资信息_单据编号")
4 If cfList.Contains(djID) = False Then
5 cfList.Add(djID)
6 Else
7 Do
8 CurrentTable.Rows(i)("物资信息_单据编号") = Rand.Next(9999)
9 If cfList.Contains(djID) = False Then
10 cfList.Add(djID)
11 End If
12 Loop While cfList.Contains(djID) = True
13 End If
14 Next


运行了没有效果

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
代码  发帖心情 Post By:2020/6/19 15:38:00 [显示全部帖子]

Dim rqList As New List(of Date)
Dim Cot As Integer = CurrentTable.Rows.Count - 1

For i As Integer = 0 To Cot
    Dim ksRQ As Date = CurrentTable.Rows(i)("项目信息_开始日期")
    Dim djID = CurrentTable.Rows(i)("物资信息_单据编号")
    If rqlist.Contains(ksRQ) = False Then
        rqlist.Add(ksRQ)
        Output.show(ksRQ)
    End If
Next

For Each d1 As Date In rqList
    For i As Integer = 0 To Cot
        If CurrentTable.Rows(i)("项目信息_开始日期") = d1 Then
            CurrentTable.Rows(i)("物资信息_单据编号") = Format(d1,"yyyyMMdd") & format(Rand.Next(1,99),"0000")
        End If
    Next
Next

For i As Integer = 0 To Cot
    Dim cfList As New List (of String)
    Dim djID = CurrentTable.Rows(i)("物资信息_单据编号")
    If cfList.Contains(djID) = False Then
        cfList.Add(djID)
    Else
        Do
            CurrentTable.Rows(i)("物资信息_单据编号") = Rand.Next(9999)
            If cfList.Contains(djID) = False Then
                cfList.Add(djID)
            End If
        Loop While cfList.Contains(djID) = True
    End If
Next

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
那一列必须是一个0-100的随机值  发帖心情 Post By:2020/6/19 16:02:00 [显示全部帖子]

那一列必须是一个1-99的随机值,而不能是顺序+1...

每个日期下,djID的值必须是一个1-99的随机值,且不能重复。
[此贴子已经被作者于2020/6/19 16:03:13编辑过]

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
或者说我想实现这样:  发帖心情 Post By:2020/6/19 16:09:00 [显示全部帖子]

或者说我想实现这样:这一列根据日期生成1-99的不重复的值,要如何写??

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
  发帖心情 Post By:2020/6/19 16:27:00 [显示全部帖子]

那么我这个去重复值得办法可以实现吗?

就是把随机生成的string加入集合。并用Contains检测。如果检测到没有重复的,就加入集合。如果检测到重复的,就重新生成一次。直至和集合内的值没有重复的。

For i As Integer = 0 To Cot
    Dim cfList As New List (of String)
    Dim djID = CurrentTable.Rows(i)("物资信息_单据编号")
    If cfList.Contains(djID) = False Then
        cfList.Add(djID)
    Else
        Do
            CurrentTable.Rows(i)("物资信息_单据编号") = Rand.Next(9999)
            If cfList.Contains(djID) = False Then
                cfList.Add(djID)
            End If
        Loop While cfList.Contains(djID) = True
    End If
Next

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
  发帖心情 Post By:2020/6/19 16:41:00 [显示全部帖子]

老师 在吗

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


加好友 发短信
等级:幼狐 帖子:108 积分:1044 威望:0 精华:0 注册:2018/11/21 18:11:00
  发帖心情 Post By:2020/6/19 16:55:00 [显示全部帖子]

还是进死循环。。

 回到顶部