以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何对关联表的关联行取值?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59244)

--  作者:audience68
--  发布时间:2014/10/31 11:39:00
--  如何对关联表的关联行取值?
一个任务单表,一个与任务单表关联的放行单表,任务单表中的“监造是否完成”列中的状态需根据放行单关联行中“监造是否完成”栏的值进行变更,当在放行单表中关联行多于一条时,如何将最后录入的一行中的“监造是否完成”栏值取到任务单表的对应栏。我现在只能取放行单表中中关联的第一行。请专家指点,谢谢!

维护的代码为:

监造基本信息表_DataColChanged

 

If e.DataCol.Name = "监造流水号" Then

    If e.NewValue Is Nothing Then

        e.DataRow("监造是否完成") = Nothing

    Else

        Dim dr As DataRow

        \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr

        dr = DataTables("监造放行单表").Find("[监造流水号] = \'" & e.NewValue & "\'")

        If dr IsNot Nothing Then

            e.DataRow("监造是否完成") = dr("监造是否完成")

            e.DataTable.Save()

        End If

    End If

End If


两个表为:

任务单表如下

任务编号 监造流水号 合同编号 监理人员 主要物资名称 合同交货时间 项目经理 监造是否完成
1 CI201410001 8100012345 李四 反应器 2014-10-31 易峰 部分完成
2 CI201410002 8100012346 王五 换热器 2014-10-31 易峰 正在监造
3 CI201410003 8100012347 张三 高压容器 2014-10-31 易峰 正在监造
4 CI201410004 8100012348 李四 低压容器 2014-10-31 易峰 正在监造
5 CI201410005 8100012349 张三 低压容器2 2014-10-31 易峰 正在监造


关联的放行单表如下:
任务编号 监造流水号 合同编号 主要物资名称 监造放行单编号 监造是否完成 监理人员
1 CI201410001 8100012345 反应器 CI201410001F001 部分完成 李四
1 CI201410001 8100012345 反应器 CI201410001F002 全部完成 李四




--  作者:有点甜
--  发布时间:2014/10/31 11:54:00
--  

 取多行参考

 

http://www.foxtable.com/help/topics/0400.htm

 


--  作者:audience68
--  发布时间:2014/10/31 12:14:00
--  
甜版,可能我没说清楚,我的意思是:
对于任务表中的任务但编号1的一行,在关联表-放行单表中有2个关联行,但是我要取“监造放行单编号”最大的那一行中的“监造是否完成”栏中的值,并非把关联行找出来。即,把任务单表中任务编号为1的一行的“部分完成”改称放行单表中与之关联的第二行的“全部完成”。

--  作者:audience68
--  发布时间:2014/10/31 12:34:00
--  
甜版,我考虑了一下,觉得应该是这样的逻辑,在子表中修改监造是否完成”栏,一旦完成修改(DataColChanged),就对应修改父表中关联行中的监造是否完成”栏,这样就只需要编写子表的DataColChanged,不知是否对?
--  作者:audience68
--  发布时间:2014/10/31 12:56:00
--  
甜版,问题自己解决了,思路就是修改子表就对应修改关联主表。