Foxtable(狐表)用户栏目专家坐堂 → [求助]请老师帮我写个根据要求抽取数据的代码


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

主题:[求助]请老师帮我写个根据要求抽取数据的代码

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]请老师帮我写个根据要求抽取数据的代码  发帖心情 Post By:2015/1/10 14:40:00 [只看该作者]

假定表中有如下内容:
卷号                重量    行号       母卷号     
CS100001      100    1        CS100001
CS100001A    50      2        CS100001
CS100001A    45      3        CS100001
CS100001B    50      4        CS100001
CS100001B    40      5        CS100001
CS100001BA  20      6        CS100001
CS100001BB  20      7        CS100001
CS100002      200    8       CS100002
CS100002      195    9       CS100002

表内卷号的意义:
一个卷初始编号即母卷号为8位数,如CS100001,在加工过程发生了断带,就会变成二个卷(或多个卷),这时,断后的二个卷在原未断前的卷号后面跟上英文字母,断后的卷继续加工,只要不再断卷,卷号保持不变,卷的重量随着加工的进程,会有一定的损耗,就如行号2的分卷重量50 继续加工后得到行号3的重量45

想通过一段代码抽取断后分卷的期初重量合计,思路如下:
当下一行的卷号位数比上一行多一位时,并且母卷号相等,即行号2比行号1的位数多了一位,二行的母卷号一致,可判断发生了断带分卷。
当发生断带分卷时,要求统计出断后的二个卷期初的重量,即行号2与行号4的重量,将此重量合计赋值给变量 FJZ
谢谢老师!

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/10 14:53:00 [只看该作者]

没搞懂逻辑, 统计2和4? 那按道理 2  4  6  7 都符合统计要求啊.为什么就不管6 7了呢?

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/1/10 15:04:00 [只看该作者]

6与7二行是由第5行断带后生成的,对于第1行的断带后分卷期初重量只有2与4二行,我要做这些实际是想算投料量,然后算出每道工序的成材率,我把表写的完整些。

卷号                重量    行号       母卷号        投料量    投料量计算方法
CS100001      100    1        CS100001    100
CS100001A    50      2        CS100001    50       100*50/(50+50) 解释:分卷前重量*本行卷重/分卷总重即2与4二行
CS100001A    45      3        CS100001    50
CS100001B    50      4        CS100001    50
CS100001B    40      5        CS100001    50
CS100001BA  20      6        CS100001    25       
CS100001BB  20      7        CS100001    25      50*25/(25+25)
CS100002      200    8       CS100002     200
CS100002      195    9       CS100002     200

由此可见,上表中第7行的成材率是80%,即20/25*100%
[此贴子已经被作者于2015-1-10 15:06:26编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/1/10 18:49:00 [只看该作者]

老师有空吗,帮我看看如何写代码,谢谢!

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2015/1/10 19:01:00 [只看该作者]

楼主提问的方法,就有问题。

别人要写代码,就要引用表,你不提供实例,表也没一张,别人就要从头开始做个小项目、建表、填写足够的数据,然后才能开始写代码,
还要测试代码,如果楼主有疑问,还要往返几个来回,来来去去,时间都耽误了。

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/1/10 20:21:00 [只看该作者]

做了个例子,麻烦老师了。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:投料量分摊.rar


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


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

Dim drs As List(Of DataRow) = DataTables("轧机1号").Select("", "日期,卷号")
drs(0)("投料量")=drs(0)("重量")
For i As Integer = 1 To drs.Count - 1
    If drs(i)("卷号") <> drs(i-1)("卷号") AndAlso drs(i)("卷号").Contains(drs(i-1)("卷号")) Then
        drs(i)("投料量") = drs(i)("重量") / (drs(i)("重量")+drs(i+1)("重量")) * drs(i-1)("重量")
        drs(i+1)("投料量") = drs(i+1)("重量") / (drs(i)("重量")+drs(i+1)("重量")) * drs(i-1)("重量")
        i += 1
    Else
        drs(i)("投料量") = drs(i)("重量")
    End If
Next

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/1/11 12:22:00 [只看该作者]

甜老师,计算结果有错误,麻烦您再帮我看看。

 


图片点击可在新窗口打开查看此主题相关图片如下:投料量计算结果图.jpg
图片点击可在新窗口打开查看


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


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

Dim drs As List(Of DataRow) = DataTables("轧机1号").Select("", "日期,卷号")
drs(0)("投料量")=drs(0)("重量")
Dim tll As Double = drs(0)("重量")
For i As Integer = 1 To drs.Count - 1
    If drs(i)("卷号") = drs(i-1)("卷号")
        drs(i)("投料量") = tll
    Else If drs(i)("卷号").Contains(drs(i-1)("卷号")) Then
        drs(i)("投料量") = drs(i)("重量") / (drs(i)("重量")+drs(i+1)("重量")) * drs(i-1)("投料量")
        drs(i+1)("投料量") = drs(i+1)("重量") / (drs(i)("重量")+drs(i+1)("重量")) * drs(i-1)("投料量")
        i += 1
        tll = drs(i)("投料量")
    Else
        tll = drs(i)("重量")
        drs(i)("投料量") = tll
    End If
Next

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/1/11 12:44:00 [只看该作者]

甜老师,万分抱歉,我之前给的样例不是很好,我看了你的代码,是假定每次分卷只会出二个来写的,实际上,分几个不一定的,可能是3个甚至5个,我把样例改了下,注意看第10行,您老再帮我看看,万分感谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:投料量分摊new.rar

[此贴子已经被作者于2015-1-11 12:47:41编辑过]

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