以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]循环赋值 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160278) |
|
-- 作者:l1q2lq -- 发布时间:2021/1/27 13:34:00 -- [求助]循环赋值 老师,请教一下: 我的表中,3列,BOM层级、上级料号、料号,BOM层级这一列都是整数列,希望得到下面的结果
先获取当前物料的BOM层级(非0,如果是0不进行循环),减1得到一个值,然后向上循环,找出这个数,找到就退出循环,并将找到的料号赋值给上级料号 [此贴子已经被作者于2021/1/27 13:37:55编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2021/1/27 13:48:00 -- 就数据举例说明一下 |
|
-- 作者:l1q2lq -- 发布时间:2021/1/27 13:52:00 -- 如图: 第一行BOM层级是0,不进行循环 第二行BOM层级是1,1-1=0,向上循环,上级料号=(第一行)BOM层级0的料号1001 第三行BOM层级是2,2-1=1,向上循环,上级料号=(第二行)BOM层级1的料号1002 ... 第七行BOM层级是2,2-1=1,向上循环,上级料号=(第六行)BOM层级1的料号2003 向上循环时,找到最近的一个值
[此贴子已经被作者于2021/1/27 13:57:59编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2021/1/27 14:06:00 -- for each dr as datarow in datatables("xx").getvalues("BOM层","BOM层 <> 0") dim dr2 as datarow = datatables("xx").find("BOM层 = " & dr("BOM层") - 1) if dr2 isnot nothing then datatables("xx").replacefor("上级料号", dr2("料号"),"BOM层=" & dr("BOM层")) end if next |
|
-- 作者:l1q2lq -- 发布时间:2021/1/27 14:18:00 -- 无法将类型为“System.String”的对象强制转换为类型“Foxtable.DataRow”。 老师
|
|
-- 作者:有点蓝 -- 发布时间:2021/1/27 14:20:00 --
|
|
-- 作者:l1q2lq -- 发布时间:2021/1/27 14:33:00 -- 十分感谢 |
|
-- 作者:l1q2lq -- 发布时间:2021/1/27 17:09:00 -- 老师,实际运行出现问题了,麻烦再看一下 |
|
-- 作者:有点蓝 -- 发布时间:2021/1/27 17:16:00 -- for i as integer = tables(xx).rows.count - 1 to 0 step -1 if tables(xx).rows(i)("BOM层") > 0
for j as integer = i - 1 to 0 step -1 if tables(xx).rows(j)("BOM层") = tables(xx).rows(i)("BOM层") - 1 tables(xx).rows(j)("上级") = tables(xx).rows(i)("料号") exit for end if next end if next |
|
-- 作者:l1q2lq -- 发布时间:2021/1/27 17:21:00 -- 运行结果: |