以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨表代码实现计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146921)

--  作者:ntqhj
--  发布时间:2020/3/6 0:22:00
--  [求助]跨表代码实现计算
代码实现跨表计算:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:希望完成计算.table




--  作者:ntqhj
--  发布时间:2020/3/6 11:09:00
--  
老师好!有关跨表计算目前实在搞不定,老师帮我下。感谢!


--  作者:有点蓝
--  发布时间:2020/3/6 11:15:00
--  
承运人表datacolchanged

Select Case e.DataCol.Name
    Case  "装车件数"
        If e.DataRow.IsNull("装车件数")  Then
            e.DataRow("装车重量") = Nothing
        Else
            Dim dr As DataRow  = DataTables("接单明细表").find("内部编号=\'" & e.DataRow("内部编号")  & "\'")
            If dr Is Nothing OrElse dr("件数") = 0 Then
                e.DataRow("装车重量") = Nothing
            Else
                e.DataRow("装车重量") = dr("货物重量") / dr("件数") * e.DataRow("装车件数")
            End  If
        End  If
End Select

--  作者:ntqhj
--  发布时间:2020/3/6 12:50:00
--  
非常感谢老师!另:件数、货物重量、装车件数的值任意修改,装车重量随之计算,如何实现?目前我改动件数、货物重量,装车重量不计算,还是原来的重量。
--  作者:有点蓝
--  发布时间:2020/3/6 15:30:00
--  
参考:http://www.foxtable.com/webhelp/topics/1472.htm,到父表写代码,类似这种用法

Select Case e.DataCol.Name
    Case
 "数量","单价","折扣"
        
Dim pr As DataRow
        pr = 
DataTables("统计").Find("产品 = \'" & e.DataRow("产品") & "\'")
        If
 pr IsNot Nothing Then
            DataTables
("统计").DataCols("产品").RaiseDataColChanged(pr)
        End
 If
End
 Select

--  作者:ntqhj
--  发布时间:2020/3/6 17:54:00
--  
谢谢老师!


--  作者:ntqhj
--  发布时间:2020/3/8 17:30:00
--  
老师好!按帮助做了,没做好。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表计算重量及重置.table
父表的货物重量修改后,子表的装车重量只能自动更新第一行数据,将鼠标选在子表装车件数任一单元格,点重置按钮可以实现更新。想实现:父表货物重量列或件数列有改变,子表装车重量列全部自动重置?请老师老师帮忙实现。感谢!
          

--  作者:有点蓝
--  发布时间:2020/3/8 22:54:00
--  
帮助只是针对一行记录的,子表有多行数据,改为这样

Select Case e.DataCol.Name
    Case "装车件数","货物重量"
        DataTables("承运人明细表").DataCols("装车件数").RaiseDataColChanged("内部编号 = \'" & e.DataRow("内部编号") & "\'")
End Select