Foxtable(狐表)用户栏目专家坐堂 → [求助]FOXTABLE能否对数据表作这样的合并


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

主题:[求助]FOXTABLE能否对数据表作这样的合并

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
[求助]FOXTABLE能否对数据表作这样的合并  发帖心情 Post By:2011/4/28 16:46:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq1.png
图片点击可在新窗口打开查看

 

现有如上图的表,能否利用代码筛选出单机量为负的行,然后再找出包含有与其相同位号的行(如第4行单机量为-1,其位号列为C102,这就需要找到包含有与其有相同位号C102的第1行),然后将其单机量相加【2+(-1)=1】,同时在第一行的位号列中删去C102.

 

最终希望能出现下表


图片点击可在新窗口打开查看此主题相关图片如下:qq2.png
图片点击可在新窗口打开查看

只是现在这个表是手工输入的,现在希望能通过代码完成。


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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/28 16:48:00 [显示全部帖子]

现在对如何实现增删位号这个操作无头绪,通过定义集合不知道行不行

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/28 17:55:00 [显示全部帖子]

以下是引用blackzhu在2011-4-28 17:09:00的发言:
但是为什么要删除"C102",规则是什么?

 

C102是线路板上的1个位置,其实表1第1行的现实意义是:C101和C102这两个位置各插着1个代码为AA的电容,而第4行的现实意义就是:将C102这个位置的电容去掉。这样线路板上就只剩下C101这个位置还插着AA电容了。所以需要删除C102,然后单机量-1。

第3行和第5行也是一个道理(其实按道理第3行和第5行的代码本来应该要一样的,但习惯了粗放式制造业工作方式的工程师往往不关注一个位号之前插的是什么零件,而只关注最后插的是什么零件,所以为了提高FOXTABLE以后运行时的容错率,我这里故意将其输成不一样)。

 

其实规则就是只要两行包含有相同的位号(第1行和第4行,第3行和第5行),就将相同的位号删去,然后单机量相加,然后保留位号多的那一行的其他列信息(如第1行删去C102后还剩C101,而第5行删去C102后就没有其他位号了,所以得出表2第1行的结果)。

[此贴子已经被作者于2011-4-28 18:01:16编辑过]

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/28 19:34:00 [显示全部帖子]

以下是引用mr725在2011-4-28 19:22:00的发言:
第1行和第4行:能看懂(代码、材料名称、规格型号等都一样),但是:第3行和第5行 好像没有规律了,是不是你输入错了?。

(其实按道理第3行和第5行的代码本来应该要一样的,但习惯了粗放式制造业工作方式的工程师往往不关注一个位号之前插的是什么零件,而只关注最后插的是什么零件,所以为了提高FOXTABLE以后运行时的容错率,我这里故意将其输成不一样)。

 

 

能否只通过找到包含相同位号的两行来处理?

[此贴子已经被作者于2011-4-28 19:38:06编辑过]

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/28 20:28:00 [显示全部帖子]

真的没有一点办法吗?将位号定义为集合有没有机会解决?效率低点没太大关系

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/28 21:28:00 [显示全部帖子]

能否这样:定义单机量为正的行的位号列内容为集合(还是说每一行的就是1个集合?),先选定单机量为负的一行,然后在单机量为正的行中逐行判定是否contains其位号,是的话在集合中用remove删去该位号,否的话继续下一行,直到找到为止。

 

这个办法有可能实现吗?


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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/29 10:21:00 [显示全部帖子]

还是没有什么头绪,现在想到一个笨办法,在做表1的时候,每一行只包含一个位号和一个单机量,如下图


图片点击可在新窗口打开查看此主题相关图片如下:qq1.png
图片点击可在新窗口打开查看

这样就只需要比较位号列的内容是否一样了,如果一样,则同时删除这两行,只是最终又多了将相同代码行的单机量合并和位号内容合并的工作。


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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/29 11:04:00 [显示全部帖子]

我想把表中位号相同的行删除,写了如下代码,应如何修改

 

Dim dr1,dr2 As DataRow
Dim drs As List(Of DataRow)
    dr1 = DataTables("表1").Find("单机量>0")
    dr2 = DataTables("表1").Find("单机量<0")
drs = DataTables("表1").Select(dr1("位号") = dr2("位号"))
DataTables("表1").DataRows(drs).Delete()

 

出现了如下错误

 



此主题相关图片如下:qq2.png
按此在新窗口浏览图片
[此贴子已经被作者于2011-4-29 11:12:48编辑过]

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/29 11:49:00 [显示全部帖子]

以下是引用狐狸爸爸在2011-4-29 11:26:00的发言:

drs = DataTables("表1").Select("位号 = '" & dr1("位号") & "'")

这行是什么意思,不是应该选出位号相同的行吗?而且运行起来还是有错误提示

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq3.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:童狐 帖子:255 积分:2353 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2011/4/29 15:44:00 [显示全部帖子]

18楼的方法没问题,只需将最后一行"[单机量] < 0 " 改为"[单机量] <= 0 "就可以了,解决了我一个大难题,非常感谢

图片点击可在新窗口打开查看 现正在仔细学习中。

 

不过20楼的最后一行代码是什么意思呢,好像FOXTABLE帮助中_Identify的讲述不多,而且运行起来也还是有错误提示。

 


图片点击可在新窗口打开查看此主题相关图片如下:qq10.png
图片点击可在新窗口打开查看

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