Foxtable(狐表)用户栏目专家坐堂 → 父表统计子表


  共有3897人关注过本帖树形打印复制链接

主题:父表统计子表

帅哥哟,离线,有人找我吗?
keli0917
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:291 积分:2730 威望:0 精华:0 注册:2018/5/21 16:49:00
父表统计子表  发帖心情 Post By:2020/2/7 9:50:00 [只看该作者]

1。采购信息是父表,收piao登记是子表。

先增加父表行,保存后,在另外窗口增加子表行。要实现子表数据录入后父表自动更新

 

'根据收piao登记统计不含税金额等列
Select Case e.DataCol.Name
    Case "工作号","报关单项号","工厂编号"
        Dim Filter As String = "工作号 = '" &  e.DataRow("工作号") & "'And 报关单项号 = '" &  e.DataRow("报关单项号") & "'And  客户ID= '" &  e.DataRow("工厂编号") & "'"
        e.DataRow("fa piao不含税金额小计") = DataTables("收piao登记").sqlCompute("Sum(fa piao不含税金额)",Filter)
        e.DataRow("fa piao进项税额小计") = DataTables("收piao登记").sqlCompute("Sum(fa piao进项税额)",Filter)
        e.DataRow("fa piao征税率平均") = DataTables("收piao登记").sqlCompute("Avg(fa piao征税率)",Filter)
        e.DataRow("fa piao退税率平均") = DataTables("收piao登记").sqlCompute("Avg(fa piao退税率)",Filter)
       
End Select

 

 

Select Case e.DataCol.Name
    Case  "fa piao不含税金额","fa piao进项税额" ,"fa piao征税率","fa piao退税率"
        Dim pr  As  DataRow
        Dim filter As String
        filter = "工作号 = '" & e.DataRow("工作号") & "'  And 报关单项号 = '" & e.DataRow("报关单项号") & "' And 工厂编号= '" & e.DataRow("客户ID") & "'"
        pr =  DataTables("采购信息").sqlFind(Filter)
        If pr  IsNot  Nothing  Then
            DataTables("采购信息").DataCols("工作号").RaiseDataColChanged(pr)
            DataTables("采购信息").DataCols("报关单项号").RaiseDataColChanged(pr)
           DataTables("采购信息").DataCols("工厂编号").RaiseDataColChanged(pr)
                       
        End  If
End Select

 

 

上面代码无法统计,不知道哪里有问题。

 

2.fa piao退税额为子表的表达式列。IsNull(Sum(Child(采购收piao).fa piao退税额),0),这样好象有问题,提示算术运算溢出。要怎么修改。

 


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/7 10:32:00 [只看该作者]

如果数据没有全部加载需要使用sqlCompute统计的,新增的数据必须先保存

Select Case e.DataCol.Name
    Case  "fa piao不含税金额","fa piao进项税额" ,"fa piao征税率","fa piao退税率"
        Dim pr  As  DataRow
        Dim filter As String
        filter = "工作号 = '" & e.DataRow("工作号") & "'  And 报关单项号 = '" & e.DataRow("报关单项号") & "' And 工厂编号= '" & e.DataRow("客户ID") & "'"
        pr =  DataTables("采购信息").sqlFind(Filter)
        If pr  IsNot  Nothing  Then
e.DataRow.save
            DataTables("采购信息").DataCols("工作号").RaiseDataColChanged(pr)
            DataTables("采购信息").DataCols("报关单项号").RaiseDataColChanged(pr)
           DataTables("采购信息").DataCols("工厂编号").RaiseDataColChanged(pr)
                        
        End  If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
keli0917
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:291 积分:2730 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2020/2/7 14:47:00 [只看该作者]

加了e.DataRow.save也不行呀。我已经用了SQLcompute了e.DataRow("fa piao不含税金额小计") = DataTables("收piao登记").sqlCompute("Sum(fa piao不含税金额)",Filter)

在收piao登记表里能看到新增的数据行的。父表采购信息的对应字段就是不会更新。

改成e.DataRow("fa piao不含税金额小计") = val(DataTables("收piao登记").sqlCompute("Sum(fa piao不含税金额)",Filter))也不行。

 

另外请回答第二个问题。

 


 


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/7 15:57:00 [只看该作者]

说明还有其它行数据没有保存,改为整表保存:e.datatable.save

问题2,请把这个表达式列列类型改为高精度

 回到顶部