以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]跨表统计结果不对  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=126462)

--  作者:cd_tdh
--  发布时间:2018/10/22 13:58:00
--  [求助]跨表统计结果不对

老师,麻烦看看我跨表统计出来结果不对呢,怎么去看filter统计了那些值呢?

If e.DataCol.Name = "增收类别" Then
    If e.DataRow.IsNull("增收类别") Then
        e.DataRow("成本发票") = Nothing
        e.DataRow("可抵扣进项税额") = Nothing
    ElseIf e.DataRow("增收类别") = "标准增收" Then
        e.DataRow("应缴税额")=e.DataRow("开票金额")/1.1*0.1
        e.DataRow("预缴税额")=e.DataRow("开票金额")/1.1*0.02
    Dim filter1 As String = "合同编码=\'" & e.DataRow("合同编码") & "\'and 计量期数=\'" & e.DataRow("计量期数") & "\'"
        e.DataRow("成本发票") = DataTables("进项票审核").sqlCompute("sum(税后金额)", filter1 & " And 审核状态=\'已审核\'  and 类别 in (\'普票\',\'专票\',\'人工工资\')")
        e.DataRow("可抵扣进项税额") = DataTables("进项票审核").sqlCompute("sum(税额)", filter1 & " And 审核状态=\'已审核\' and 类别=\'专票\'")
    End If
End If

 

用filter,用sqlCompute统计出来和用Compute统计出来为什么不一样呢?

[此贴子已经被作者于2018/10/22 13:59:41编辑过]

--  作者:有点甜
--  发布时间:2018/10/22 15:18:00
--  

1、sqlcompute统计的是保存了的数据,新增的、修改的数据不会统计;

 

2、compute统计的是加载到foxtable里面的全部的数据,在数据库但没有加载的不会统计;

 

3、你可以写sql语句查找数据 http://www.foxtable.com/webhelp/scr/1484.htm

 


--  作者:cd_tdh
--  发布时间:2018/10/22 15:39:00
--  

我试过,用了filter在用sqlCompute和用Compute结果不一样,我测试统计的数据都还有只有一条,用Compute结果是对的,用sqlCompute结果就不对,和filter有没关系呢?

Dim filter1 As String = "合同编码=\'" & e.DataRow("合同编码") & "\'and 计量期数=\'" & e.DataRow("计量期数") & "\'"

e.DataRow("成本发票") = DataTables("进项票审核").sqlCompute("sum(税后金额)", filter1 & " And 审核状态=\'已审核\'  and 类别 in (\'普票\',\'专票\',\'人工工资\')")


--  作者:有点甜
--  发布时间:2018/10/22 16:14:00
--  

如果你合同编码是数值列、计量期数是数值列,就改成

 

Dim filter1 As String = "合同编码=" & e.DataRow("合同编码") & " and 计量期数=" & e.DataRow("计量期数") & ""


--  作者:有点甜
--  发布时间:2018/10/22 16:14:00
--  
你可以写sql语句查找数据 http://www.foxtable.com/webhelp/scr/1484.htm