以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于父表数据自动统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104209)

--  作者:云淡风轻
--  发布时间:2017/7/25 14:25:00
--  [求助]关于父表数据自动统计问题
例子:父表A有字段:学号,姓名,科目数,总分;
        子表B有字段:科目号,名称,分数,学号。
两表通过学号关联起来,比如小明学了6门课,那么子表就有6条记录,即6门课成绩,
然后要求是:能够将子表的分数之和自动统计到父表的“总分”字段中,子表的条目数统计到“科目数”,
而且是子表每新增一行,自动统计一次,代码如何设置呢?谢谢!

--  作者:有点蓝
--  发布时间:2017/7/25 15:54:00
--  
参考:


--  作者:云淡风轻
--  发布时间:2017/7/26 9:52:00
--  
1、以下代码写到文件库表事件的DataRowAdded中

e.DataTable.save()
Dim pr As DataRow = e.DataRow.GetParentRow("案卷库")
If pr IsNot Nothing Then
    pr("卷内份数") = e.DataTable.DataRows.Count
End If

2、以下代码写到文件库表事件的BeforeDeleteDataRow中

e.DataTable.save()
Dim pr As DataRow = e.DataRow.GetParentRow("案卷库")
If pr IsNot Nothing Then
    pr("卷内份数") = e.DataTable.DataRows.Count-1
    pr("总页数") = DataTables("文件库").Compute("Sum(总页数)","[案卷号] = \'" & e.DataRow("案卷号") & "\' and _Identify <> " & e.DataRow("_Identify"))
    pr("起止日期") = DataTables("文件库").Compute("min(成文日期)","[案卷号] = \'" & e.DataRow("案卷号") & "\' and _Identify <> " & e.DataRow("_Identify")) " - " DataTables("文件库").Compute("max(成文日期)","[案卷号] = \'" & e.DataRow("案卷号") & "\' and _Identify <> " & e.DataRow("_Identify"))
End If


3、以下代码写到文件库表事件的DataColChanged中

e.DataTable.save()
Dim pr As DataRow = e.DataRow.GetParentRow("案卷库")
If pr IsNot Nothing Then
    pr("总页数") = DataTables("文件库").Compute("Sum(总页数)","[案卷号] = \'" & e.DataRow("案卷号") & "\'")
    pr("起止日期") = DataTables("文件库").Compute("min(成文日期)","[案卷号] = \'" & e.DataRow("案卷号") & "\'") " - " DataTables("文件库").Compute("max(成文日期)","[案卷号] = \'" & e.DataRow("案卷号") & "\'")
End If


--  作者:云淡风轻
--  发布时间:2017/7/26 9:54:00
--  
我自己整理了一下图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2017/7/26 10:07:00
--  

回复3楼,如果代码还有问题,做个具体例子发上来测试。