以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助,一段代码..  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=26225)

--  作者:even0898
--  发布时间:2012/11/27 15:59:00
--  求助,一段代码..

Dim rr As List (of DataRow) = e.DataRow.GetChildRows("待出单明细")
For Each r As DataRow In rr
    If r("是否交完") = True Then
        e.DataRow("是否结案") = True
    Else
        e.DataRow("是否结案") = False
    End If
Next

 

当子表中的逻辑列"是否交完"都为True的时候,父表中的逻辑列“是否结案”

这样写是否正确?我是放在beforesavedatarow里的

无反映。。。


--  作者:even0898
--  发布时间:2012/11/27 16:44:00
--  
顶起。。。图片点击可在新窗口打开查看
--  作者:lin_hailun
--  发布时间:2012/11/27 17:21:00
--  
 提问的话,最好有例子,没有例子,最好有说明,没办法说明,就选择联系客服QQ
--  作者:菲舍尔
--  发布时间:2012/11/27 23:29:00
--  

楼主的逻辑出现了问题,看楼主的代码,明显是一对多的关系

 

当你的代码执行的时候,是只会按照最后一个子行的值来进行赋值的,所以不一定是你想要的结果

 

你代码的本意应该不是这样的吧


--  作者:狐狸爸爸
--  发布时间:2012/11/28 9:18:00
--  
是的,逻辑问题
--  作者:飞
--  发布时间:2012/11/28 9:27:00
--  

用compute计算一下为true的行数是不是与子表的总行数一样

根据这个返回值来判断是否结案


--  作者:狐狸爸爸
--  发布时间:2012/11/28 9:29:00
--  

这样:

 

 

Dim rr As List (of DataRow) = e.DataRow.GetChildRows("待出单明细")
Dim cnt As Integer
For Each r As DataRow In rr
    If r("是否交完") = True Then
        cnt = cnt + 1
    End If
Next
e.DataRow("是否结案") = (rr.Count = cnt)