Foxtable(狐表)用户栏目专家坐堂 → 统计数据代码出错问题


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

主题:统计数据代码出错问题

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


加好友 发短信
等级:超级版主 帖子:106092 积分:539565 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/30 11:04:00 [只看该作者]

dr("第二季度已返金额") = dt3.SqlCompute("sum(收缴金额)", "财务编号 = '" & dr("财务编号") & "' and 返利季度 = '第2季度'" )

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2017/6/30 11:15:00 [只看该作者]

谢谢有点蓝老师的帮忙。

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2017/6/30 14:10:00 [只看该作者]

For Each dr As DataRow In DataTables("合同表").Select("")
    Dim dt1 As DataTable=DataTables("批发表")
    Dim dt2 As DataTable=DataTables("入库表")
    Dim dt3 As DataTable=DataTables("收缴表")
    
    '第二季度应返数量
    Dim YFSL1 As Double = dt1.SqlCompute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (4,5,6)" )
    Dim YFSL2 As Double = dt1.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (4,5,6)" )
    Dim YFSL3 As Double = dt2.SqlCompute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (4,5,6)" )
    Dim YFSL4 As Double = dt2.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (4,5,6)" )
    dr("第二季度应返数量") = YFSL1 + YFSL2+ YFSL3+ YFSL4
    
    '第二季度应返金额
    Dim YFJE1 As Double = dt1.SqlCompute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") &"' And month(单据日期) In (4,5,6)" )
    Dim YFJE2 As Double = dt1.SqlCompute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (4,5,6)" )
    Dim YFJE3 As Double = dt2.SqlCompute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (4,5,6)" )
    Dim YFJE4 As Double = dt2.SqlCompute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (4,5,6)" )
    dr("第二季度应返金额") = YFJE1 + YFJE2+ YFJE3+ YFJE4
    
    '第二季度已返数量
    dr("第二季度已返数量") = dt3.SqlCompute("sum(收缴数量)", "财务编号 = '" & dr("财务编号") & "' and 返利季度='第2季度'" )
    
    '第二季度已返金额
    dr("第二季度已返金额") = dt3.SqlCompute("sum(收缴金额)", "财务编号 = '" & dr("财务编号") & "' and 返利季度='第2季度'" )
    
    '以下代码是计算第二季度计提数量
    dr("第二季度计提数量") = dr("第二季度应返数量") +dr("第一季度计提数量") -dr("第二季度已返数量")
    
    '以下代码是计算第二季度计提金额
    dr("第二季度计提金额") = dr("第二季度应返金额") +dr("第一季度计提金额") -dr("第二季度已返金额")
    
Next


各位老师,麻烦问一下,上面这段代码能不能简化。因为运行时,项目就死机了。

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2017/6/30 14:19:00 [只看该作者]

请有点蓝老师帮忙呀。


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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2017/6/30 14:35:00 [只看该作者]

请各位老师帮忙呀,急用呀。

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2017/6/30 15:02:00 [只看该作者]

请各位老师帮忙呀,急用呀。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 15:38:00 [只看该作者]

回复33楼。

 

1、不要在循环里写 sqlCompute 要改成 Compute,不然很耗时的;

 

2、代码要写在一个按钮里,同时,要加上

 

SystemReady = False

 

'本来代码

 

SystemReady = True

 

3、你的表要加入 单据月份 列,用来记录月份,这样compute的时候,直接根据月份列写条件。


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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2017/6/30 15:42:00 [只看该作者]

有点甜老师,这个是一个按钮的代码。并是外部数据表,可以用Compute吗。再有,第3条没看懂。能不能帮忙把代码给改一下,今天是月末,着急用。谢谢老师。

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


加好友 发短信
等级:超级版主 帖子:106092 积分:539565 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/30 16:24:00 [只看该作者]

建议先生成分组/交叉统计表,再从统计表取值

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 16:57:00 [只看该作者]

systemready = false
Dim dt1 As DataTable=DataTables("批发表")
Dim dt2 As DataTable=DataTables("入库表")
Dim dt3 As DataTable=DataTables("收缴表")
dt1.LoadFilter = "month(单据日期) in (4,5,6)"
dt2.LoadFilter = "month(单据日期) in (4,5,6)"
dt1.load
dt2.load
If dt1.datacols.contains("月份") = False Then dt1.DataCols.add("月份", Gettype(Integer))
If dt2.datacols.contains("月份") = False Then dt2.DataCols.add("月份", Gettype(Integer))
For Each dr As DataRow In dt1.Select("")
    Dim d As Date = dr("单据日期")
    If d = Nothing Then
        dr("月份") = Nothing
    Else
        dr("月份") = d.Month
    End If
Next
For Each dr As DataRow In dt1.Select("")
    Dim d As Date = dr("单据日期")
    If d = Nothing Then
        dr("月份") = nothing
    Else
        dr("月份") = d.Month
    end if
Next
For Each dr As DataRow In DataTables("合同表").Select("")
   
   
    '第二季度应返数量
    Dim YFSL1 As Double = dt1.Compute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and 月份 in (4,5,6)" )
    Dim YFSL2 As Double = dt1.Compute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and 月份 in (4,5,6)" )
    Dim YFSL3 As Double = dt2.Compute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and 月份 in (4,5,6)" )
    Dim YFSL4 As Double = dt2.Compute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and 月份 in (4,5,6)" )
    dr("第二季度应返数量") = YFSL1 + YFSL2+ YFSL3+ YFSL4
   
    '第二季度应返金额
    Dim YFJE1 As Double = dt1.Compute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") &"' And 月份 In (4,5,6)" )
    Dim YFJE2 As Double = dt1.Compute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and 月份 in (4,5,6)" )
    Dim YFJE3 As Double = dt2.Compute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") & "' and 月份 in (4,5,6)" )
    Dim YFJE4 As Double = dt2.Compute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and 月份 in (4,5,6)" )
    dr("第二季度应返金额") = YFJE1 + YFJE2+ YFJE3+ YFJE4
   
    '第二季度已返数量
    dr("第二季度已返数量") = dt3.Compute("sum(收缴数量)", "财务编号 = '" & dr("财务编号") & "' and 返利季度='第2季度'" )
   
    '第二季度已返金额
    dr("第二季度已返金额") = dt3.Compute("sum(收缴金额)", "财务编号 = '" & dr("财务编号") & "' and 返利季度='第2季度'" )
   
    '以下代码是计算第二季度计提数量
    dr("第二季度计提数量") = dr("第二季度应返数量") +dr("第一季度计提数量") -dr("第二季度已返数量")
   
    '以下代码是计算第二季度计提金额
    dr("第二季度计提金额") = dr("第二季度应返金额") +dr("第一季度计提金额") -dr("第二季度已返金额")
   
Next
systemready = true

 回到顶部
总数 40 上一页 1 2 3 4