以文本方式查看主题

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

--  作者:cd_tdh
--  发布时间:2017/8/29 13:27:00
--  条件统计,

老师,我表A有数据后,当表C有一样的项目编码、工程名称、计量期数时,(在表A数据录入时,表C没有相同打项目编号、工程名称和计量期数,当表B有时,表B才统计表A数据)

1、把表A抵扣状态为”已抵扣“的发票类别为:“专票、普票”的发票金额统计到表C对应的成本发票金额;

2、把表A抵扣状态为”已抵扣“的发票类别为:"人工工资"的统计到表C对应的人工工资金额;

代码证明写呢?

表C的数据是通过表B自动引用过来的。

我做了一个示例,上传上来,麻烦老师看一下。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2017/8/29 13:33:40编辑过]

--  作者:有点甜
--  发布时间:2017/8/29 14:55:00
--  

照着例子抄

 

http://www.foxtable.com/webhelp/scr/0681.htm

 


--  作者:有点甜
--  发布时间:2017/8/29 15:02:00
--  
Select Case e.DataCol.name
    Case "项目编码","项目名称","计量期数"
        Dim filter As String = "项目编码=\'" & e.DataRow("项目编码") & "\' and 项目名称=\'" & e.DataRow("项目名称") & "\' And 计量期数=\'" & e.DataRow("计量期数") & "\'"
        e.DataRow("成本发票金额") = DataTables("表A").Compute("sum(发票金额)", filter & " And 抵扣状态=\'已抵扣\' and 发票类别 in (\'普票\',\'专票\')")
        e.DataRow("人工工资金额") = DataTables("表A").Compute("sum(发票金额)", filter & " and 抵扣状态=\'已抵扣\' and 发票类别=\'人工工资\'")
End Select

--  作者:cd_tdh
--  发布时间:2017/9/12 14:56:00
--  

老师,看看这是怎么回事,老师提示找不到列:计量期数,实际是有的,代码截图如下:

Select Case e.DataCol.name
    Case "申请金额","企业所得税率","管理费费率","个人所得税率","手续费","安全保证金","质量保证金","应急保证金","资料保证金","人工工资","成本差额","其他费用","应缴增值税","预交增值税","抵扣增值税","应补增值税","扣税明细_小计","现金补税","个人所得税","企业所得税","成本差额税率","成本差额税","累计扣款"
        Dim fdr As DataRow = DataTables("工程款申请").Find("_Identify = " & e.DataRow("临时列"))
        If fdr IsNot Nothing Then
            fdr("实际支付金额") = e.DataRow("实际支付金额")
        End If
End Select

Select Case e.DataCol.name
    Case "项目编码","项目名称","计量期数"
        Dim filter As String = "项目编码=\'" & e.DataRow("项目编码") & "\' and 项目名称=\'" & e.DataRow("项目名称") & "\' And 计量期数=\'" & e.DataRow("计量期数") & "\'"
        e.DataRow("发票金额") = DataTables("开票情况").Compute("sum(开票金额)", filter & " And 开票状态=\'已开票\'")
        e.DataRow("成本发票") = DataTables("进项票录入").Compute("sum(进项票_税价合计金额)", filter & " And 登记状态=\'已复审\' and 发票类别 in (\'普票\',\'专票\')")
        e.DataRow("人工工资") = DataTables("进项票录入").Compute("sum(进项票_税价合计金额)", filter & " And 登记状态=\'已复审\' and 发票类别=\'人工工资\'")
End Select

 ,


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/9/12 16:28:00
--  

提示没有对应的列,就是没有。

 

你表【开票情况】、【进项票录入】都有对应的列吗?如果没有,你应该修改你的统计条件。


--  作者:cd_tdh
--  发布时间:2017/9/12 16:39:00
--  
.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.8.19.1
错误所在事件:表,工程款管理,DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.Boolean 和 System.String 上执行“=”操作。

--  作者:有点甜
--  发布时间:2017/9/12 17:26:00
--  

试试

 

Select Case e.DataCol.name
    Case "项目编码","项目名称","计量期数"
        Dim filter1 As String = "项目编码=\'" & e.DataRow("项目编码") & "\' and 项目名称=\'" & e.DataRow("项目名称") & "\' And 计量期数=\'" & e.DataRow("计量期数") & "\'"

        Dim filter2 As String = "项目编码=\'" & e.DataRow("项目编码") & "\' and 项目名称=\'" & e.DataRow("项目名称") & "\'"
        e.DataRow("发票金额") = DataTables("开票情况").Compute("sum(开票金额)", filter2 & " And 开票状态=\'已开票\'")
        e.DataRow("成本发票") = DataTables("进项票录入").Compute("sum(进项票_税价合计金额)", filter1 & " And 登记状态=\'已复审\' and 发票类别 in (\'普票\',\'专票\')")
        e.DataRow("人工工资") = DataTables("进项票录入").Compute("sum(进项票_税价合计金额)", filter1 & " And 登记状态=\'已复审\' and 发票类别=\'人工工资\'")
End Select


--  作者:cd_tdh
--  发布时间:2017/9/13 9:46:00
--  
以下是引用有点甜在2017/9/12 17:26:00的发言:

试试

 

Select Case e.DataCol.name
    Case "项目编码","项目名称","计量期数"
        Dim filter1 As String = "项目编码=\'" & e.DataRow("项目编码") & "\' and 项目名称=\'" & e.DataRow("项目名称") & "\' And 计量期数=\'" & e.DataRow("计量期数") & "\'"

        Dim filter2 As String = "项目编码=\'" & e.DataRow("项目编码") & "\' and 项目名称=\'" & e.DataRow("项目名称") & "\'"
        e.DataRow("发票金额") = DataTables("开票情况").Compute("sum(开票金额)", filter2 & " And 开票状态=\'已开票\'")
        e.DataRow("成本发票") = DataTables("进项票录入").Compute("sum(进项票_税价合计金额)", filter1 & " And 登记状态=\'已复审\' and 发票类别 in (\'普票\',\'专票\')")
        e.DataRow("人工工资") = DataTables("进项票录入").Compute("sum(进项票_税价合计金额)", filter1 & " And 登记状态=\'已复审\' and 发票类别=\'人工工资\'")
End Select

还是不行


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170913094458.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2017/9/13 9:52:00
--  
e.DataRow("发票金额") = DataTables("开票情况").Compute("sum(开票金额)", filter2 & " And 开票状态=\'已开票\'")
--  作者:cd_tdh
--  发布时间:2017/9/13 10:06:00
--  

调试1出来了,2没出来,应该是2之前的代码有问题样、


图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看