以文本方式查看主题

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

--  作者:keli0917
--  发布时间:2020/2/7 9:50:00
--  父表统计子表

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

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

 

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

 

 

Select Case e.DataCol.Name
    Case  "发票不含税金额","发票进项税额" ,"发票征税率","发票退税率"
        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.发票退税额为子表的表达式列。IsNull(Sum(Child(采购收票).发票退税额),0),这样好象有问题,提示算术运算溢出。要怎么修改。

 


--  作者:有点蓝
--  发布时间:2020/2/7 10:32:00
--  
如果数据没有全部加载需要使用sqlCompute统计的,新增的数据必须先保存

Select Case e.DataCol.Name
    Case  "发票不含税金额","发票进项税额" ,"发票征税率","发票退税率"
        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
--  发布时间:2020/2/7 14:47:00
--  

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

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

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

 

另外请回答第二个问题。

 


 


--  作者:有点蓝
--  发布时间:2020/2/7 15:57:00
--  
说明还有其它行数据没有保存,改为整表保存:e.datatable.save

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