Foxtable(狐表)用户栏目专家坐堂 → [求助]统计计算问题


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

主题:[求助]统计计算问题

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


加好友 发短信
等级:幼狐 帖子:184 积分:1148 威望:0 精华:0 注册:2014/6/10 20:24:00
[求助]统计计算问题  发帖心情 Post By:2014/6/28 20:55:00 [只看该作者]


此主题相关图片如下:1.png
按此在新窗口浏览图片
此主题相关图片如下:2.png
按此在新窗口浏览图片


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


加好友 发短信
等级:幼狐 帖子:184 积分:1148 威望:0 精华:0 注册:2014/6/10 20:24:00
  发帖心情 Post By:2014/6/28 20:55:00 [只看该作者]

开发版用户新手求助
我右边表格总数量列 应该是要 对应日期 统计累加左边装配表的每种品种 配比列的值 
比如上海青 左边7012配比1 7013配比1 7014配比1 7015配比0  总数量应为3
但我还有其他日期  有2014-06-26 2014-06-28的  只是由产品分组 所以也会把其他日期的品种配比累加进去 所以计算会有误 请教下大神们怎么改?
实现代码如下: 
Tables("装配表").DataTable.DeleteFor(" [日期] = '" & e.Form.Controls("DateTimePicker1").Value & "'")
Tables("装配表").Filter=" [日期] = '" & e.Form.Controls("DateTimePicker1").Value & "'"
SystemReady = False

Dim drs As List(Of DataRow) = DataTables("蔬菜采收表").Select("日期 = #" & e.Sender.Text & "#")
For Each dr As DataRow In DataTables("当天配送会员").Select("日期 = #" & e.Sender.Text & "#")
    For Each cdr As DataRow In drs
        Dim ndr As DataRow = DataTables("装配表").addnew
        
        ndr("日期") = dr("日期")
        ndr("会员编号") = dr("会员编号")
        ndr("品种") = cdr("品种")
        ndr("装箱总斤数")=dr("装箱斤数")
        Dim fdr As DataRow = DataTables("蔬菜喜好表").Find("会员编号 = '" & dr("会员编号") & "' and 产品 = '" & cdr("品种") & "'")
        If fdr IsNot Nothing Then
            ndr("喜好") = fdr("喜好")
            If fdr("喜好") = "吃" OrElse fdr("喜好") = "爱吃" Then
                ndr("配比") = 1
            Else
                ndr("配比") = 0
            End If
        End If
    Next
Next
For Each dr As DataRow In DataTables("装配表").Select("日期 = #" & e.Sender.Text & "#")
    dr("小计") = DataTables("装配表").compute("sum(配比)", "日期 = #" & dr("日期") & "# and 会员编号 = '" & dr("会员编号") & "'")
    dr("装箱参考")=dr("配比")
Next

SystemReady = True

Dim t As Table = Forms("装配窗体").Controls("Table1").Table
Dim b As New GroupTableBuilder("统计表1", DataTables("装配表"))
b.Groups.AddDef("品种") '根据产品分组
b.Totals.AddDef("配比", AggregateEnum.Sum, "总数量") '对数量进型臣?
t.DataSource = b.BuildDataSource '生成统计表
t.DataTable.DataCols.Add("实际产量", Gettype(Integer))
For Each r As Row In t.Rows
    Dim fdr As DataRow = DataTables("蔬菜采收表").Find("日期 = #" & e.Sender.Text & "# And 品种 = '" & r("品种") & "'")
    If fdr IsNot Nothing Then
        r("实际产量") = fdr("实际产量")
    End If
Next
我尝试改成 b.Groups.AddDef("日期","品种")  但是不行 

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


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

 什么意思? 把你的项目上传上来看看。

[此贴子已经被作者于2014-6-29 9:23:25编辑过]

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


加好友 发短信
等级:幼狐 帖子:184 积分:1148 威望:0 精华:0 注册:2014/6/10 20:24:00
计算每种品种 总数量有点问题  发帖心情 Post By:2014/6/29 13:50:00 [只看该作者]

就是计算 每种品种 总数量的值 有点问题
我现在装配表里面除了记录当天的数据  还有保存以前日期的数据
因为 统计 每种品种的总数量列 只按用户分组 没有管日期~ 所以以前日期的也会累加进去 导致总数量值 有误
例如我选中2014-06-29 上海青总
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
数量值应该为3   但计算出来为6 是错的 把以前日期的也加进去了

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


加好友 发短信
等级:幼狐 帖子:184 积分:1148 威望:0 精华:0 注册:2014/6/10 20:24:00
代码我也打包上传了  发帖心情 Post By:2014/6/29 13:50:00 [只看该作者]

有点甜大哥 麻烦看下怎么改?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:装配 新项目.rar


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


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

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


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


