以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求教老师,怎么遍历A表后给B表的多值字段赋值呢...有新问题.. (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=137491) |
-- 作者:iswear512 -- 发布时间:2019/7/7 20:51:00 -- 求教老师,怎么遍历A表后给B表的多值字段赋值呢...有新问题.. 请教老师: 目标是给 tables("收入").Current("隶属订单") 这个地方赋值,已经设置成多值字段 数据来源为tables(”订单表”),复选框已打开 想遍历tables(“订单表”).Checked = true的行 把里面若干个“订单编号” 以多值字段形式添加到tables("收入").Current("隶属订单") 该怎么操作呢 更新............................................................................................................................. 这几天试了一些表达式和代码语法,之前混用的太多导致频频出错,现在好一些了。 现在出现衍生的新问题,也是多值字段相关,折腾许久无果,又需要来请教老师了 ![]() 新问题就是
Tables("订单表").Filter = "订单编号 In (\'" & Tables("收入表").Current("隶属订单").replace(",","\',\'") & "\')" 目前是通过这样的形式,把“订单表”和“收入表”联系起来,“收入表”里的“隶属订单”字段由N个订单编号组成的多值字列 现("订单表")内某A行,订单编号从"SD01"改为"SD02",为了重新建立筛选关联,怎么遍历收入表,把符合条件的行中的多值字列("隶属订单")里含的SD01数值全部改成SD02呢? 更新.............................................................................................................................. 上面用 Dim ss1 As String = e.OldValue
Dim ss2 As String = e.NewValue For Each r As Row In Tables("收入表").rows r("隶属订单") = r("隶属订单").replace(ss1,ss2) Next 这段代码解决了问题 .. 然而 ............................ 今天碰到了新bug,发现把这一行删掉的过程中,没办法用replace(",","\',\'")这个语句,用空值来代替原始值阿 (⊙﹏⊙) 还会多个逗号.. 翻了半天帮助无过,只好又来求助了 ![]() ...更新... 干脆遍历table来重新生成了值 ..暂时解决了 [此贴子已经被作者于2019/7/23 23:08:52编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/7/7 21:31:00 -- If Tables("收入").Current IsNot Nothing Dim str As String For Each r As Row In Tables("订单表").GetCheckedRows str = str & "," & r("订单编号") Next Tables("收入").Current("隶属订单") = str.Trim(",") End If
|
-- 作者:iswear512 -- 发布时间:2019/7/7 21:31:00 -- 谢谢老师 我去试试 |
-- 作者:iswear512 -- 发布时间:2019/7/7 22:01:00 -- 试了一下,代码运行正常,但产生了新问题 假如并没有任何行被checked,就会报错 试着加了句判断,还是报错,不知为何 ![]() If Tables("收入").Current IsNot Nothing Dim str As String For Each r As Row In Tables("订单表").GetCheckedRows If r IsNot Nothing Then str = str & "," & r("订单编号") End if Next Tables("收入").Current("隶属订单") = str.Trim(",") End if
|
-- 作者:有点蓝 -- 发布时间:2019/7/7 22:10:00 -- Dim str As String 改为 Dim str As String = ""
|
-- 作者:iswear512 -- 发布时间:2019/7/7 22:23:00 -- 可以用了 谢谢这么晚还帮我们解答疑难 我刚才想了个办法检测有没有行被选中 定义个txt for each 遍历下行 假如有任何一行选中的话 txt =1,没有的话txt = 0 这样行是行了 不知道是不是有更简便的办法
|
-- 作者:有点蓝 -- 发布时间:2019/7/7 22:32:00 -- msgbox(Tables("订单表").GetCheckedRows.count) |
-- 作者:iswear512 -- 发布时间:2019/7/7 22:36:00 -- 谢谢谢谢 原来可以计数 |
-- 作者:iswear512 -- 发布时间:2019/7/7 23:37:00 -- 又产生新问题了 ![]() 刚才的逆向,根据已经添加过多值数列的tables("收入").Current("隶属订单")的内容 来筛选对应的订单 例: tables("收入").Current("隶属订单“)里内容是 AA111,AA112,AA113 目前代码是 Tables("订单表").Filter = "订单编号 In (" & Tables("收入表").Current("隶属订单") & ")" 报错 是不是 in 这种不能这么用?
[此贴子已经被作者于2019/7/8 0:01:00编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/7/8 8:40:00 -- Tables("订单表").Filter = "订单编号 In (\'" & Tables("收入表").Current("隶属订单").replace(",","\',\'") & "\')" |