以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跨表引用不能自动更新  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109381)

--  作者:chengjingliang
--  发布时间:2017/11/10 16:07:00
--  跨表引用不能自动更新
跨表引用不能自动更新,只能重置,错在哪了?


在完成明细表中跨表引用进度计划表中计划开始列(有配合)

Select Case e.DataCol.Name
    Case "单位工程","项目ID"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        If dr.IsNull("单位工程") OrElse dr.IsNull("项目ID") Then
            dr("计划开始") = Nothing
        Else
            Dim filter As String
            filter = "单位工程= \'" & dr("单位工程") & "\' And 项目ID= \'" & dr("项目ID") & "\'"
            pr = DataTables("进度计划").Find(filter)\'此为工料单价表
            If pr IsNot Nothing Then
                dr("计划开始") = pr("计划开始")
            End If
        End If
End Select


\'跨表引用进度计划表中计划完成列(有配合)

Select Case e.DataCol.Name
    Case "单位工程","项目ID"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow
        If dr.IsNull("单位工程") OrElse dr.IsNull("项目ID") Then
            dr("计划完成") = Nothing
        Else
            Dim filter As String
            filter = "单位工程= \'" & dr("单位工程") & "\' And 项目ID= \'" & dr("项目ID") & "\'"
            pr = DataTables("进度计划").Find(filter)\'此为工料单价表
            If pr IsNot Nothing Then
                dr("计划完成") = pr("计划完成")
            End If
        End If
End Select


在进度计划表中

\'\'配合完成明细表跨表引用计划开始计划完成

Select Case e.DataCol.Name

    Case "计划开始","计划完成"

     \'   Dim Filter As String = "[清单ID] = \'" & e.DataRow("清单ID") & "\'"

         Dim Filter As String = "[单位工程] = \'" & e.DataRow("单位工程") & "\' and [项目ID] = \'" & e.DataRow("项目ID") & "\'"

       DataTables("完成明细").ReplaceFor(e.DataCol.Name, e.NewValue, Filter)

End Select


[此贴子已经被作者于2017/11/10 16:07:54编辑过]

--  作者:有点甜
--  发布时间:2017/11/10 16:16:00
--  

代码没问题的。你操作什么的时候没有【自动更新】?

 

如果你执行代码时,使用了 systemready = false,是不会触发datacolchanged事件的。


--  作者:chengjingliang
--  发布时间:2017/11/10 16:31:00
--  
我希望新建统计表完成明细子表后自动引用进度计划表内计划完成列和计划开始列,不需要任何另外操作
--  作者:有点甜
--  发布时间:2017/11/10 16:44:00
--  
以下是引用chengjingliang在2017/11/10 16:31:00的发言:
我希望新建统计表完成明细子表后自动引用进度计划表内计划完成列和计划开始列,不需要任何另外操作

 

你新建完成明细子表的代码的后面,加上重置列的代码,如

 

For Each r As Row In Tables("统计.完成明细").rows
    r.DataRow.DataTable.DataCols("项目ID").RaiseDataColChanged(r.DataRow)
Next

 

 


--  作者:chengjingliang
--  发布时间:2017/11/10 17:17:00
--  
修改日期后怎么办,不能自动计算
--  作者:有点甜
--  发布时间:2017/11/10 17:49:00
--  
修改日期后如何计算?你可以在datacolchanged事件判断日期列,然后计算。