以文本方式查看主题

-  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(",","\',\'") & "\')"