加好友 发短信
等级:幼狐 帖子:184 积分:1148 威望:0 精华:0 注册:2014/6/10 20:24:00
可以了 谢谢~  发帖心情 Post By:2014/6/29 15:09:00 [只看该作者]

是加了 b.Filter = "日期 = #" & e.Sender.Text & "#" 这句代码吧
我之前是想 b.Groups.AddDef("品种","日期") '根据产品和日期 分组
再 b.Totals.AddDef("配比", AggregateEnum.Sum, "总数量")   对数量进行统计
这样好像就不行~运行只会出一个统计数字

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


加好友 发短信
等级:幼狐 帖子:184 积分:1148 威望:0 精华:0 注册:2014/6/10 20:24:00
[求助]配比列生产要控制  发帖心情 Post By:2014/7/11 22:30:00 [只看该作者]

有点甜大哥,请教个问题~
在左边表格中 7016客户在蔬菜喜好表中是没有他的记录的 那我们默认是他什么都吃~每种蔬菜品种装箱参考为1
配比是复制的装箱参考的值  然后小计是统计每个客户对应 配比的累加值。
现在要求是只需要给他配5斤就好(也就是对应的装箱总斤数那一列的值)超过5斤了后面的就装箱参考和配比值 就为0    例如:7016 上海青 1 苦瓜 1 丝瓜1 西红柿1 黄瓜1 累加起来为5了 ~那后面的木耳 茄子装箱参考 配比就都为0  这个用代码怎么写?

我想到的是需要 一个整形变量来计数?超过5 底下的值就都是0了?这个计数的写哪呢?不怎么会写
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

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


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


加好友 发短信
等级:幼狐 帖子:184 积分:1148 威望:0 精华:0 注册:2014/6/10 20:24:00
[求助]源码我也上传下~  发帖心情 Post By:2014/7/11 22:40:00 [只看该作者]

有点甜大哥有空麻烦看下~
日期控件里面代码是这样的 估计是要加个统计计数的变量来控制?:
图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:装配 新项目.rar


Tables("装配表").DataTable.DeleteFor(" [日期] = '" & e.Form.Controls("DateTimePicker1").Value & "'")
Tables("装配表").Filter=" [日期] = '" & e.Form.Controls("DateTimePicker1").Value & "'"
SystemReady = False

Dim drs As List(Of DataRow) = DataTables("蔬菜采收表").Select("日期 = #" & e.Sender.Text & "#")
For Each dr As DataRow In DataTables("当天配送会员").Select("日期 = #" & e.Sender.Text & "#")
    For Each cdr As DataRow In drs
        Dim ndr As DataRow = DataTables("装配表").addnew
        
        ndr("日期") = dr("日期")
        ndr("会员编号") = dr("会员编号")
        ndr("品种") = cdr("品种")
        ndr("装箱总斤数")=dr("装箱斤数")
        Dim fdr As DataRow = DataTables("蔬菜喜好表").Find("会员编号 = '" & dr("会员编号") & "' and 产品 = '" & cdr("品种") & "'")
        If fdr IsNot Nothing Then
            ndr("喜好") = fdr("喜好")
            If fdr("喜好") = "吃" Then
                ndr("配比") = 1
            ElseIf fdr("喜好") = "爱吃" Then
                ndr("配比") = 2
            Else
                ndr("配比") = 0
            End If
        Else
            ndr("喜好")="吃"
            ndr("配比") = 1
        End If
    Next
Next
For Each dr As DataRow In DataTables("装配表").Select("日期 = #" & e.Sender.Text & "#")
    dr("小计") = DataTables("装配表").compute("sum(配比)", "日期 = #" & dr("日期") & "# and 会员编号 = '" & dr("会员编号") & "'")
    dr("装箱参考")=dr("配比")
Next

SystemReady = True

Dim t As Table = Forms("装配窗体").Controls("Table1").Table
Dim b As New GroupTableBuilder("统计表1", DataTables("装配表"))
b.Groups.AddDef("品种") '根据产品分组
b.Totals.AddDef("配比", AggregateEnum.Sum, "总数量") '对数量进行统计
b.Filter = "日期 = #" & e.Sender.Text & "#"
t.DataSource = b.BuildDataSource '生成统计表
t.DataTable.DataCols.Add("实际产量", Gettype(Integer))
For Each r As Row In t.Rows
    Dim fdr As DataRow = DataTables("蔬菜采收表").Find("日期 = #" & e.Sender.Text & "# And 品种 = '" & r("品种") & "'")
    If fdr IsNot Nothing Then
        r("实际产量") = fdr("实际产量")
    End If
Next

然后就是打印按钮导出的表格 可以有颜色区分开每个客户吗 如图所示?  这个要求实现~

 回到顶部