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


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

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

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


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

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



For Each dr As DataRow In DataTables("合同表").Select("")
    Dim dt1 As DataTable=DataTables("批发表")
    Dim dt2 As DataTable=DataTables("入库表")
    Dim y As Integer = cdate(dr("录入时间")).year '指定年份
    Dim q As Integer = Math.Ceiling(cdate(dr("录入时间")).Month / 3) '指定季度
 
   '第一季度应返数量
    Dim YFSL1 As Double = dt1.SqlCompute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFSL2 As Double = dt1.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFSL3 As Double = dt2.SqlCompute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFSL4 As Double = dt2.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    dr("第一季度应返数量") = YFSL1 + YFSL2+ YFSL3+ YFSL4
    
    '第一季度应返金额
    Dim YFJE1 As Double = dt1.SqlCompute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") &"' And month(单据日期) In (1,2,3)" )
    Dim YFJE2 As Double = dt1.SqlCompute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFJE3 As Double = dt2.SqlCompute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFJE4 As Double = dt2.SqlCompute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    dr("第一季度应返金额") = YFJE1 + YFJE2+ YFJE3+ YFJE4
    
    '以下代码是计算第一季度计提数量
    If q = 1 Then
        Dim dt3 As New Date(y, 3 * (q - 1) + 1, 1) '获取该季度的第一天
        Dim dt4 As Date = dt3.AddMonths(1)
        Dim Filter As String
        Filter = "单据日期 >= #" & dt3 & "# And 单据日期 < #" & dt4 & "#"
        
        Dim JTSL1 As Double = dt1.Compute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and " & Filter)
        Dim JTSL2 As Double = dt1.Compute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and " & Filter)
        Dim JTSL3 As Double = dt2.Compute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and " & Filter)
        Dim JTSL4 As Double = dt2.Compute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and " & Filter)
        


         dr("第一季度计提数量") = JTSL1 + JTSL2+ JTSL3+ JTSL4
    End If
Next


红色代码我想实现:第一季度计提数量=合同表里财务编号是录入日期是第一季度的,在批发表和入库表对应返利编号和高开编号,并且单据日期是第一季度的数量和-收缴表对应财务编号,并且登记日期是第一季度的数量和

有点色老师帮忙改一下红色部分代码,弄了一下午,实在弄不出来了。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/14 16:17:00 [只看该作者]

单独写一个条件就行啊

 

Dim Filter2 As String = "登记日期 >= #" & dt3 & "# And 登记日期 < #" & dt4 & "#"

Dim sum As Double = DataTables("收缴表").compute("sum(收缴数量)", "财务编号 = '" & dr("财务编号") & "' and " & filter)

msgbox(sum)


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


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

我忘说了,现在上面红色的代码统计的数据也不是我要求的那样,给减了一部分,不知道是什么原因。而且,财务编号为201600004的,怎么弄也不统计。

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


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

有点色老师帮忙呀,弄了一大下午了。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/14 18:26:00 [只看该作者]

 你弹出查询条件,然后去找数据

 

 你先理清你的逻辑,再写代码。

 

msgbox(财务编号 = '" & dr("财务编号") & "' and " & filter)


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


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

有点色老师,实在没有办法,我在批发表和入库表里分别增加了高开录入时间和返利录入时间,用表属性DataColChanged事件依据财务编码分别提取两个录入时间,以下是我的代码:

 

批发表和入库表DataColChanged事件代码:

 

If e.DataCol.Name = "返利编号" Then 
    Dim dr As DataRow
    dr = DataTables("合同表").Find("财务编号 = '" & e.DataRow("返利编号") & "'" )
        If dr IsNot Nothing 
        e.DataRow("返利录入时间")= dr("录入时间")
    End If
End If

If e.DataCol.Name = "高开编号" Then 
     Dim dr As DataRow
    dr = DataTables("合同表").Find("财务编号 = '" & e.DataRow("高开编号") & "'" )
        If dr IsNot Nothing 
        e.DataRow("高开录入时间")= dr("录入时间")
       
    End If
End If

 

 

第一季度按钮代码:

 

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 (1,2,3)" )
    Dim YFSL2 As Double = dt1.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFSL3 As Double = dt2.SqlCompute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFSL4 As Double = dt2.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    dr("第一季度应返数量") = YFSL1 + YFSL2+ YFSL3+ YFSL4
   
    '第一季度应返金额
    Dim YFJE1 As Double = dt1.SqlCompute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") &"' And month(单据日期) In (1,2,3)" )
    Dim YFJE2 As Double = dt1.SqlCompute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFJE3 As Double = dt2.SqlCompute("sum(返利应返金额)", "返利编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    Dim YFJE4 As Double = dt2.SqlCompute("sum(高开应返金额)", "高开编号 = '" & dr("财务编号") & "' and month(单据日期) in (1,2,3)" )
    dr("第一季度应返金额") = YFJE1 + YFJE2+ YFJE3+ YFJE4
   
    '以下代码是计算第一季度计提数量
    Dim JTSL1 As Double = dt1.SqlCompute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and month(高开录入时间) in (1,2,3)" )
    Dim JTSL2 As Double = dt1.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(返利录入时间) in (1,2,3)" )
    Dim JTSL3 As Double = dt2.SqlCompute("sum(数量)", "高开编号 = '" & dr("财务编号") & "' and month(高开录入时间) in (1,2,3)" )
    Dim JTSL4 As Double = dt2.SqlCompute("sum(数量)", "返利编号 = '" & dr("财务编号") & "' and month(返利录入时间) in (1,2,3)" )
    Dim JTSL5 As Double = dt3.SqlCompute("sum(收缴数量)", "财务编号 = '" & dr("财务编号") & "' and month(登记时间) in (1,2,3)" )
   
   
    dr("第一季度计提数量") = JTSL1 + JTSL2+ JTSL3+ JTSL4-JTSL5
   
Next

 

在批发表和入库表中增加录入时间列是为了红色这段代码。我不想用在批发表和入库表中增加录入时间列的方法来计算,能不能不在批发表和入库表中增加录入时间列的方式,代码怎么写,请有点色老师帮忙。


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


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

那就通过编号把几个表的数据合成一个查询表,再进行统计

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/15 9:35:00 [只看该作者]

 批发表和入库表 如果没有日期列,如何知道是哪年哪个季度?那你要怎么统计数据?你理清你的逻辑了吗?

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


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

有点色老师,批发表和入库表的录入时间是对应合同表的财务编号的时间,实际上,红色代码部分的录入时间是合同表的录入时间。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/15 9:54:00 [只看该作者]

以下是引用feixianzhi在2017/2/15 9:40:00的发言:
有点色老师,批发表和入库表的录入时间是对应合同表的财务编号的时间,实际上,红色代码部分的录入时间是合同表的录入时间。

 

那查询的时候,直接根据 财务编号 查询,不需要写时间条件的啊。


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