Foxtable(狐表)用户栏目专家坐堂 → 如何在多值数据中剔除重复的数据


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

主题:如何在多值数据中剔除重复的数据

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
如何在多值数据中剔除重复的数据  发帖心情 Post By:2017/8/26 10:14:00 [只看该作者]

如何在多值数据中剔除重复的数据
代码如下:
TextChanged事件
'当前控件的下拉列表从列表目录中提取下拉清单的值 
Dim cmb As WinForm.CheckedComboBox = e.form.Controls("CheckedComboBox批色添加")
Dim cmb1 As WinForm.ComboBox = e.form.Controls("ComboBoxcolor_zname")
Dim cmb2 As WinForm.CheckedComboBox = e.form.Controls("CheckedComboBoxcolor_cyname") 
Dim str As String
If cmb.text <> "" Then
    str = cmb.text
    str = str.Replace(",","|")
    If cmb1.text = "" Then 
        cmb2.text = str
        cmb2.writevalue
        cmb1.text = str
    Else
        cmb1.text = cmb1.text & "|" & str 
    End If 
    cmb1.writevalue
End If

1-选择多值数据

此主题相关图片如下:qq图片20170826100732.png
按此在新窗口浏览图片
2-写入左边键【没有原来已有的去除重复值 】

此主题相关图片如下:qq图片20170826100754.png
按此在新窗口浏览图片
3-正确定稿左边键的值,自动去除所有重复出现的数据【不止一个后期会几十个,以数组循环形式去除】

此主题相关图片如下:qq图片20170826100819.png
按此在新窗口浏览图片

就是列如:
已有列表数据:透明玻璃|半透明玻璃|棕色滤光玻璃璃|过滤杂光玻璃
现在新增数据:棕色滤光玻璃璃|过滤杂光玻璃|防强光玻璃|防紫外线玻璃|A1|B2|C3
自动更新数据应为:透明玻璃|半透明玻璃|棕色滤光玻璃璃|过滤杂光玻璃|防强光玻璃|防紫外线玻璃|A1|B2|C3


[此贴子已经被作者于2017/8/26 10:25:14编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/26 10:38:00 [只看该作者]

在ComboBox的Enter事件中加入类似代码:

Dim cmb As WinForm.ComboBox = e.form.Controls("ComboBox1")
cmb.ComboList = 
DataTables("表A").GetComboListString("颜色范围")



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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
  发帖心情 Post By:2017/8/26 11:09:00 [只看该作者]

还不像这个代码

就是说我现有目标行的数据已经有了,假设很多情况下如何外加多值数据的数据集合对已有数据进行查找并替换删除后,再添加至原有数据行中。
这样不会重复


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/26 11:30:00 [只看该作者]

使用字符的split方法拆分原有的值,写入集合,新的值同样处理,然后遍历判断一下如果不在集合中的才添加,最后把集合还原为|连接的字符串
[此贴子已经被作者于2017/8/26 11:30:03编辑过]

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
  发帖心情 Post By:2017/8/26 13:55:00 [只看该作者]

现在得出
黑色|红色|A1|b1|c1|d1
这个数组
后面如何与前者对替换,没搞太明白写法-然后遍历判断一下如果不在集合中的才添加,最后把集合还原为|连接的字符串
谢谢老师指教
写个范例

[此贴子已经被作者于2017/8/26 13:55:38编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/26 14:03:00 [只看该作者]

Dim s As String = "a|b|c"
Dim s2 As String = "a|d|c|H|J"
Dim lst As new List(of String)
lst.AddRange(s.Split("|"))

For Each v As String In s2.Split("|")
    If lst.Contains(v) = False Then lst.Add(v)
Next

Output.Show(String.Join("|",lst.ToArray()))

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
  发帖心情 Post By:2017/8/27 10:01:00 [只看该作者]

谢谢老师已解决


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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
  发帖心情 Post By:2017/8/27 11:20:00 [只看该作者]

还有一个问题如何对上述列表字符进行自动排序后再写入呢???

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
  发帖心情 Post By:2017/8/27 11:43:00 [只看该作者]

再者集合

集合类似于数组,但是比数组更为灵活,定义集合的语法是:

Dim 集合名称 As New List(Of 数据类型)

例如

Dim Names As New List(Of String)

表示定义了一个字符型(String)集合,集合的名称为Names。

集合的成员包括:

名称类型说明
Add方法向集合中增加一个值
Insert方法向集合的指定位置插入一个值
Remove方法删除指定的值
RemoveAt方法删除指定位置的值
Contains方法判断集合中是否包括某个值
Indexof方法返回指定值在集合中的位置,如果集合中不存在该值,则返回-1
AddRange方法批量增加多个值
ToArray方法将集合转换为数组
Clear方法清除集合中的所有成员
Count属性返回集合中值的个数

一旦定义了集合,我们就可以用Add方法向其中添加值,例如:

可不可以查找对象如

1

2

3

4

5#

对它查找后

查找值为#

有的跳过

没有的自动在后面+ “#”

这个如何实现 




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/27 12:04:00 [只看该作者]

Dim s As String = "b|c|a"
Dim s2 As String = "d|c|H|J|a"
Dim lst As new List(of String)
lst.AddRange(s.Split("|"))


For Each v As String In s2.Split("|")
    If lst.Contains(v) = False Then lst.Add(v)
Next

dim ary = lst.ToArray
array.sort(ary)

Output.Show(String.Join("|",ary))


 回到顶部
总数 13 1 2 下一页