Foxtable(狐表)用户栏目专家坐堂 → [求助]自定义合并多次导入部分数据重复


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

主题:[求助]自定义合并多次导入部分数据重复

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]自定义合并多次导入部分数据重复  发帖心情 Post By:2012/9/7 9:48:00 [只看该作者]

应用场景:有一个货物编号表,希望直接合并到表B中。

于是我在管理项目>菜单设计>程序菜单>项目里加了一个merge的项,参考帮助设置了代码。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义合并数据.rar


但是有分类无明细的行总是会重复出现,合并一次出现一次。

这个应当如何解决 ?
[此贴子已经被作者于2012-9-7 9:54:53编辑过]

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/9/7 10:11:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/9/7 10:40:00 [只看该作者]

因为你多了后面那段  and  coding = '" & sheet(n,1).Value & "'

 

把上面这段删了就不会导入重复的了,

不过建议使用标识列表示每行的内容,以防止重复咯。




我想你可能理解错了。
我是要把EXCEL表里的所有行都合并到表B中去,不论合并多少次,都只是EXCEL中的那些行。

判断重复的标准不是code列不重复,而是code+coding不重复。
[此贴子已经被作者于2012-9-7 10:40:52编辑过]

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/9/7 10:50:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/9/7 11:03:00 [只看该作者]

 Dim dr As DataRow = DataTables("表B").Find("code = '" & sheet(n,0).Value & "' ")
        If dr Is  Nothing Then
            dr = DataTables("表B").AddNew()
        End If
        For m As Integer = 0 To nms.Length - 1
            dr(nms(m)) = Sheet(n,m).Value
        Next

 

你不是做了重复不录入的判断了么???


请注意一下,EXCEL表里的code列是有重复的,而coding列有空白行。但code+coding就没有重复行了。


问题是判断不生效啊,我的判断不重复的条件是code列和coding列组合起来是不重复的

如果不信,你点左上角>导入货物分类,选择那个EXCEL试试。

如果用你这一段,就只能合并5行,并且这5行本应是明细编号为空白对应的行,而实际上不是,例如明细编号为1.1.1.6和1.1.2.6以及1.1.3.6是不应当合并进来的。

用我那一段,就能合并21行。但如果我再合并一次,就会把明细编号为空白的那5行再增加一次进去。再合并一次,又会增加明细编号为空白的那5行.


我本意是不管合并多少次,都只合并那21行,除非code列+coding列的文本发生了变化,或增加了新行。

[此贴子已经被作者于2012-9-7 11:46:48编辑过]

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/9/7 12:02:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/9/7 12:45:00 [只看该作者]


我明白了,那您有没有数据唯一的列,就是没有重复数据的列?例如Unit列,单位不重复?


——这个确实是没有。判断是否重复,只能组合判断才可以。
是不是能这样变通处理:在要合并的源文件中增加一列code&coding,然后在表B中也增加一列
code&coding,这么干?
其实我的目的是把猪杀死,要求不太过分,都可以接受。

用变通的方法可以完成。增加辅助列……
不知各位狐神能不能指教一个更好的方法?
[此贴子已经被作者于2012-9-7 13:27:22编辑过]

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


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

楼主,可能是筛选条件没有注意到null值的情况。

        Dim s1 As String = sheet(n, 0).Value
        Dim s2 As String = sheet(n, 1).Value
        Dim dr As DataRow = DataTables("表B").Find("(code = '" & s1 & "' or code is null and '" & s1 & "' = '') And  (coding = '" & sheet(n,1).Value & "' or coding is null and '" & s2 & "' = '')")


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


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/9/10 17:08:00 [只看该作者]

非常感谢。 试验有效。

 回到顶部