以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计子表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176011)

--  作者:Dxm123456789
--  发布时间:2022/3/27 13:27:00
--  统计子表
表A有一列’总进度’,表B有一列‘进度’。 进度的项目为“待生产,生产中,已完成”     不用辅助列可以统计子表表B的进度吗?
--  作者:有点蓝
--  发布时间:2022/3/27 20:42:00
--  
请举例说明,统计子表表B的什么进度
--  作者:Dxm123456789
--  发布时间:2022/3/29 14:14:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20220329141608.png
图片点击可在新窗口打开查看



--  作者:有点蓝
--  发布时间:2022/3/29 14:35:00
--  
这种需要使用代码处理,参考:http://www.foxtable.com/webhelp/topics/1453.htm

表B,datacolchanged事件
Select Case e.DataCol.Name
    Case
 "切","磨",
"钢"
        
Dim Filter As String = "[生产单号] = \'" & e.DataRow("生产单号") & "\'"
        DataTables("表A").DataCols("总进度_" & e.DataCol.Name).RaiseDataColChanged(Filter)
End Select

表A,datacolchanged事件
Select Case e.DataCol.Name
    Case
 
"总进度_切","总进度_","总进度_钢"
Dim Filter As String = e.DataCol.Name.split("_")(1) & " = \'待生产\'"
Dim Filter2 As String = e.DataCol.Name.split("_")(1) & " = \'生产中\'"
if DataTables("表B").compute("count(生产单号)",Filter) > 0 then
     e.DataRow(e.DataCol.Name)= "待生产"
elseif DataTables("表B").compute("count(生产单号)",Filter2) > 0 then
     e.DataRow(e.DataCol.Name)= "生产中"
else
e.DataRow(e.DataCol.Name)= "已完成"
end if
End Select


--  作者:Dxm123456789
--  发布时间:2022/3/29 14:54:00
--  
谢谢老师!我懂了!